决策树(decision tree)是一种基本的分类与回归方法,主要优点时模型具有可读性,分类速度快,学习时利用训练数据根据损失函数最小化的原则建立决策树模型。预测时,对新的数据,利用决策树模型进行分类。决策树学习通常包括三个步骤:特征选择,决策树的生成和决策树的修剪。
决策树学习的损失函数通常是正则化的极大似然函数,决策树学习的策略是以损失函数为目标函数的最小化。确定了损失函数后,学习问题就变为在损失函数意义下选择最优决策树的问题,但这是个NP完全问题,一般采用启发式算法来近似求解这一最优化问题。
1. 信息增益(ID3算法)
特征
A
A
A对训练数据集
D
D
D信息增益
g
(
D
,
A
)
g(D,A)
g(D,A),定义为集合
D
D
D的经验熵
H
(
D
)
H(D)
H(D)与特征
A
A
A给定条件下
D
D
D的经验条件熵
H
(
D
∣
A
)
H(D|A)
H(D∣A)之差,即
g
(
D
,
A
)
=
H
(
D
)
−
H
(
D
∣
A
)
g(D,A)=H(D)-H(D|A)
g(D,A)=H(D)−H(D∣A)
假设训练数据集为
D
D
D,容量为
∣
D
∣
|D|
∣D∣。有
K
K
K个
C
k
C_{k}
Ck类,个数为
∣
C
k
∣
|C_{k}|
∣Ck∣。特征
A
A
A有n个不同的取值,根据这些取值会把
D
D
D划分为n个子集,样本个数是
∣
D
i
∣
|D_{i}|
∣Di∣。
D
i
D_{i}
Di子集中属于
C
k
C_{k}
Ck类的样本个数是
∣
D
i
k
∣
|D_{ik}|
∣Dik∣。那么通过计算选择出信息增益最大的特征作为切分点。
H
(
D
)
=
−
∑
k
=
1
K
∣
C
k
∣
∣
D
∣
l
o
g
(
∣
C
k
∣
∣
D
∣
)
H(D)=-\sum_{k=1}^{K}\frac{|C_{k}|}{|D|}log(\frac{|C_{k}|}{|D|})
H(D)=−k=1∑K∣D∣∣Ck∣log(∣D∣∣Ck∣)
H
(
D
∣
A
)
=
∑
i
=
1
n
∣
D
i
∣
∣
D
∣
H
(
D
i
)
=
−
∑
i
=
1
n
∣
D
i
∣
∣
D
∣
∑
k
=
1
K
∣
D
i
k
∣
∣
D
i
∣
l
o
g
(
∣
D
i
k
∣
∣
D
i
∣
)
H(D|A)=\sum_{i=1}^{n}\frac{|D_{i}|}{|D|}H(D_{i})=-\sum_{i=1}^{n}\frac{|D_{i}|}{|D|}\sum_{k=1}^{K}\frac{|D_{ik}|}{|D_{i}|}log(\frac{|D_{ik}|}{|D_{i}|})
H(D∣A)=i=1∑n∣D∣∣Di∣H(Di)=−i=1∑n∣D∣∣Di∣k=1∑K∣Di∣∣Dik∣log(∣Di∣∣Dik∣)
2. 信息增益比(C4.5生成算法)
以信息增益作为划分训练数据的特征,存在偏向于选择取值较多的特征的问题,使用信息增益比可以解决这个问题。
g
R
(
D
,
A
)
=
g
(
D
,
A
)
H
A
(
D
)
H
A
(
D
)
=
−
∑
i
=
1
n
∣
D
i
∣
∣
D
∣
l
o
g
(
∣
D
i
∣
∣
D
∣
)
g_{R}(D,A)=\frac{g(D,A)}{H_{A}(D)}\qquad H_{A}(D)=-\sum_{i=1}^{n}\frac{|D_{i}|}{|D|}log(\frac{|D_{i}|}{|D|})
gR(D,A)=HA(D)g(D,A)HA(D)=−i=1∑n∣D∣∣Di∣log(∣D∣∣Di∣)
3. 基尼指数(CART分类与回归树)
分类问题中,假设有K个类,样本点属于第
k
k
k类的概率为
p
k
p_{k}
pk,则概率分布的基尼指数为
G
i
n
i
(
p
)
=
∑
k
=
1
K
p
k
(
1
−
p
k
)
=
1
−
∑
k
=
1
K
p
k
2
Gini(p)=\sum_{k=1}^{K}p_{k}(1-p_{k})=1-\sum_{k=1}^{K}p_{k}^{2}
Gini(p)=k=1∑Kpk(1−pk)=1−k=1∑Kpk2对于给定的样本集合
D
D
D,基尼指数为
G
i
n
i
(
D
)
=
1
−
∑
k
=
1
K
(
∣
C
k
∣
∣
D
∣
)
2
Gini(D)=1-\sum_{k=1}^{K}(\frac{|C_{k}|}{|D|})^{2}
Gini(D)=1−k=1∑K(∣D∣∣Ck∣)2在特征
A
A
A(是否是A,所以只有两类情况)的条件下,集合
D
D
D的基尼指数定义为
G
i
n
i
(
D
,
A
)
=
∣
D
1
∣
∣
D
∣
G
i
n
i
(
D
1
)
+
∣
D
2
∣
∣
D
∣
G
i
n
i
(
D
2
)
Gini(D,A)=\frac{|D_{1}|}{|D|}Gini(D_{1})+\frac{|D_{2}|}{|D|}Gini(D_{2})
Gini(D,A)=∣D∣∣D1∣Gini(D1)+∣D∣∣D2∣Gini(D2)