声明:以下内容整理自周志华教授的《机器学习》,在此表达诚挚的敬意!
剪枝处理
目的:
应对过拟合问题。如果一棵树的分支过多,意味着模型太复杂,会导致过拟合问题。也就是说训练集本身的一些特点被当作所有数据都具有的一般性质而导致过拟合。
预剪枝:
在决策树生成过程中,对每个节点在划分前先进行估计。若当前结点的划分不能带来决策树泛化能力的提升,则停止划分并将当前结点标记为叶节点。
后剪枝:
先从训练集生成一棵完整的决策树,然后自底向上地对非叶子结点进行考察。若将该结点对应的子树替换为叶结点能带来泛化能力的提升,则将该子树替换为叶结点。
如何判断泛化能力是否提升?
使用验证集
缺失值处理
我们拿到的数据因为各种原因总是会有缺失值,在决策树方面,我们要解决两个问题:
- 如何在属性值缺失的情况下进行划分属性的选择?
- 给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?
先解决第一个问题。给定数据集 D D D,属性 a a a, D ~ \tilde D D~表示 a a a上完整(没有缺失值)的样本集合。显然,我们可以利用 D ~ \tilde D D~来判断属性 a a a的优劣。
D ~ v \tilde D^v D~v表示 D ~ \tilde D D~中在属性 a a a上取值为 a v a^v av的样本子集: a ∈ { a 1 , a 2 , … , a V } , D ~ = ⋃ k = 1 ∣ K ∣ D ~ v a \in\{a^1,a^2,\dots,a^V\},\tilde D =\bigcup_{k=1}^{\mid K \mid}\tilde D^v a∈{a1,a2,…,aV},D~=⋃k=1∣K∣D~v
D ~ k \tilde D_k D~k表示 D ~ \tilde D D~中属于类别 k k k的样本子集: k ∈ { 1 , 2 , … , K } , D ~ = ⋃ k = 1 ∣ K ∣ D ~ k k \in \{1,2,\dots ,K\},\tilde D=\bigcup_{k=1}^{\mid K \mid}\tilde D_k k∈{1,2,…,K},D~=⋃k=1∣K∣D~k
假设我们为每个样本 x x x赋予一个权重 w x w_x wx,并定义:
ρ = ∑ x ∈ D ~ w x ∑ x ∈ D w x \rho=\frac{\sum_{x\in \tilde D}w_x}{\sum_{x \in D}w_x} ρ=∑x∈Dwx∑x∈D~wx,无缺失值样本的比例
p ~ k = ∑ x ∈ D ~ k w x ∑ x ∈ D ~ w x \tilde p_k=\frac{\sum_{x\in \tilde D_k}w_x}{\sum_{x \in \tilde D}w_x} p~k=∑x∈D~wx∑x∈D~kwx,无缺失值样本中 k k k类所占比例
r ~ v = ∑ x ∈ D ~ v w x ∑ x ∈ D ~ w x \tilde r_v=\frac{\sum_{x\in \tilde D^v}w_x}{\sum_{x \in \tilde D}w_x} r~v=∑x∈D~wx∑x∈D~vwx,无缺失值样本中在属性 a a a上取值为 a v a^v av的样本所占的比例。
有了上面的定义,我们就可以推广信息增益的计算式:
G
a
i
n
(
D
,
a
)
=
ρ
∗
G
a
i
n
(
D
~
,
a
)
=
ρ
∗
(
E
n
t
(
D
~
)
−
∑
v
=
1
V
r
~
v
E
n
t
(
D
~
v
)
)
其
中
E
n
t
(
D
~
)
=
−
∑
k
=
1
K
p
~
k
l
o
g
p
~
k
\begin{aligned} Gain(D,a)&=\rho*Gain(\tilde D,a)\\ &=\rho*(Ent(\tilde D)-\sum_{v=1}^V\tilde r_vEnt(\tilde D^v))\\ 其中Ent(\tilde D)&=-\sum_{k=1}^K\tilde p_klog\tilde p_k \end{aligned}
Gain(D,a)其中Ent(D~)=ρ∗Gain(D~,a)=ρ∗(Ent(D~)−v=1∑Vr~vEnt(D~v))=−k=1∑Kp~klogp~k
再来解决第二个问题。若样本
x
x
x在划分属性
a
a
a上的取值已知,则将
x
x
x划入与其取值对应的子结点,且样本权值在子结点中保持为
w
x
w_x
wx. 若样本
x
x
x在划分属性
a
a
a上的取值未知,则将
x
x
x同时划入所有子结点,且样本权值在与属性值
a
v
a^v
av对应的子结点中调整为
r
~
v
⋅
w
x
\tilde r_v \cdot w_x
r~v⋅wx. 直观上看,这就是让同一个样本以不同的概率划入到不同的子结点中去。C4.5
算法使用了这种解决方案。