《机器学习》学习笔记之决策树

来源:互联网 发布:linux内核优化 编辑:程序博客网 时间:2024/05/29 17:54

近日在学习周志华教授的《机器学习》一书,决定做这么一个学习笔记,记录自己入门的过程。

        文章仅是对部分内容的总结,个人浅薄之见,如有错误,欢迎指正。

决策树,顾名思义,以树的结构来进行预测。它的基本概念在章节开头有详细的介绍。


构建树的递归算法中,有三个情形会导致递归返回。其中第二个:当前属性(特征)集为空,或是所有样本在所有属性上取值相同,无法划分。其意思是:已经没有特征拿来作进一步划分生成子节点,或者此结点中的样本标记不一致,但是他们在剩余待划分的所有特征的取值都一样,此时也无法进一步划分。比如我们要判定两个西瓜是不是好瓜,还剩两个特征用来当做结点划分,一个是颜色,一个是敲声。这两个西瓜类别不同,一个好瓜一个坏瓜,但他们颜色都是青绿色,敲声都是浑浊,所以他们在所有属性上取值相同,也就没法区别哪个好哪个坏了。

关于信息熵,其本质是反映样本集合不一致的程度。样本越不同,信息熵越大。比如10个西瓜,其中9个好瓜1个坏瓜,它的信息熵要小于10个西瓜中5好5坏。直观上容易理解。前者类别非常一致了,基本都是好瓜,而后者好坏数量都差不多,他们也就更加不同。

在一个结点划分后,计算它子节点的信息熵的和时,为什么要给样本数多的节点赋予更高权重呢?极端的例子:把1万个未知的西瓜都判定为好瓜所带来的信息量,一定大于把两个未知西瓜判定为好瓜的信息量吧。

如果多个特征带来的信息增益相同且最大,那么任选这几个最大之一即可。

增益率:特征a的信息增益除以特征a的固有值。特征a的取值数目越多,固有值越大。信息增益准则偏好取值数目较多的特征,所以利用增益率可以减缓这个偏好。然而增益率准则又会偏好取值数目较少的特征,所以C4.5算法对两个准则做了折衷:先选信息增益高于平均水平的特征,再从这些特征里选增益率最高的。

基尼系数与信息熵特点相同:样本集越一致,基尼系数越小。

剪枝中:如果叶结点中正负例个数相同,则此叶结点中全部样本判为正例

预剪枝与后剪枝对比  

预剪枝   优点:降低过拟合风险 节约计算时间

缺点:增加欠拟合风险

后剪枝  优点:降低欠拟合风险  泛化能力更强

                       缺点:时间开销过大


离散特征被用于一个结点的划分后,它的子节点不可能再用此特征了,因为每个子节点对于此特征的取值均相同。而连续特征则可反复用多次,比如一个结点的特征为密度是否<0.5 ,对于类别为是的子节点,还可以用密度是否<0.3 作为特征。

如果一个样本集中某些样本的某些属性值缺失,应该如何来学习一个决策树呢?

只需解决两个问题:1.如何在属性值缺失的情况下进行划分属性选择? 2.给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?

第一个问题:与之前相同,也是计算每个特征的信息增益,再从中选择信息增益最大的特征。只不过计算信息增益的公式有所不同,对于一个指定的特征,在之前计算信息增益的公式中,把所有样本换成没有缺失这个特征的样本即可,最后将计算出的信息增益(无缺失样本的信息增益)乘以无缺失样本占所有样本的比例即得到对于所有样本,此特征的信息增益。

第二个问题:对于已确定用来划分的特征,如果一个样本在此特征上的取值未知,则将其划入所有子结点,再将其样本权值乘以一个比例(书中有介绍)即可。至于什么是样本权值:每个样本的初始权值为1,假如一个子节点中3个样本的权值都为0.5,我们求这个节点中样本个数占所有子结点中样本个数的比例时,就不是用3除以总数,而是用1.5除以总数了。


多变量决策树:将每个结点按照多个特征的线性组合进行划分而非之前的单一特征。 书中对于此种树并无更多详细介绍。

0 0
原创粉丝点击