机器学习 3.2 决策树模型 学习笔记(待补)
3.2.1 模型结构
决策树模型将思维过程抽象为一系列对已知数据属性的判别和决策过程,使用树结构表示和判别的逻辑和关系和一系列的判别过程,并通过叶节点表示判别或决策结果。
如上图所示,一颗树上的叶节点全部表示最终结果,而非叶节点表示每个决策的点,也就是对样本某一属性的判别。不难发现决策树是一个外向树模型,每个内部节点都将直接或间接的影响决策的最终结果。从根节点到某一叶节点的的路径称为测试序列。
我们可以将决策树模型的构造过程描述为如下的过程:
- 根据某种分类规则得到最优的划分特征,计算最优特征子函数,并创建特征的划分节点,按照划分节点将数据集划分为若干部分子数据集;
- 在子数据集重复使用判别规则,构造出新的节点,作为树的新分支;
- 在生成子数据集时,注意检查数据是否均属于同一类别或者再也没有用于数据划分的属性;如果仍能继续分类,则递归执行上述过程;否则将当前节点作为叶节点,结束该分支的构造过程。
3.2.2 判别标准
构造决策树的关键在于合理选择其颞部节点所对应的样本属性,使得节点所对应样本子集中的样本尽可能多属于同一类别,即具有尽可能高的纯度。
决策树模型的判别标准需要满足以下两点:
- 如果节点对应数据子集中的样本基本属于同一个类别,则不用再对节点的数据子集做进一步划分,否则就要对该节点的数据子集做进一步划分,生成新的判别标准;
- 如果新的判别标准能够基本上把节点上不同类别的数据分离开,使得每个子节点都是类别比较单一的数据,那么该判别标准就是一个好规则,否则需要重新选取判别标准。
如何量化决策树的判别属性选择标准?
我们一般使用信息熵(熵)对样本集合的纯度进行定量分析。信息熵时信息论中定量描述随机变量不确定度的的一类度量指标,主要用于衡量数据取值的无序程度,熵值越大则表明数据取值越杂乱无序。
假设
ξ
xi
ξ为具有
n
n
n个可能取值
{
s
1
,
s
2
,
…
,
s
n
}
{s_1, s_2, dots, s_n}
{s1,s2,…,sn}的离散型随机变量,概率分布为
P
(
ξ
=
s
i
)
=
p
i
P(xi = s_i) = p_i
P(ξ=si)=pi,则其信息熵定义为:
H
(
ξ
)
=
−
∑
i
=
1
n
p
i
log
2
p
i
H(xi) = - sum^{n}_{i = 1}p_ilog_2p_i
H(ξ)=−i=1∑npilog2pi
当
H
(
ξ
)
H(xi)
H(ξ)的值越大时,表明随机变量
ξ
xi
ξ的不确定性就越大。
对于任意给定的两个离散型随机变量
ξ
,
η
xi, eta
ξ,η,其联合概率分布为:
P
(
ξ
=
s
i
,
η
=
t
i
)
=
p
i
j
,
i
=
1
,
2
,
…
,
n
;
j
=
1
,
2
,
…
,
m
P(xi = s_i, eta = t_i) = p_{ij}, i = 1, 2, dots, n; j = 1, 2, dots, m
P(ξ=si,η=ti)=pij,i=1,2,…,n;j=1,2,…,m
则
η
eta
η关于
ξ
xi
ξ的信息熵
H
(
η
∣
ξ
)
H(eta | xi)
H(η ∣ ξ)定量表示在已知随机变量
ξ
xi
ξ取值的条件下随机变量
η
eta
η取值的不确定性,计算公式为随机便变量
η
eta
η基于条件概率分布的熵对随机变量
ξ
xi
ξ的数学期望,即有:
H
(
η
∣
ξ
)
=
∑
i
=
1
n
p
i
H
(
η
∣
ξ
=
s
i
)
H(eta | xi) = sum^{n}_{i = 1}{p_iH(eta | xi = s_i)}
H(η ∣ ξ)=i=1∑npiH(η ∣ ξ=si)
其中,
p
i
=
P
(
ξ
=
s
i
)
,
i
=
1
,
2
,
…
,
n
p_i = P(xi = s_i), i = 1, 2, dots, n
pi=P(ξ=si),i=1,2,…,n。
对于任意给定的训练样本集合
D
D
D,可将集合
D
D
D看作时一个关于样本标签取值状态的随机变量,由此可根据熵的本质内涵来定义一个量化指标
H
(
D
)
H(D)
H(D)进而度量
D
D
D中样本类型的纯度,通常称
H
(
D
)
H(D)
H(D)为经验熵。
H
(
D
)
H(D)
H(D)的值越大,则表明
D
D
D中所包含的样本标签取值越杂乱;反之越小则表明越样本标签取值越纯净。
H
(
D
)
H(D)
H(D)的具体计算公式如下:
H
(
D
)
=
−
∑
k
=
1
n
∣
C
k
∣
∣
D
∣
log
2
∣
C
k
∣
∣
D
∣
H(D) = -sum^{n}_{k = 1} frac{|C_k|}{|D|} log_2 frac{|C_k|}{|D|}
H(D)=−k=1∑n∣D∣∣Ck∣log2∣D∣∣Ck∣
其中,
n
n
n表示样本标签值的取值状态数;
C
k
C_k
Ck表示训练样本集
D
D
D中所有标注值为第
k
k
k个取值的训练样本组成的集合,
∣
D
∣
|D|
∣D∣和
∣
C
k
∣
|C_k|
∣Ck∣分别表示集合
D
D
D和
C
k
C_k
Ck的基数。
对于训练样本集
D
D
D上的任意属性
A
A
A,可在经验熵
H
(
D
)
H(D)
H(D)的基础上进一步定义一个量化指标
H
(
D
∣
A
)
H(D|A)
H(D∣A)来度量集合
D
D
D中样本在以属性
A
A
A为标准划分后的纯度,通常乘
H
(
D
∣
A
)
H(D|A)
H(D∣A)为集合
D
D
D关于属性
A
A
A的经验条件熵。
H
(
D
∣
A
)
H(D|A)
H(D∣A)的计算公式如下:
H
(
D
∣
A
)
=
∑
i
=
1
m
∣
D
i
∣
∣
D
∣
H
(
D
i
)
H(D|A) = sum^{m}_{i = 1} frac{|D_i|}{|D|}H(D_i)
H(D∣A)=i=1∑m∣D∣∣Di∣H(Di)
其中,
m
m
m表示属性
A
A
A的取值状态数;
D
i
D_i
Di表示集合
D
D
D在以属性
A
A
A为标准划分后产生的子集,即为
D
D
D中所有属性
A
A
A取第
i
i
i个状态的样本组成的样本集合。
由经验熵
H
(
D
∣
A
)
H(D|A)
H(D∣A)的定义可知,其值越小则样本集合
D
D
D的纯度越高,可在经验熵的基础上进一步计算每个属性作为划分指标后对数据集合经验熵变化的影响,即信息增益。信息增益度量的是已知随机变量
ξ
xi
ξ的信息使得随机变量
η
eta
η的信息不确定性减少的程度。
对于任意给定的训练样本数据集
D
D
D及上的某个属性
A
A
A,属性
A
A
A关于集合
D
D
D的信息增益
G
(
D
,
A
)
G(D, A)
G(D,A)定义为经验熵
H
(
D
)
H(D)
H(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)
显然,对于属性
A
A
A关于集合
D
D
D的信息增益
G
(
D
,
A
)
G(D,A)
G(D,A),如果其值越大则表示使用属性
A
A
A划分后的样本集合纯度越高,使得决策树模型具有更强的分类能力,故可将
G
(
D
,
A
)
G(D, A)
G(D,A)作为标准选择合适的判别属性,通过递归计算样本属性的信息增益以实现对决策树的构造。
使用信息增益指标作为划分属性选择标准的时候,选择结果通常会偏向取值状态数目加多的属性。为了解决这个问题,最简单的思路是对信息增益进行归一化,信息增益率便可以看作对信息增益进行归一化的一个度量标准。信息增益率在信息增益的基础上引入一个增益因子,消除属性取值数目变化对计算结果的干扰。具体来说,对于给任意给定的训练样本的数据集合
D
D
D及其上的某个属性
A
A
A,属性
A
A
A关于集合
D
D
D的信息增益率
G
r
(
D
,
A
)
G_r(D,A)
Gr(D,A)定义为:
G
r
(
D
,
A
)
=
G
(
D
,
A
)
Q
(
A
)
G_r(D, A) = frac{G(D,A)}{Q(A)}
Gr(D,A)=Q(A)G(D,A)
其中
Q
(
A
)
Q(A)
Q(A)为校正因子,由下式计算:
Q
(
A
)
=
−
∑
i
=
1
m
∣
D
i
∣
∣
D
∣
log
2
∣
D
i
∣
∣
D
∣
Q(A) = -sum^{m}_{i = 1}frac{|D_i|}{|D|}log_2frac{|D_i|}{|D|}
Q(A)=−i=1∑m∣D∣∣Di∣log2∣D∣∣Di∣
显然,属性
A
A
A的取值状态数
m
m
m值越大,则
Q
(
A
)
Q(A)
Q(A)值也越大,由此可以减少信息增益的不良偏好对决策树某型结构所带来的影响。
对于决策树模型,还可以用基尼指数作为划分标准来选择最优属性。与上的概念类似,基尼指数可以用来度量数据集的纯度。对于任意给定的一个
m
m
m分类,假设样本点属于第
k
k
k类的概率为
p
k
p_k
pk,则关于这个概率分布
p
p
p的基尼指数可以定义为
G
i
n
i
(
p
)
=
∑
k
=
1
m
p
k
(
1
−
p
k
)
Gini(p) = sum^{m}_{k = 1}p_k(1 - p_k)
Gini(p)=k=1∑mpk(1−pk)
即有:
G
i
n
i
(
p
)
=
1
−
∑
k
=
1
m
p
k
2
Gini(p) = 1 - sum^m_{k = 1}p_k^2
Gini(p)=1−k=1∑mpk2
相应的,对于任意给定的样本集合
D
D
D,可将其基尼指数定义为:
G
i
n
i
(
D
)
=
1
−
∑
k
=
1
m
(
∣
C
k
∣
∣
D
∣
)
2
Gini(D) = 1 - sum^{m}_{k = 1}(frac{|C_k|}{|D|})^2
Gini(D)=1−k=1∑m(∣D∣∣Ck∣)2
其中,
C
k
C_k
Ck是
D
D
D中属于第
k
k
k类的样本子集;
m
m
m是类别方案数。
样本集合
D
D
D的基尼指数表示在
D
D
D中随机选中一个样本被错误分类的概率。显然,
G
i
n
i
(
D
)
Gini(D)
Gini(D)的值越小,数据集
D
D
D中样本的纯度越高,或者说
D
D
D中样本种类一致性越高。
若样本集合
D
D
D根据属性
A
A
A是否取某一可能值
a
a
a而被分割为
D
1
D_1
D1和
D
2
D_2
D2两部分,即
D
1
=
{
(
X
,
y
)
∈
D
∣
A
(
X
)
=
a
}
,
D
2
=
D
−
D
1
D_1 = {(X, y) in D | A(X) =a}, D_2 = D - D_1
D1={(X,y)∈D∣A(X)=a},D2=D−D1
则在属性
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)
3.2.3 模型构造(占坑)
基于上述判断标准,主要有三种相应的决策树生成算法
- 基于信息增益:ID3算法
- 基于信息增益率:C4.5算法
- 基于基尼指数:CART算法
待补