基础概念
什么是信息熵?
熵是度量样本集合纯度最常用的一种指标,代表一个系统中蕴含有多少信息量,信息量越大表明一个系统不确定性越大,就存在越多的可能性,即信息熵越大。
假定当前样本集合D中第k类样本所占的比例为
p
k
(
k
=
1
,
2
,
.
.
.
,
∣
y
∣
)
p_k(k=1,2,...,|y|)
pk(k=1,2,...,∣y∣),则D的信息熵为:
E
n
t
(
D
)
=
−
∑
k
=
1
∣
y
∣
p
k
l
o
g
2
p
k
Ent(D)=-\sum_{k=1}^{|y|}p_klog_2p_k
Ent(D)=−k=1∑∣y∣pklog2pk
信息熵满足下列不等式:
0
⩽
E
n
t
(
D
)
⩽
l
o
g
2
∣
Y
∣
0\leqslant Ent(D) \leqslant log_2|Y|
0⩽Ent(D)⩽log2∣Y∣
Y代表样本D中的类别数
证明信息熵的最值
ID3
信息增益: 假定离散属性a有V个可能的取值
{
a
1
,
a
2
,
.
.
.
,
a
V
}
\{a^1,a^2,...,a^V\}
{a1,a2,...,aV},如果使用特征a来对数据集D进行划分,则会产生V个分支节点,其中第v个节点包含了数据集D中所有在特征a上取值为
a
V
a^V
aV的样本总数,记为
D
V
D^V
DV。再考虑到不同的分支节点所包含的样本数量不同,给分支节点赋予不同的权重,这样对样本越多的分支节点的影响就会越大,因此,就能够计算出特征对样本集合D进行划分所获得的“信息增益”:
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)-\sum_{v=1}^V\frac{|D^v|}{|D|}Ent(D^v)
Gain(D,a)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(Dv)
通俗来讲,信息增益就是确定属性a后整体样本不确定性减少的程度,程度越大,则信息增益越高,程度越小则信息增益越小。
ID3算法的缺点
- ID3没有考虑连续特征。
- ID3采用信息增益大的特征有限建立决策树的节点,取值比较多的特征比取值少的特征,信息增益大。
- ID3算法对于缺失值的情况没有考虑。
- 没有考虑过拟合的问题。
例题
C4.5
增益率: 信息增益偏向于选择取值较多的属性,容易过拟合,基于信息增益的缺点,C4.5算法不直接使用信息增益,而是使用一种叫增益率的方法来选择最优属性进行划分,对于样本集合D中的离散属性a,增益率为:
G
a
i
n
_
r
a
t
i
o
(
D
,
a
)
=
G
a
i
n
(
D
,
a
)
I
V
(
a
)
Gain\_ratio(D,a)=\frac{Gain(D,a)}{IV(a)}
Gain_ratio(D,a)=IV(a)Gain(D,a)
IV(a)是属性a的固有值:
I
V
(
a
)
=
−
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
l
o
g
2
∣
D
v
∣
∣
D
∣
IV(a)=-\sum_{v=1}{V}\frac{|D^v|}{|D|}log_2\frac{|D^v|}{|D|}
IV(a)=−v=1∑V∣D∣∣Dv∣log2∣D∣∣Dv∣
C4.5算法的缺点
- C4.5生成的是多叉树,生成决策树的效率较慢。
- C4.5只能用于分类。
- C4.5由于使用了熵模型,里面有大量的耗时的对数运算。
- C4.5又偏向于选择特征取值较少的属性。
为避免ID3与C4.5算法各自对特征数量的偏见,可以采用以下两步降低影响
Step1: 从候选划分属性中找出信息增益高于平均水平的属性。
Step2: 从Step1的结果中找出增益率最高的属性作为划分属性。
例题
CART
基尼值: 用于度量数据集的纯度,Gini(D)反映了从数据集中随机抽取两个样本,其类别标记不一致的概率。因此,Gini(D)越小,则数据集的纯度越高。
假定当前样本集合D中第k类样本所占的比例为
p
k
(
k
=
1
,
2
,
.
.
.
∣
y
∣
)
p_k(k=1,2,...|y|)
pk(k=1,2,...∣y∣),则D的基尼值为:
G
i
n
i
(
D
)
=
∑
k
=
1
∣
y
∣
∑
k
′
≠
k
p
k
p
k
′
=
1
−
∑
k
=
1
∣
y
∣
p
k
2
Gini(D)=\sum_{k=1}^{|y|}\sum_{{k}' \neq k}p_kp_{{k}'}=1-\sum_{k=1}^{|y|}p_k^2
Gini(D)=k=1∑∣y∣k′̸=k∑pkpk′=1−k=1∑∣y∣pk2
基尼指数: 表示在样本集合中一个随机选中的样本被分错的概率。基尼指数越大,样本的不确定性也就越大。
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)=\sum_{v=1}^{|V|}\frac{|D^v|}{|D|}Gini(D^v)
Gini_index(D,a)=v=1∑∣V∣∣D∣∣Dv∣Gini(Dv)
选择划分后使得基尼指数最小的属性作为最优划分属性。
注意
- CART采用的是二元切割法,最后生成的决策树是一颗二叉树。
- 对于属性值为离散的大于2类的情况,则会选择其中一个取值,将依据属性=a与属性 ≠ \neq ̸=a,划分。最终将改属性下的所有属性取值遍历一遍。
- 对于连续取值的情况可以依据值的大小排序,从小到大,取中间的数值作为分裂点。
- CART不仅能处理分类问题,还能处理回归问题(本文仅针对分类问题做阐述)。
例题
总结
- ID3 只能处理离散型变量,C4.5和CART都可以处理连续型变量。
- ID3 和C4.5只能用于分类任务,CART还可用于回归任务。
- ID3和C4.5在生成决策树时,可能产生多叉树,而CART一定是二叉树。
Reference
[1] 《机器学习》p73-p79
[2] 《统计学习方法》 p67-p87
[3] 《百面机器学习》 p61-p66
[4] https://blog.csdn.net/ACdreamers/article/details/44664481
[5] https://blog.csdn.net/baimafujinji/article/details/53269040#commentBox
[6] https://blog.csdn.net/zjsghww/article/details/51638126
[7] https://zhuanlan.zhihu.com/p/34534004