4.1 基本概念
决策树的生成是一个递归的过程,在几种条件下会被终止,一是当前结点下的类别都一样,二是现有属性不能对剩下的样本进行区分,三是当前结点下没有样本。
4.2 划分选择
这一节研究的问题是如何选取上图中第8行的属性
4.2.1 信息增益
一种方法是依据信息熵来对某一属性的各个取值的纯度进行度量。对于一个样本集合
D
D
D,其中第k类样本所占的比例是
p
k
p_k
pk,则信息熵的定义为
E
n
t
(
D
)
=
−
∑
k
=
1
∣
y
∣
p
k
l
o
g
p
k
Ent(D)=-\sum_{k=1}^{|y|}p_k\mathop{log}p_k
Ent(D)=−k=1∑∣y∣pklogpk
熵值越大,表示其中的信息越混乱,纯度越低。那么如何衡量一个属性对决策树性能提升的帮助呢?我们可以用父节点的熵值来减去用该属性进行划分后产生的子节点的熵值,得到熵增益。
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)
从上式中可以看到,如果子节点的熵值越小,那么信息增益也就越大。
4.2.2 增益率
信息增益准则对可取值数目较多的属性有所偏好,为了减少这种偏好可能带来的不利影响,我们引入了增益率的概念
G
a
i
n
_
r
a
t
i
o
(
D
,
a
)
=
G
a
i
n
(
D
,
a
)
I
V
(
a
)
I
V
(
a
)
=
−
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
l
o
g
2
∣
D
v
∣
∣
D
∣
Gain\_ratio(D,a)=\frac{Gain(D,a)}{IV(a)} \\ IV(a)=-\sum_{v=1}^V\frac{|D_v|}{|D|}log_2\frac{|D_v|}{|D|}
Gain_ratio(D,a)=IV(a)Gain(D,a)IV(a)=−v=1∑V∣D∣∣Dv∣log2∣D∣∣Dv∣
4.2.3 基尼指数
G
i
n
i
(
D
)
=
∑
k
=
1
∣
y
∣
∑
k
′
≠
k
p
k
p
k
′
Gini(D)=\sum_{k=1}^{|y|}\sum_{{k'}\neq{k}}p_kp_{k'}
Gini(D)=k=1∑∣y∣k′̸=k∑pkpk′
另一种纯度的度量方式
4.3 剪枝处理
决策树剪枝分为预剪枝和后简直。预剪枝是对当前结点在划分前后进行估计,如果划分不能使得决策树的泛化性能得到提升,那么就停止划分;后剪枝则是从训练集中生成完整的树,而后再自底向上地检查各个结点,将其他换为叶子结点是否能得到性能上的提升。
4.4 连续与缺失
4.4.1 连续值处理
给定样本集
D
D
D和连续属性
a
a
a,假定
a
a
a在
D
D
D上出现了
n
n
n个不同的取值,基于划分点
t
t
t可以把
D
D
D分为子集
D
t
−
D_t^-
Dt−和
D
t
+
D_t^+
Dt+。对于相邻的属性值来讲,
t
t
t在
[
a
i
,
a
i
+
1
)
[a^i,a^{i+1})
[ai,ai+1)上取任何值产生的划分结果是相同的。因此,我们可以考虑
n
−
1
n-1
n−1个元素的划分点集合
T
a
=
{
a
i
+
a
i
+
1
2
∣
1
≤
i
≤
n
−
1
}
T_a=\{\frac{a^i+a^{i+1}}{2}|1\leq{i}\leq{n-1}\}
Ta={2ai+ai+1∣1≤i≤n−1}
如此一来,我们就可以继续用信息增益来度量每个划分点的优劣
G
a
i
n
(
D
,
a
)
=
max
t
∈
T
a
E
n
t
(
D
)
−
∑
λ
∈
−
,
+
∣
D
t
λ
∣
D
E
n
t
(
D
t
λ
)
Gain(D,a)=\max_{t\in{T_a}}Ent(D)-\sum_{{\lambda}\in{-,+}}\frac{|D_t^\lambda|}{D}Ent(D_t^\lambda)
Gain(D,a)=t∈TamaxEnt(D)−λ∈−,+∑D∣Dtλ∣Ent(Dtλ)
需要注意的是,与离散属性不同,如果当前结点划分属性为连续属性,该属性还可以作为其后代结点的划分属性。
4.4.2 缺失值处理
我们要解决两个问题,(1)如何在属性值缺失的情况下进行划分属性的选择。(2)给定划分属性,如果样本在该属性上缺失,如何对样本进行划分。
令
D
^
\hat{D}
D^表示
D
D
D中在
a
a
a属性上没有缺失值的样本子集。对于问题1,我们其实可以只根据
D
^
\hat{D}
D^来判断属性a的优劣。假设属性
a
a
a有
V
V
V个可取值
{
a
1
,
a
2
,
.
.
.
,
a
V
}
{\{a^{1},a^2,...,a^V\}}
{a1,a2,...,aV},令
D
^
v
\hat{D}^v
D^v表示
D
^
{\hat{D}}
D^在样本
a
a
a上取值为
a
v
a^v
av的样本子集,
D
^
k
\hat{D}_k
D^k表示
D
^
\hat{D}
D^中属于第
k
k
k类的样本子集,假设我们为每一个样本赋予一个权重
ω
x
\omega_x
ωx,定义
ρ
=
∑
x
∈
D
^
ω
x
∑
x
∈
D
ω
x
p
^
k
=
∑
x
∈
D
^
k
ω
x
∑
x
∈
D
ω
x
r
^
v
=
∑
x
∈
D
^
v
ω
x
∑
x
∈
D
ω
x
\rho=\frac{\sum_{x\in\hat{D}}\omega_x}{\sum_{x\in{D}}\omega_x} \\ \hat{p}_k=\frac{\sum_{x\in\hat{D}_k}\omega_x}{\sum_{x\in{D}}\omega_x} \\ \hat{r}_v=\frac{\sum_{x\in\hat{D}^v}\omega_x}{\sum_{x\in{D}}\omega_x} \\
ρ=∑x∈Dωx∑x∈D^ωxp^k=∑x∈Dωx∑x∈D^kωxr^v=∑x∈Dωx∑x∈D^vωx
基于上述定义,我们可以将信息增益的计算式扩展为
G
a
i
n
(
D
,
a
)
=
ρ
×
(
E
n
t
(
D
^
)
−
∑
v
=
1
V
r
^
v
E
n
t
(
D
^
v
)
)
E
n
t
(
D
^
v
)
=
−
∑
k
=
1
∣
y
∣
p
^
k
l
o
g
2
p
^
k
Gain(D,a)=\rho\times(Ent(\hat{D})-\sum_{v=1}^V\hat{r}_vEnt(\hat{D}^v))\\ Ent(\hat{D}^v)=-\sum_{k=1}^{|y|}\hat{p}_k\mathop{log}_2{\hat{p}_k}
Gain(D,a)=ρ×(Ent(D^)−v=1∑Vr^vEnt(D^v))Ent(D^v)=−k=1∑∣y∣p^klog2p^k
4.5 多变量决策树
决策树的分类边界是与坐标轴平行的。
多变量决策树中,非叶子结点不再是仅对于某个属性,而是对属性的线性组合进行测试。