决策树生成算法
首先明确信息熵 信息增益的概念
信息增益表示得知特征X信息是的类Y的信息不确定性减少的程度
H(D) 经验熵表示对数据D进行分类的不确定性
H(D|A)经验条件熵表示对特征A给定条件下对数据集D进行分类的不确定性(显然这个值越小越好 那么g(D,A)信息增益就会大)
信息增益比:
g
R
(
D
,
A
)
=
g
(
D
,
A
)
H
A
(
D
)
信息增益:
g
(
D
,
A
)
=
H
(
D
)
−
H
(
D
∣
A
)
经验熵:
H
(
D
)
=
−
∑
k
=
1
k
∣
C
k
∣
∣
D
∣
l
o
g
2
∣
C
k
∣
∣
D
∣
;
K
个类;
∣
C
k
∣
第
K
类样本数
经验条件熵:
H
(
D
∣
A
)
=
∑
i
=
1
n
∣
D
i
∣
∣
D
∣
H
(
D
i
)
;
H
A
(
D
)
=
−
∑
i
=
1
n
∣
D
i
∣
∣
D
∣
l
o
g
2
∣
C
i
∣
∣
D
∣
,
n
是特征
A
的取值个数
信息增益比:g_R(D,A)=\frac{g(D,A)}{H_A(D)}\\\\ 信息增益:g(D,A) = H(D)-H(D|A)\\\\ 经验熵:H(D) = -\sum_{k=1}^k \frac{|C_k|}{|D|}log_2\frac{|C_k|}{|D|}; K个类;\ |C_k|第K类样本数\\\\ 经验条件熵:H(D|A)=\sum_{i=1}^n\frac{|D_i|}{|D|}H(D_i); \\\\ H_A(D) = -\sum_{i=1}^n\frac{|D_i|}{|D|}log_2\frac{|C_i|}{|D|}, n是特征A的取值个数
信息增益比:gR(D,A)=HA(D)g(D,A)信息增益:g(D,A)=H(D)−H(D∣A)经验熵:H(D)=−k=1∑k∣D∣∣Ck∣log2∣D∣∣Ck∣;K个类; ∣Ck∣第K类样本数经验条件熵:H(D∣A)=i=1∑n∣D∣∣Di∣H(Di);HA(D)=−i=1∑n∣D∣∣Di∣log2∣D∣∣Ci∣,n是特征A的取值个数
ID3
核心:在决策树各节点应用信息计算信息增益准则选择特征,(即选择信息增益最大)递归地构建决策树 (相当于极大似然法进行概率模型选择)
C4.5
就是使用信息增益比选择特征
信息增益的劣势: 会偏向选择取值较多的特征, 增益比可以纠正
CART (分类回归树)
首先明确 是二叉树;决策树生成;决策树剪枝
回归树:平方误差最小化准则
分类树:Gini系数最小化
回归树生成
一棵回归树对应输入(特征)空间的一个划分以及在划分单元上的输出值,这样就可以定义一棵树
假设将特征空间划分为M个单元 R 1 , R 2 , . . . R M R_1,R_2,...R_M R1,R2,...RM每个单元都有一个输出值 c m c_m cm 那么回归时模型可表示:
f
(
x
)
=
∑
m
=
1
M
c
m
I
(
x
∈
R
m
)
f(x) =\sum_{m=1}^Mc_mI(x\in R_m)
f(x)=m=1∑McmI(x∈Rm)
对特征空间的划分,启发式方法: 遍历每个特征的每个取值,划分两个空间,两个空间中每个样本均值和真实值平方误差最下 那么这个特征及相应的取值就是当前最佳切分点
分类树生成
同回归树相同的生成模式,只是划分空间的切分点衡量的方式是最小基尼系数
算法停止的条件可以设置叶子节点最小样本数作为阈值,或者基尼指数阈值或者没有更多特征
剪枝
CART剪枝算法是先生成再剪枝,从底向上
- 从生成算法产生的决策树 T 0 T_0 T0底部不断剪枝,直到根节点,形成一个子树序列 T 0 , T 1 , . . . , T n {T_0,T_1,...,T_n} T0,T1,...,Tn
- 交叉验证选择效果最优子树
怎么剪?
衡量标准除了平方误差或者基尼系数还要加上对树复杂度的衡量,所以损失函数设计:
C
α
(
T
)
=
C
(
T
)
+
α
∣
T
∣
C_\alpha (T) = C(T)+\alpha |T|
Cα(T)=C(T)+α∣T∣
C
(
T
)
C(T)
C(T)为数据误差;|T|为子树叶节点个数
α \alpha α用来权衡调整拟合度和模型复杂度;显然当 α \alpha α较大的时候 最优子树 T α T_\alpha Tα较小即树复杂度较小
算法流程:
简单过一遍
参考:
李航:统计学习方法