目录
决策树
决策树算法过程及重点
1 基本流程
输入:训练集
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
m
,
y
m
)
}
;
D=\{(x_1,y_1),(x_2,y_2),...,(x_m,y_m)\};
D={(x1,y1),(x2,y2),...,(xm,ym)};
属性集
A
=
{
a
1
,
a
2
,
…
,
a
d
}
A=\{a_1,a_2,\dots,a_d\}
A={a1,a2,…,ad}
过程:函数TreeGrenerate(D,A)
- 生成节点node;
- if D中样本全属于同一个类别C then.
- 将node标记为C类叶节点; 「递归返回情形(1)」
- return.
- end if
- if A= ∅ \emptyset ∅ or D中样本在A上取值相同 then
- 将node标记为叶节点,其类别标记为D中样本数最多的类; 「递归返回情形(2)」
- return
- end if
- 从A中选择最优划分属性 a ∗ a_* a∗;
- for a ∗ a_* a∗ 的每一个值 a ∗ v a_*^v a∗v do.
- 为node生成一个分支;令 D v D_v Dv 表示 D D D 中在 a ∗ a_* a∗ 上取值为 a ∗ v a_*^v a∗v 的样本集;
- if D v D_v Dv 为空 then
- 将分支节点标记为叶节点,其类别标记为D中样本最多的类;「递归返回情形(3)」
- return
- else
- 以TreeGeneration( D v D_v Dv, A A A \ { a ∗ a_* a∗})为分支节点
- end if
注意:递归返回(2)和(3)都是面临节点无法被划分的情形,但(2)是利用当前节点的后验分布进行类别判断,(3)是利用父节点的样本分布作为当前节点的先验分布进行类别判断。
2 流程核心(划分选择)
选择最优划分属性(信息增益,信息增益率,基尼指数)
2.1 信息增益
2.1.1 概念
p_k:样本集合D中第k类样本所占比例。
信息熵
E
n
t
(
D
)
Ent(D)
Ent(D) :
E
n
t
(
D
)
=
−
∑
k
=
1
∣
y
∣
p
k
log
2
p
k
Ent(D)=-\sum_{k=1}^{|y|}p_k\log_2^{p_k}
Ent(D)=−∑k=1∣y∣pklog2pk.
E
n
t
(
D
)
Ent(D)
Ent(D)越小,D的纯度越高。
信息增益
G
a
i
n
(
D
,
a
)
Gain(D,a)
Gain(D,a):
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=1VD∣Dv∣Ent(Dv).
信息增益越大,则意味着使用属性
a
a
a来划分所获得的“纯度提升”越大,
I
D
3
ID3
ID3决策树学习算法以其为准则划分属性。
2.1.2 劣势
对可取值数目较多的属性有所偏好,极端情况以编号为属性时,该属性划分并无意义。
2.2 增益率
2.2.1 概念
增益率
G
a
i
n
_
r
a
t
i
o
(
D
,
a
)
Gain\_ratio(D,a)
Gain_ratio(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),
其中
I
V
(
a
)
=
−
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
log
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∣.
C
4.5
C4.5
C4.5决策树算法以其为标准划分属性。
2.2.2 劣势
对取值数目较少的属性有所偏好,不直接用来选划分属性,而是从候选划分属性中找出信息增益高于平均水平的属性,再从中选出增益率最高的。
2.3 基尼指数
2.3.1 概念
基尼值
G
i
n
i
(
D
)
Gini(D)
Gini(D) :
G
i
n
i
(
D
)
=
∑
k
=
1
y
∑
k
′
̸
=
k
p
k
p
k
′
Gini(D)=\sum_{k=1}^y \sum_{k'\not=k}p_kp_{k'}
Gini(D)=k=1∑yk′̸=k∑pkpk′
=
1
−
∑
k
=
1
∣
y
∣
p
k
2
=1-\sum_{k=1}^{|y|}p_k^2
=1−k=1∑∣y∣pk2
属性
a
a
a的基尼指数定义为:
G
i
n
i
_
i
n
d
e
x
(
D
,
a
)
=
∑
v
=
1
V
G
i
n
i
(
D
v
)
.
Gini\_index(D,a)=\sum_{v=1}^VGini(D^v).
Gini_index(D,a)=v=1∑VGini(Dv).
2.3.2 使用
选择那个使得划分后基尼指数最小的属性为最优划分属性。
3 优化(过拟合+属性过多)
剪枝是决策树学习算法对付“过拟合”的主要手段,采用留出法。
3.1 预剪枝
随机划分出训练集与验证集,比较划分前后验证集精读,决定是否对该节点划分。存在欠拟合的风险。
3.2 后剪枝
先从训练集形成一棵完整决策树,从叶节点开始剪枝,比较剪枝前后验证集精度,决定是否剪枝。训练时间开销比较大。
3.3 多变量决策树
当属性过多时,一个个训练时间消耗过大,可以采用属性的线性组合进行划分。
4 特殊值(连续与缺失值)
4.1 连续值
将连续属性 a a a在样本集 D D D上出现的 n n n个不同取值排序组成集合 { a 1 , a 2 , … , a n } \{a^1,a^2,\dots,a^n\} {a1,a2,…,an},选取中位点为划分点。
4.2 缺失值
为每一个样本
x
x
x赋予一个权重
w
x
w_x
wx,并定义
KaTeX parse error: No such environment: split at position 8: \begin{̲s̲p̲l̲i̲t̲}̲ \rho &= \frac{…
信息增益的计算式可推广为:
KaTeX parse error: No such environment: split at position 8: \begin{̲s̲p̲l̲i̲t̲}̲ Gain(D,a) &= \…
属性值未知样本划分入所有子节点,对应权重改变为
γ
v
~
⋅
w
x
\tilde{\gamma_v}\cdot w_x
γv~⋅wx;直观地看,就是让同一个样本以不同概率划入到不同子节点中。
5 参考
[1]周志华.机器学习[M].清华大学出版社,2016:425.