1.决策树
(1)决策树模型
- 是一种描述对实例进行分类的树形结构。由结点(结点:内部结点(表示一个特征或者属性)和叶结点(表示一个分类))和有向边组成。
- 决策树可以转换成一个if-then规则的集合。
- 决策树表示给定特征条件下类的条件概率分布。
- 决策树学习旨在构建一个与训练数据拟合很好,并且复杂度小的决策树。
- 从可能的决策树中直接选取最优决策树是NP完全问题。
- 现实中采用启发式方法学习次优的决策树。
(2)特征选择
1)信息增益
熵
随机变量X的熵定义为
H
(
X
)
=
−
∑
i
=
1
n
p
i
log
p
i
H(X)=-\sum_{i=1}^n{p_i}{\log p_i}
H(X)=−∑i=1npilogpi,表示随机变量X不确定性的度量。
- log 以2为底,记作lb,单位比特(bit)
- log 以e为底,记作ln,单位奈特(nat)
- log 以10为底,记作lg,单位哈脱来(hat)
条件熵
当随机变量只有两种值时,
P
(
X
=
1
)
=
p
,
P
(
X
=
0
)
=
1
−
p
P(X=1)=p,P(X=0)=1-p
P(X=1)=p,P(X=0)=1−p则熵为
H
(
X
)
=
−
p
log
p
−
(
1
−
p
)
log
(
1
−
p
)
H(X)=-p\log p -(1-p)\log(1-p)
H(X)=−plogp−(1−p)log(1−p)
随机变量
(
X
,
Y
)
(X,Y)
(X,Y)的联合概率分布
P
(
X
=
x
i
,
Y
=
y
i
)
=
p
i
j
P(X=x_i,Y=y_i)=p_{ij}
P(X=xi,Y=yi)=pij,则条件熵
H
(
Y
∣
X
)
=
∑
i
=
1
n
p
i
H
(
Y
∣
X
=
x
i
)
H(Y|X)=\sum_{i=1}^np_iH(Y|X=x_i)
H(Y∣X)=∑i=1npiH(Y∣X=xi)表示X给定条件下Y的条件概率分布的熵对X的数学期望。
信息增益
定义:特征A对训练集D的信息增益
g
(
D
,
A
)
g(D,A)
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)表示:得知特征X的信息而使得类Y的信息的不定性减少的程度。一般的熵H(D)与条件熵H(D|A)之差称为互信息,决策树学习中的信息增益等价于训练数据集中类与特征的互信息。
信息增益依赖于特征,值越大的特征具有更强的分类能力。
2)信息增益比
以信息增益作为划分训练数据集的特征,偏向于选择取值多的特征。信息增益比可以改善这一现象。
定义:信息增益
g
(
D
,
A
)
g(D,A)
g(D,A)与训练集D关于特征A的值的熵
H
A
(
D
)
H_A(D)
HA(D)之比
g
R
(
D
,
A
)
=
g
(
D
,
A
)
H
A
(
D
)
=
H
(
D
)
−
H
(
D
∣
A
)
H
A
(
D
)
=
−
∑
i
=
1
n
p
i
log
p
i
−
∑
i
=
1
n
p
i
H
(
D
∣
A
=
A
i
)
−
∑
i
=
1
n
∣
D
i
∣
∣
D
∣
l
o
g
(
∣
D
i
∣
∣
D
∣
)
g_R(D,A)=\frac{g(D,A)}{H_A(D)}=\frac{ H(D)-H(D|A)}{H_A(D)}=\frac{-\sum_{i=1}^n{p_i}{\log p_i}-{\sum_{i=1}^np_iH(D|A=A_i)}}{-\sum_{i=1}^n\frac{|D_i|}{|D|}log(\frac{|D_i|}{|D|})}
gR(D,A)=HA(D)g(D,A)=HA(D)H(D)−H(D∣A)=−∑i=1n∣D∣∣Di∣log(∣D∣∣Di∣)−∑i=1npilogpi−∑i=1npiH(D∣A=Ai)其中
∣
D
i
∣
{|D_i|}
∣Di∣表示
D
i
D_i
Di类样本的个数
∣
D
∣
{|D|}
∣D∣表示样本总数。
2.决策树生成
(1)ID3算法
1)算法介绍
输入:训练集D,特征集A,阀值
ε
\varepsilon
ε
输出:决策树T
算法过程:
- a、判断D中所有实例是否属于同一类 C k C_k Ck, 若是,输出单结点树T,并标记结点类为 C k C_k Ck;
- b、判断A是否为空,若是,输出单结点树T,并将D中实例数最大的 C k C_k Ck作为结点标记;
- c、计算A中个特征对D的信息增益,选择信息增益最大的特征 A g A_g Ag;
- d、判断 A g A_g Ag的信息增益 < ε <\varepsilon <ε,如是返回T为单结点树,并将D中实例数最大的 C k C_k Ck作为结点标记;
- e、若 A g ≥ ε A_g\geq \varepsilon Ag≥ε,对 A g A_g Ag的每一个可能值 a i a_i ai将D分成若干非空子集,将实例数最大的类作为标记,构建子结点,返回T;
- f、对子结点内的训练集,以 A A A-{ A g A_g Ag}作为特征,重复a-e步骤,得到最终的决策树。
2)特点
容易产生过拟合
(2)C4.5的生成算法
1)算法介绍
输入:训练集D,特征集A,阀值
ε
\varepsilon
ε
输出:决策树T
算法过程:与ID3类似,只是将判断方法信息增益换成了信息增益比
3.决策树剪枝
(1)损失函数
极小化决策树整体的损失函数或代价函数来实现。
损失函数:
C
α
(
T
)
=
C
(
T
)
+
α
∣
T
∣
=
∑
t
=
1
∣
T
∣
N
t
H
t
(
T
)
+
α
∣
T
∣
=
∑
t
=
1
∣
T
∣
∑
k
=
1
K
N
t
k
log
(
N
t
k
N
t
)
+
α
∣
T
∣
C_{\alpha}(T)=C(T)+\alpha|T|=\sum_{t=1}^{|T|}N_tH_t(T)+\alpha|T|=\sum_{t=1}^{|T|}\sum_{k=1}^{K}N_{tk}\log(\frac{N_{tk}}{N_t})+\alpha|T|
Cα(T)=C(T)+α∣T∣=t=1∑∣T∣NtHt(T)+α∣T∣=t=1∑∣T∣k=1∑KNtklog(NtNtk)+α∣T∣其中:
- ∣ T ∣ |T| ∣T∣表示决策树的叶结点个数,表示模型的复杂度
- t t t是叶结点,该结点有 N t N_t Nt个样本
- 其中 k k k类的样本有 N t k N_{tk} Ntk个
- α ≥ 0 \alpha \geq 0 α≥0,较大的 α \alpha α对应简单的模型,较小的 α \alpha α选择复杂模型, α \alpha α=0表示不考虑模型复杂度
- C ( T ) C(T) C(T)表示模型对训练数据的预测误差,即模型与训练集的拟合程度
该损失函数的极小化等价于用正则化的极大似然估计进行模型选择
(2)树的剪枝算法
输入:生成算法产生的整个树T,参数
α
\alpha
α
输出:修剪之后的决策树Tα
过程:计算每个结点的经验熵——>递归的从树的叶结点向上回缩(如父结点之前与之后的树分别为
T
A
,
T
B
T_A,T_B
TA,TB,
C
α
(
T
A
)
≤
C
α
(
T
B
)
C_{\alpha}(T_A) \leq C_{\alpha}(T_B)
Cα(TA)≤Cα(TB))(重复)——>直至
C
α
(
T
A
)
>
C
α
(
T
B
)
C_{\alpha}(T_A) > C_{\alpha}(T_B)
Cα(TA)>Cα(TB)结束剪枝
4. CART算法
1)概述
- 在规定输入随机变量X条件下输出随机变量Y的条件概率分布;
- 假设决策树是二叉树,左边是“是”的分支,右边是“否”的分支;
- 由两步组成:决策树生成和决策树剪枝
2)决策树生成
-
特征选择使用的方法是:Gini基尼指数 G i n i ( D ) = 1 − ∑ k = 1 K ( ∣ C k ∣ ∣ D ∣ ) 2 Gini(D)=1-\sum_{k=1}^{K}(\frac{|C_{k}|}{|D|})^{2} Gini(D)=1−k=1∑K(∣D∣∣Ck∣)2
-
输入:训练集D,停止条件
-
输出:CART决策树
-
算法过程:计算现有特征对数据集的基尼指数,选择最小基尼指数的特征作为切分点,将数据集切分成两部分,重复切分动作,直至满足条件停止。
3)决策树剪枝
- 输入:CART算法生成的决策树 T 0 T_0 T0
- 输出:最优决策树 T α T_\alpha Tα
- 算法过程:设 k = 0 , T = T 0 , α = + ∞ k=0,T=T_0,\alpha=+\infty k=0,T=T0,α=+∞,自下而上计算 g ( t ) = C ( t ) − C ( T t ) ∣ T t ∣ − 1 , α = m i n ( α , g ( t ) ) g(t) = \frac{C(t)-C(T_t)}{|T_t|-1},\alpha=min(\alpha,g(t)) g(t)=∣Tt∣−1C(t)−C(Tt),α=min(α,g(t)),对 g ( t ) = α , g(t) = \alpha, g(t)=α,的内部结点t进行剪枝,并对叶结点t以多数表决决定类别,得到数T,循环以上步骤,直至T由根结点和两个叶结点构成,采用交叉验证法对子树序列进行计算,选出最优的树为最终的 T α T_\alpha Tα
5. 决策树的优缺点
1)优点
- 便于理解和解释,树的结构可以可视化出来;
- 训练需要的数据少,无需数据规范化;
- 速度快,训练树模型的时间复杂度是参与训练数据点的对数值;
- 能够处理数值型数据和分类数据;
- 使用白盒模型;
- 可以验证模型可靠性;
- 大多情况表现良好。
2)缺点
- 不支持缺失值
- 决策树模型容易过拟合,通过剪枝、设置叶节点所需的最小样本数或设置数的最大深度避免过拟合。
- 决策树可能是不稳定的,因为数据中的微小变化可能会导致完全不同的树生成
- 在多方面性能最优和简单化概念的要求下,学习一棵最优决策树通常是一个NP难问题。实际的决策树学习算法是基于启发式算法,这样的算法不能保证返回全局最优决策树。这个问题可以通过集成学习来训练多棵决策树来缓解,这多棵决策树一般通过对特征和样本有放回的随机采样来生成。
- 有些概念很难被决策树学习到,因为决策树很难清楚的表述这些概念。例如XOR,奇偶或者复用器的问题。
- 如某些类在问题中占主导地位会使得创建的决策树有偏差。在拟合前需先对数据集进行平衡。