主要参考书目《统计学习方法》第2版,清华大学出版社
参考书目 Machine Learning in Action, Peter Harrington
用于考研复试笔记,所以写的很简洁,自己能看懂就行。有学习需求请绕道,参考吴恩达机器学习或以上书籍,讲得比大多数博客好。
概念
定义 5.1 决策树(decision tree) 分类决策树模型时一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型:内部结点(internal node)和叶节点(leaf node)。内部结点表示一个特征或属性,叶结点表示一个类。
熵(Entropy)的定义
H
(
x
)
=
−
∑
i
=
1
n
p
i
l
o
g
p
i
H(x)=-\sum\limits_{i=1}^np_ilogp_i
H(x)=−i=1∑npilogpi
一件事情概率发生的越小,包含的信息量越大,熵就越大。
信息熵越大,从而样本纯度越低,因为信息量大了。
对于某种属性,因为这种属性的条件下,信息量比较大,说明包含了不同的种类,这个时候就需要进行划分。
条件熵(conditional entropy)
H
(
Y
∣
X
)
=
∑
i
=
1
n
p
i
H
(
Y
∣
X
=
x
i
)
H(Y|X)=\sum\limits_{i=1}^np_iH(Y|X=x_i)
H(Y∣X)=i=1∑npiH(Y∣X=xi)
用频率估计概率时,熵与条件熵分别称为经验熵(empirical entropy)和经验条件熵(empirical conditional entropy)
信息增益(information gain) 特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵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)
也成为互信息(mutual information)
信息增益比
g
R
(
D
,
A
)
=
g
(
D
,
A
)
H
A
(
D
)
g_R(D,A)=\frac{g(D,A)}{H_A(D)}
gR(D,A)=HA(D)g(D,A)
其中
H
A
(
D
)
=
−
∑
i
=
1
n
∣
D
i
∣
∣
D
∣
l
o
g
2
∣
D
i
∣
∣
D
∣
H_A(D)=-\sum\limits_{i=1}^n\frac{|D_i|}{|D|}log_2\frac{|D_i|}{|D|}
HA(D)=−i=1∑n∣D∣∣Di∣log2∣D∣∣Di∣,n是特征值A取值的个数
原理
ID3算法
输入:训练数据集D,特征集A阈值
ε
\varepsilon
ε
输出:决策树T
(1)若D中所有实例属于同一类
C
k
C_k
Ck,则T为单结点树,并将类
C
k
C_k
Ck作为该结点的类标记,返回T
(2)若
A
=
∅
A=\varnothing
A=∅,则T为单结点树,并将D中实例数最大的类
C
k
C_k
Ck作为该结点的类标记,返回T
(3)否则,按算法5.1计算A中各特征对D的信息增益,选择信息增益最大的特征
A
g
A_g
Ag
(4)如果
A
g
A_g
Ag的信息增益小于阈值
ε
\varepsilon
ε,则置T为单节点树,并将D中实例数最大的类
C
k
C_k
Ck作为该结点的类标记,返回T
(5)否则,对
A
g
A_g
Ag的每一可能值
a
i
a_i
ai,依
A
g
=
a
i
A_g=a_i
Ag=ai将D分割为若干非空子集
D
i
D_i
Di,将
D
i
D_i
Di中实例数最大的类作为标记,构建子结点,由结点及其子结点构成树T,返回T
(6)对第i个子结点,以D_i为训练集,以
A
−
A
g
A-{A_g}
A−Ag为特征集,递归地调用步(1)~步(5),得到子树
T
i
T_i
Ti,返回
T
i
T_i
Ti
缺点
ID3 没有剪枝策略,容易过拟合;
信息增益准则对可取值数目较多的特征有所偏好,类似“编号”的特征其信息增益接近于 1;
只能用于处理离散分布的特征;
没有考虑缺失值。
C4.5算法
将ID3中的信息增益换成信息增益比
剪枝
决策树的损失函数
C
α
(
T
)
C_\alpha(T)
Cα(T)
设树T的叶节点个数为|T|,该叶结点由
N
t
N_t
Nt个样本点,其中k类的样本点有
N
t
k
N_{tk}
Ntk个,
k
=
1
,
2
,
.
.
.
,
K
k=1,2,...,K
k=1,2,...,K
C
α
(
T
)
=
∑
t
=
1
∣
T
∣
N
t
H
t
(
T
)
+
α
∣
T
∣
C_\alpha (T)=\sum\limits_{t=1}^{|T|}N_tH_t(T)+\alpha |T|
Cα(T)=t=1∑∣T∣NtHt(T)+α∣T∣
其中
α
⩾
0
\alpha \geqslant 0
α⩾0为参数
H
t
(
T
)
=
−
∑
k
N
t
k
N
t
l
o
g
N
t
k
N
t
H_t(T)=-\sum\limits_k \frac{N_{tk}}{N_t}log\frac{N_{tk}}{N_t}
Ht(T)=−k∑NtNtklogNtNtk
较大的
α
\alpha
α促使选择较简单的模型,较小的
α
\alpha
α促使选择较复杂的模型
树的剪枝算法
设一组叶结点回缩到其父结点之前与之后的整体树分别为
T
B
T_B
TB与
T
A
T_A
TA,其对应的损失函数值分别是
C
α
(
T
B
)
C_\alpha(T_B)
Cα(TB)与
C
α
(
T
A
)
C_\alpha(T_A)
Cα(TA),如果
C
α
(
T
A
)
⩽
C
α
(
T
B
)
C_\alpha(T_A) \leqslant C_\alpha(T _B)
Cα(TA)⩽Cα(TB)则进行剪枝。
注:可以用动态规划实现
这个方法是一种悲观剪枝的方法, 如果不要这棵树子树分类效果还会更好,就减掉。