1 导论–什么是决策树
本文整体阅读时长约10分钟。如果只想对决策树有个概念性的了解,建议只阅读各级标题即可。
决策树算法是一种采用树形结构解决分类问题的算法。其树形结构如下图所示,主要包含根节点,叶结点,及两者之间的中间结点,可以看出,根节点划分开始直至全部为叶结点结束。
2 决策树学习流程
2.1 特征(属性)选择
选择哪些特征作为分类的标准是决策树算法的关键,因为特征选择的好坏直接决定了分类的效果是否理理想。因此,在存在的众多特征(属性)中,如何找到与分类最相关、次相关的特征是核心。一般地,决策树算法会根据:信息增益,作为准则来进行特征的确定。即对根节点计算所有特征的信息增益,选择信息增益最大的特征作为最开始的节点特征。
2.2 决策树生成
在进行特征确定之后,就可以根据最相关属性进行分类:即从该节点出发,根据该特征的不同取值建立子节点;对每个子节点使用相同的方式生成新的子节点,直到信息增益很小或者没有特征可以选择为止。这样,决策树就生成完毕了。
2.3 决策树剪枝(防止过拟合)
决策树在生成过程中,为了尽量分类正确,节点划分过程有时会不断重复,造成分支过多,有可能会将训练样本分类太好,而泛化能力减弱,即出现过拟合。因此,有必要在决策树生成后进行剪枝处理。
3 案例实现----3种经典决策树算法
3.1 ID3算法详解
3.1.1 分类依据(增益率)
决策树是根据信息增益来进行特征选择的,信息增益定义为
G
a
i
n
(
D
,
a
)
=
E
n
t
(
D
)
−
Σ
v
=
1
V
∣
D
v
∣
∣
D
∣
E
n
t
(
D
v
)
Gain(D, a)=Ent(D) - \Sigma_{v=1}^{V} \frac{|D^v|}{|D|} Ent(D^v)
Gain(D,a)=Ent(D)−Σv=1V∣D∣∣Dv∣Ent(Dv)
其中D为总的样本,a为属性,v为在属性a中的v类样本,信息增益越大,表明该属性对分类的相关性越大。Ent()表示信息熵(entropy),公式如下:
E
n
t
(
D
)
=
−
Σ
k
=
1
D
p
k
l
o
g
2
p
k
.
Ent(D) = - \Sigma_{k=1}^{D} p_k log_2 {p_k}.
Ent(D)=−Σk=1Dpklog2pk.
k表示在样本D中的第k类样本,
p
k
p_k
pk表示第k类样本所占样本总体的概率。类比于现实中的熵,可以理解为,信息熵越小,表明纯度越高。
3.1.2 分类流程
按照第2节中决策树学习的流程,有了上述的分类依据,我们便可对根节点进行分类,其实套用公式即可。
- 先求取每个属性a下所对应分类的信息熵 E n t ( D v ) Ent(D^v) Ent(Dv)(此时计算的是在属性a中的所占比例),乘上此时a属性分类下各样本所占总体样本的比例并加和,随后得到 G a i n ( D , a ) Gain(D,a) Gain(D,a)。
- 然后就进一步计算 G a i n ( D , b ) Gain(D,b) Gain(D,b), G a i n ( D , c ) Gain(D,c) Gain(D,c)等a,b,c各属性的增益,相互比较,得到增益率最大的那个属性即作为本次的划分属性。
- 然后在可继续分类的那个子节点下重复上述1和2的过程(此时可以不用计算上面刚确定的那个属性的增益率),一直到不可再分为止,即全部为叶结点为止。
- 此时决策树大体就生成好了,结合验证集,通过剪枝或后剪枝法对一些节点进行剪枝操作。然而,预剪枝预防过拟合,却带来了欠拟合风险;后剪枝则在决策树完全生成后进行,并且自底向上逐一排查,训练开销大。
3.2 C4.5算法
在ID3算法上的改进,由于ID3算法会偏向于样本数目多的属性,因此ID3引进了一个因子来抵消它,但会引来偏好数目少的样本。因此,在应用中,先从候选属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。其具体公式见最后附图。
3.3 CART算法
和之前选择增益率最大的不同,CART算法是通过基尼指数的最小值来选择属性,基尼指数越小,其纯度越高。以上所有的讲解小结在最后附图中。
参考文档:
周志华,《机器学习》,清华大学出版社。