基于《机器学习》学习整理- chapter 4
@(机器学习)[决策树]
决策树
一般地,一个决策树包含一个根节点,若干个内部节点和若干个叶节点,叶结点对应决策结果,其他每个节点对应于一个属性测试,每个结点包含的样本集合根据属性测试的结果被划分到子节点中;根节点包含样本全集,从根节点到每个叶节点的路径对应了一个判定测试序列。
决策树学习的目的是为了产生一颗泛化能力强,处理未见实例能力强的决策树。
信息增益
信息熵
信息熵
信息熵是度量样本集合纯度最常用的一种指标,假定当前样本集合D中第k类样本所占比例为 pk(1,2,..|y|) ,则D的信息熵定义为
Ent(D)=−∑k=1|y|pklog2pk
其中Ent(D)的值越小,则D的纯度越高。
信息增益
信息增益
假定离散属性a有V个可能的取值 a1,a2,...,aV ,若使用a来对样本集D进行划分,则会产生V个分支节点,其中第v个分支节点包含了D中所有在属性a上取值为 av 的样本,记为 Dv ,根据信息熵的公式,在考虑到不同的分支节点所包含的样本数不同,给分支节点赋予权重 |Dv|D ,即样本数越多的分支节点的影响越大,于是可计算出用属性a对样本集D进行划分所获得的”信息增益”。
Gain(D,a)=Ent(D)−∑v=1VDvDEnt(Dv)
一般而言,信息增益越大,则意味着使用属性a来进行划分所得的”纯度提升”越大。因此,我们可以用信息增益来进行决策树的划分属性选择。
实例
实例分析
以下表的数据为例:其中有17个训练正例,学习目标是预测是不是好瓜的决策树。分类目标|Y|=2,在决策树学习开始时,根节点包含D中所有的样例,其中正例 p1=817 ,反例 p2=917 。
![]()
根据信息熵的计算公式Ent(D)=−∑k=12pklog2pk=−(817log2817+917log2917)=0.998
当前属性集合{色泽,根蒂,敲声,纹理,脐部,触感},分别计算每个属性的信息增益,如以色泽为例,它的可能取值为{青绿,乌黑,浅白},则根据色泽属性对D进行划分,则可得到3个子集,分别为 D1 (色泽=青绿), D2 (色泽=乌黑), D3 (色泽=浅白),其中 D1 (色泽=青绿)共有6个样例,其中正例为 36 ,反例为 36 ; D2 (色泽=乌黑)共有6个样例,其中正例为 46 ,反例为 26 ; D3 (色泽=青绿)共有5个样例,其中正例为 15 ,反例为 45 .则所获得打3个分支节点的信息熵为:
Ent(D1)=−(36log236+36log236)=1.000
Ent(D2)=−(46log246+26log226)=0.918
Ent(D3)=−(15log215+45log245)=0.722
信息增益Gain(D,色泽)应该为:
Gain(D,色泽)=Ent(D)−∑v=13|Dv||D|Ent(Dv)=0.998−(617×1.000+617×0.918+517×0.722)=0.109
类似的我们可以得到其他属性的信息增益,如下:
Gain(D,根蒂) = 0.143;Gain(D,敲声) = 0.141;
Gain(D,纹理) = 0.381;Gain(D,脐部) = 0.289;
Gain(D,触感) = 0.006
显然,属性纹理的信息增益最大,于是它被作为划分属性,如下图:
![]()
然后决策树学习算法将对每个分支节点做进一步划分,以第一个分支节点清晰为例,该节点共有9个样例,此时可选属性为{色泽,根蒂,敲声,脐部,触感},基于 D1 计算各属性的信息增益:
Gain( D1 ,色泽) = 0.043;Gain( D1 ,根蒂) = 0.458;
Gain( D1 ,敲声) = 0.331;Gain( D1 ,脐部) = 0.458;
Gain( D1 ,触感) = 0.458;
其中有3个属性均取得了最大的信息增益,可任选其中之一作为划分熟悉,类似的,对每个分支节点进行上述操作,最终得到以下的决策树。
![]()
实际上,信息增益准则对可取值数目较多的属性有所偏好,为减少这种偏好可能带来的不利影响,著名的C4.5决策树算法不直接使用信息增益,而是使用增益率来选择最优划分属性,增益率定义为:
Gain_ratio(D,a)=Gain(D,a)IV(a),其中 IV(a)=−∑Vv=1DvDlog2DvD 称为属性a的固有值。属性a的可能取值数目越多(即V越大),则(IV(a))的取值通常会越大。如对上数据集,有IV(触感) = 0.874(V=2),IV(色泽) = 1.580(V=3),IV(编号) = 4.088(V=17)。
需要注意的是,增益率准则对可取值数目较少的属性有所偏好,因此该算法并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式: 先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。
基尼系数
基尼系数
CART决策树,使用基尼系数来选择划分属性,数据集D的纯度可以用基尼值来度量:
Gini(D)=∑k=1|y|∑k′≠kpkp′k=1−∑k=1|y|p2k
直观来说,基尼值反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率,因此基尼值越小,则数据集D的纯度越高。
属性a的基尼指数定义为:
Gini_index(D,a)=∑v=1V|Dv|DGini(Dv)
因此在进行属性划分时,还可以选择使得划分结果后基尼指数最小的属性最为最优划分属性。
剪枝处理
剪枝处理是决策树学习算法对付过拟合的主要手段,通过去掉一些分支来降低过拟合的风险。
决策树剪枝策略
预剪枝
在决策树生成过程中,对每个节点在划分前先进行预估,若当前节点的划分不能带来决策树泛化性能的提升,则停止划分并将当前节点标记为叶节点。
后剪枝
先从训练集中生成一颗完整的决策树,然后自底向上地对非叶节点进行考察,若将该节点对应的子树替换成叶结点能带来决策树泛化性能的提升,则将该子树替换成叶节点。
连续与缺失值
连续值处理
由于连续属性的可取数值无限,不能直接根据连续属性进行划分,此时连续属性离散化技术十分有用。最简单的策略就是采用二分法对属性进行处理。
二分法
二分法
给定样本集D和连续属性a,假定a在D上出现了n个不同的取值,将这些值从小到大进行排序,记为 a1,a2,...,an .基于划分点t可将D分为子集 D−t 和 D+t ,其中 D−t 包含那些在属性a上取值不大于t的样本,而 D+t 则包含那些在属性a上取值大于t的样本。显然,对相邻属性 ai 与 ai+1 来说,t在区间[ ai,ai+1 )中取任意值所产生的划分结果相同。因此,对连续属性a,我们可考察包含n-1个元素的候选划分点集合
Ta={ai+ai+12|1≤i≤n−1}
即把区间[ ai,ai+1 )
的中位点 ai+ai+12 作为候选划分点。
则样本D基于划分点t二分后的信息增益为:
Gain(D,a)=maxt∈TaGain(D,a,t)=maxt∈TaEnt(D)−∑λ∈{−,+}|Dλt||D|Ent(Dλt)
于是,我们可以选择使Gain(D,a,t)最大化的划分点。
需要注意的是,与离散属性不同个,若当前节点划分属性为连续属性,该属性还可作为其后代节点的划分属性。
缺失值处理
不完整样本的处理,需要解决两个问题:
- 如何在属性值缺失的情况下进行划分属性选择
- 给定划分属性,若样本在该属性上的值缺失,该如何对样本进行划分
问题1
给定训练集D和属性a,D’表示D中在属性a上没有缺失值得样本子集,显然我们仅可根据D’来判断属性a的优劣
问题2
若样本x在划分属性a上的取值已知,则将x划入与其取值对应的子节点,且样本权值在子节点中保持为 wx ,若样本x在划分属性a上的取值未知,则将x同时划入所有子节点,就是让同一个样本以不同的概率划入到不同的子结点中。
多变量决策树
若我们把每个属性看作坐标空间中的一个坐标轴,则d个属性描述的样本就对应了d维空间中的一个数据点,对样本分类则意味着在这个坐标空间中寻找不同类样本之间的分类边界。决策树所形成的分类边界有一个明显的特点,轴平行,即它的分类边界由若干个与坐标轴平行的分段组成。
本文深入探讨决策树学习的基础概念和技术细节,包括信息增益、基尼系数等划分标准,以及预剪枝和后剪枝等剪枝策略。还讨论了连续值与缺失值的处理方法。

601

被折叠的 条评论
为什么被折叠?



