《机器学习》- 决策树

来源:互联网 发布:淘宝链接怎么发给别人 编辑:程序博客网 时间:2024/05/29 14:32

重新学了一遍周志华老师《机器学习》中的决策树,在此做个学习整理与总结吧。
决策树(decision tree)是一类常见的机器学习方法,用于分类问题。一般来说,一颗决策树包含一个根节点,若干个内部节点和若干个叶子节点,叶子节点对应于决策结果,根节点和内部节点则对应于一个属性测试,从根节点到每个叶节点的路径对应了一个判定测试序列。决策树学习的目的是为了产生一颗泛化能力强的决策树。

这里写图片描述

如上图,则是一个典型的二分类决策树,那么自然而然就会想到,根节点和内部节点该怎么选择呢?决策树按照节点选择规则不同,共分三种:ID3决策树、C4.5决策树、CART决策树,下面将以如下的西瓜数据集为例,详细介绍这三种决策树。

这里写图片描述

在介绍各种决策树之前,先介绍一个概念:“信息熵”,信息熵是度量样本集合纯度的一种指标,假设当前样本集合D中第k类样本所占的比例为pk(k=1,2,...,m),则D的信息熵定义为
Ent(D)=mk=1pklog2pk

Ent(D)的值越小,则说明D的纯度越高

ID3决策树

从西瓜数据集表中可以看出,该数据集包含17个样本,标记为是否为好瓜,其中,正例为标记为好瓜的数据,占p1=817,反例为标记为坏瓜的数据,占p2=917,则根节点的信息熵为
Ent(D)=2k=1pklog2pk=(817log2817+917log2917)=0.998
ID3决策树则是以“信息增益”为判定标准,来对属性进行划分的,属性a对样本集D进行划分所获得的“信息增益”定义为:
Gain(D,a)=Ent(D)Vv=1|Dv||D|Ent(Dv)
一般而言,信息增益越大,则意味着使用属性a来进行划分所获得的“纯度提升”越大。
对于西瓜数据集,我们要计算当前属性集合{色泽,根蒂,敲声,文理,脐部,触感}中每个属性的信息增益,以属性“色泽”为例,它有3个可能的取值:{青绿,乌黑,浅白}。若使用该属性对D进行划分,则可得到3个子集,分别记为:D1(=绿),D2(=),D1(=)
子集D1包含编号为{1,4,6,10,13,17}的6个样例,其中正例占p1=36,反例占p2=36
子集D2包含编号为{2,3,7,8,9,15}的6个样例,其中正例占p1=46,反例占p2=26
子集D3包含编号为{5,11,12,14,16}的5个样例,其中正例占p1=15,反例占p2=45
则,根据信息熵公式,可计算出用“色泽”划分之后所获得的3个分支节点的信息熵为:
Ent(D1)=(36log236+36log236)=1.000;
Ent(D2)=(46log246+26log226)=0.918;
Ent(D3)=(15log215+45log245)=0.722;
于是,可算出属性“色泽”的信息增益为
Gain(D,)=Ent(D)3v=1|Dv||D|Ent(Dv)=0.998(6171.000+6170.918+5170.722)=0.109
类似的,可以计算出其他属性的信息增益,然后再根据信息增益最大的属性作为根节点,对数据进行划分,然后,决策树将对每个分支结点做进一步划分。

C4.5决策树

实际上,信息增益准则对可取值数目较多的属性有所偏好,为了减少这种偏好带来的不利影响,C4.5决策树算法不直接使用信息增益,而是使用“增益率”来选择最优划分属性,增益率定义为:
Gainratio(D,a)=Gain(D,a)IV(a)
其中,IV(a)=Vv=1|Dv||D|log2|Dv||D|称为属性a的“固有值”,属性a的可能取值数目越多,则IV(a)越大。
以属性“色泽”为例,可算出属性“色泽”的信息增益率为
Gainratio(D,)=Gain(D,)IV()=0.109(617log2617+617log2617+517log2517)=0.1091.580=0.0690
类似的,可以计算出其他属性的信息增益率,需要注意,增益率准则对可取值数目较少的属性有所偏好,因此,C4.5算法并不是直接选择增益率最大的候选划分属性,而是先从候选集中找出信息增益高于平均水平的属性,然后再从中选择增益率最高的。

CART决策树

CART决策树使用“基尼指数”来选择划分属性,数据集D的纯度可用基尼值来度量:
Gini(D)=mk=1k1kpkpk1=1mk=1pk2
直观来说,Gini(D)反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率,因此,Gini(D)越小,则数据集D的纯度越高。
属性a的基尼指数定义为:
Giniindex(D,a)=Vv=1|Dv||D|Gini(Dv)
以属性“色泽”为例,可算出属性“色泽”各个取值的基尼值为
Gini(D1)=1mk=1pk2=1362362=0.5
Gini(D2)=1mk=1pk2=1462262=0.444
Gini(D3)=1mk=1pk2=1152452=0.6
Giniindex(D,)=3v=1|Dv||D|Gini(Dv)=6170.5+6170.444+5170.6=0.5096
类似的,可以计算出其他属性的基尼指数,然后选择那个划分后基尼指数最小的属性作为最优划分属性。

原创粉丝点击