决策树是一种很常见的分类学习算法,大致基本算法流程如下(截自周志华老师《机器学习》):
依据结点(即数据属性)划分数据集,一般而言,随着划分过程的不断进行,我们希望决策树的分支节点所包含的样本尽可能属于同一个类别,即结点的“纯度”决策树的分类效果才有效果,否则如果在该分支节点下每个分支样本类别包含样本混杂,说明在该结点没有较好的划分数据的作用,因此如何选择最优划分属性成为决策树中最重要的步骤之一,以下有3种方式,但思想共通。
ID3决策树学习算法
ID3决策树学习算法就是以信息增益准则来选择划分属性。
信息熵
“信息熵”是度量样本集合纯度最常用的一种指标,也可以理解为样本类别不确定性的度量,下面为熵的定义:
E
n
t
(
D
)
=
−
∑
k
=
1
∣
y
∣
p
k
l
o
g
2
p
k
Ent(D)= -\displaystyle\sum_{k=1}^{|y|} p_klog_2{p_k}
Ent(D)=−k=1∑∣y∣pklog2pk
其中
p
k
p_k
pk表示样本集合
D
D
D中第
k
k
k类样本所占的比例
(
k
=
1
,
2
,
.
.
.
,
∣
y
∣
)
(k=1,2,...,|y|)
(k=1,2,...,∣y∣),规定:若
p
=
0
p=0
p=0,则
p
l
o
g
2
p
=
0
plog_2{p}=0
plog2p=0。
当样本集合
D
D
D中只有一类样本时,该样本集合纯度最高,
E
n
t
(
D
)
Ent(D)
Ent(D)的值为0;当样本集合
D
D
D中同时含有多个样本时,样本集合混乱,
E
n
t
(
D
)
Ent(D)
Ent(D)就会变大。所以一般来说
E
n
t
(
D
)
Ent(D)
Ent(D)越小,说明该样本集合纯度越高;反之亦然。
信息增益
现在对样本集合
D
D
D进行划分,假定第一次划分根据的属性为样本属性
a
a
a,样本属性
a
a
a有
V
V
V个可能的取值 {
a
1
,
a
2
,
.
.
.
,
a
V
a^1,a^2,...,a^V
a1,a2,...,aV},就会产生
V
V
V个分支,其中第
m
(
0
<
m
<
V
)
m(0<m<V)
m(0<m<V)个分支包含样本中所有在属性
a
a
a上取值为
a
m
a^m
am的样本,这些样本重新组成集合
D
m
D^m
Dm。根据熵公式计算出
D
m
D^m
Dm的信息熵,考虑到
D
m
D^m
Dm所包含的样本数与
D
D
D不同,为
D
m
D^m
Dm的信息熵赋予权重
∣
D
m
∣
∣
D
∣
\frac{|D^m|}{|D|}
∣D∣∣Dm∣(表示
D
m
D^m
Dm所含样本数与
D
D
D所含样本数之比),此时
D
m
D^m
Dm调整后的信息熵为
∣
D
m
∣
∣
D
∣
E
n
t
(
D
m
)
\frac{|D^m|}{|D|}Ent(D^m)
∣D∣∣Dm∣Ent(Dm),属性
a
a
a取值为
a
m
a^m
am的样本数越多,其影响越大。由于属性
a
a
a有
V
V
V个取值,所以由
a
a
a属性划分下的信息熵为:
E
n
t
(
D
a
)
=
−
∑
m
=
1
V
∑
k
=
1
∣
y
∣
∣
D
m
∣
∣
D
∣
p
k
l
o
g
2
p
k
=
∑
m
=
1
V
∣
D
m
∣
∣
D
∣
E
n
t
(
D
m
)
Ent(D_a)= -\displaystyle\sum_{m=1}^{V}\displaystyle\sum_{k=1}^{|y|}\frac{|D^m|}{|D|} p_klog_2{p_k}=\displaystyle\sum_{m=1}^{V}\frac{|D^m|}{|D|}Ent(D^m)
Ent(Da)=−m=1∑Vk=1∑∣y∣∣D∣∣Dm∣pklog2pk=m=1∑V∣D∣∣Dm∣Ent(Dm)
“信息增益”可以理解为在进行一次划分后原样本集合纯度所提高量的衡量指标,在进行第一次划分后的“信息增益”为:
G
a
i
n
(
D
,
a
)
=
E
n
t
(
D
)
−
E
n
t
(
D
a
)
=
E
n
t
(
D
)
−
∑
m
=
1
V
∣
D
m
∣
∣
D
∣
E
n
t
(
D
m
)
Gain(D, a)=Ent(D)-Ent(D_a)=Ent(D)-\displaystyle\sum_{m=1}^{V}\frac{|D^m|}{|D|}Ent(D^m)
Gain(D,a)=Ent(D)−Ent(Da)=Ent(D)−m=1∑V∣D∣∣Dm∣Ent(Dm)
一般来说,信息增益越大,样本划分后提升的纯度越大,因此我们可以使用信息增益来选择划分属性,即选择属性
a
a
a使
G
a
i
n
(
D
a
)
Gain(D_a)
Gain(Da)最大。
C4.5决策树学习算法
由于ID3信息增益算法不能解决由属性取值多少带来的影响,如有一样本集合,每个样本有其独有的一个编号,现在划分属性选择样本编号,就会导致划分后样本的熵值为0,此时能得到最大限度的信息增益。但显然不能讲样本序号最为划分属性,由此训练出来的模型不具备泛化能力。
考虑到这一问题,产生了C4.5决策树算法,可以说是ID3算法的一个拓展,C4.5不直接使用信息增益,而是使用“增益率”来选择最优划分属性,增益率定义为:
G
a
i
n
_
r
a
t
i
o
=
G
a
i
n
(
D
,
a
)
I
V
(
a
)
Gain\displaystyle \_ratio=\displaystyle \frac{Gain(D,a)}{IV(a)}
Gain_ratio=IV(a)Gain(D,a)
其中
I
V
(
a
)
=
−
∑
m
=
1
V
∣
D
m
∣
∣
D
∣
l
o
g
2
∣
D
m
∣
∣
D
∣
IV(a)=-\displaystyle \sum_{m=1}^{V}\frac{|D^m|}{|D|}log_2\frac{|D^m|}{|D|}
IV(a)=−m=1∑V∣D∣∣Dm∣log2∣D∣∣Dm∣
当这样定义之后,再次回到属性取值数量问题,如果还是以样本序号作为划分属性,此时
I
V
IV
IV值将会迅速变大,从而拉低
G
a
i
n
_
r
a
t
i
o
Gain\displaystyle \_ratio
Gain_ratio,使属性取值过多的属性不能作为划分属性。
一般来说,信息增益率越大,对应属性越可能作为划分属性,解决问题!
CART决策树学习算法
CART决策树使用“基尼指数”来选择划分属性,样本集合的纯度用基尼值来度量:
G
i
n
i
(
D
)
=
∑
k
=
1
∣
y
∣
∑
k
′
≠
k
p
k
p
k
′
=
∑
k
=
1
∣
y
∣
p
k
(
1
−
p
k
)
=
1
−
∑
k
=
1
∣
y
∣
p
k
2
Gini(D)=\displaystyle \sum_{k=1}^{|y|}\displaystyle \sum_{k'\neq k}p_kp_{k'}=\displaystyle \sum_{k=1}^{|y|}p_k(1-p_k)=1-\displaystyle \sum_{k=1}^{|y|}p_k^2
Gini(D)=k=1∑∣y∣k′=k∑pkpk′=k=1∑∣y∣pk(1−pk)=1−k=1∑∣y∣pk2
∑
k
′
≠
k
p
k
p
k
′
\displaystyle \sum_{k'\neq k}p_kp_{k'}
k′=k∑pkpk′可以理解成在有放回的抽样中,依次抽两个样本,一样本类别为
k
k
k,一样本类别不为
k
k
k的概率,那么
∑
k
=
1
∣
y
∣
∑
k
′
≠
k
p
k
p
k
′
\displaystyle \sum_{k=1}^{|y|}\displaystyle \sum_{k'\neq k}p_kp_{k'}
k=1∑∣y∣k′=k∑pkpk′就可以理解成有放回的抽取两个样本,其类别不一致的概率,这就是
G
i
n
i
Gini
Gini指数的直观理解。因此,一般来说,
G
i
n
i
Gini
Gini指数越小,抽到类别不一致样本的概率就小,样本集合纯度越高。
假定选择属性
a
a
a作为划分节点,则定义划分后样本集合的
G
i
n
i
Gini
Gini指数为:
G
i
n
i
_
i
n
d
e
x
(
D
,
a
)
=
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
G
i
n
i
(
D
v
)
Gini\_index(D,a)=\displaystyle\sum_{v=1}^{V}\frac{|D^v|}{|D|}Gini(D^v)
Gini_index(D,a)=v=1∑V∣D∣∣Dv∣Gini(Dv)
与ID3算法类似,
∣
D
v
∣
∣
D
∣
\frac{|D^v|}{|D|}
∣D∣∣Dv∣是
a
a
a属性下取值为
v
v
v的样本集合的
G
i
n
i
Gini
Gini指数的权重。因此,我们的目标就变成寻找使划分后
G
i
n
i
Gini
Gini指数最小的属性作为最优划分属性。
《机器学习》读书笔记 2021/6/23