文章目录
https://blog.csdn.net/weixin_40604987/article/details/79296427
基础概念
决策树是一种基本的分类与回归方法,这里主要讨论分类树。
本章总结
决策树学习包含三个步骤:
- 特征选择(目的在于选择对训练数据能够分类的特征)
特征选择的关键是其准则,常用准则有:
a)样本集合D对特征A的 信息增益(ID3算法)
b)样本集合D对特征A的 信息增益比(C4.5算法)
c)样本集合D的 基尼指数(CART算法) - 决策树生成
通常使用信息增益最大,信息增益比最大,或者基尼指数最小作为特征选择的准则,从根节点开始,递归产生决策树。 - 决策树修剪
从已生成的树上减掉一些叶节点或子树,并将其父节点或根节点作为新的叶节点,从而简化决策树,防止过拟合。
第五章 决策树
1. 决策树模型与学习
- 分类决策树是对实例进行分类的树形结构,内部的节点代表着一个特征或者属性,叶节点代表一个类。
- 决策树模型学习的是一个与训练数据矛盾较小的决策树,同时具有很好的泛化能力。
- 决策树的损失函数通常是正则化的最大似然函数。
决策树学习过程:
- (特征选择)如果特征数量很多,在决策树开始学习的时候,需要对特征进行选择,留下对训练数据有足够分类能力的特征。
- (决策树生成)递归的选择最优特征,并根据该特征对训练数据进行分割,这一过程其实对应着特征空间的划分,直到所有训练数据子集都被分到叶节点上,或者没有合适的特征为止。
- (剪枝)上述方法生成的决策树可能对训练数据有很好的分类能力,但对未知的预测数据却未必有很好的分类能力,即可能会发生过拟合现象。因此需要对决策树进行自下而上的剪枝,将树变得简单,使其具有更好的泛化能力。
2. 特征选择
【特征选择的含义】:选择对训练数据有分类能力的特征。可以提高决策树的学习效率。
【特征选择的准则】:信息增益或信息增益比。
2.1 熵和条件熵
【熵】:熵越大,随机变量的不确定性越大。
熵是随机变量不确定性的度量,假设X是离散随机变量,概率分布为:
P
(
X
=
x
i
)
=
p
i
,
i
=
1
,
2
,
.
.
.
n
P(X=x_i)=p_i, i=1,2,...n
P(X=xi)=pi,i=1,2,...n
随机变量X的熵记为:
H
(
x
)
=
−
∑
i
=
1
n
p
i
l
o
g
p
i
H(x)=-\sum_{i=1}^np_ilogp_i
H(x)=−i=1∑npilogpi
由上式可知,熵只依赖于X的分布,而与X的取值无关(熵的定义式中只含
p
i
p_i
pi,不含
x
i
x_i
xi),因此,X的熵是概率分布p的函数,也可以将X的熵记为
H
(
p
)
=
−
∑
i
=
1
n
p
i
l
o
g
p
i
H(p)=-\sum_{i=1}^np_ilogp_i
H(p)=−∑i=1npilogpi
【条件熵】
含义:X、Y是随机变量,条件熵
H
(
Y
∣
X
)
H(Y|X)
H(Y∣X)表示在已知X的条件下,Y的不确定性。定义式:
P
(
Y
∣
X
)
=
∑
i
=
1
n
P
(
X
=
x
i
)
H
(
Y
∣
X
=
x
i
)
,
i
=
1
,
2
,
.
.
.
n
P(Y|X)=\sum_{i=1}^nP(X=x_i)H(Y|X=x_i), i=1,2,...n
P(Y∣X)=i=1∑nP(X=xi)H(Y∣X=xi),i=1,2,...n
当熵和经验熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵与条件熵分别称为经验熵和经验条件熵。
2.2 信息增益(information gain)
【信息增益定义:】
特征A对训练数据集D的信息增益
g
(
D
,
A
)
g(D,A)
g(D,A),定义为集合D的经验熵
H
(
D
)
H(D)
H(D)与特征A给定条件下D的经验条件熵
H
(
D
∣
A
)
H(D|A)
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)
特征A的信息增益,简单点理解就是说,在给定A特征之后,这个集合的不确定性降低了多少,这个差值就是A带来的效果。很显然,不同的特征带来的信息增益是不同的,信息增益大的特征具有更强的分类能力。
【信息增益的算法:】
输入:训练数据集D和特征A
输出:特征A对训练数据集D的信息增益
g
(
D
,
A
)
g(D,A)
g(D,A)
- 计算数据集D的经验熵
H
(
D
)
H(D)
H(D)
H ( D ) = − ∑ k = 1 K ∣ C k ∣ ∣ D ∣ l o g 2 ∣ C k ∣ ∣ D ∣ H(D)=-\sum_{k=1}^K\frac{|C_k|}{|D|}log_2\frac{|C_k|}{|D|} H(D)=−k=1∑K∣D∣∣Ck∣log2∣D∣∣Ck∣ - 计算特征A对数据集D的经验条件熵
H
(
D
∣
A
)
H(D|A)
H(D∣A)
H ( D ∣ A ) = ∑ i = 1 n ∣ D i ∣ ∣ D ∣ H ( D i ) = − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ ∑ k = 1 K ∣ D i k ∣ ∣ D i ∣ l o g 2 ∣ C i k ∣ ∣ D i ∣ H(D|A)=\sum_{i=1}^n\frac{|D_i|}{|D|}H(D_i) = -\sum_{i=1}^n\frac{|D_i|}{|D|}\sum_{k=1}^K\frac{|D_{ik}|}{|D_i|}log_2\frac{|C_{ik}|}{|D_i|} H(D∣A)=i=1∑n∣D∣∣Di∣H(Di)=−i=1∑n∣D∣∣Di∣k=1∑K∣Di∣∣Dik∣log2∣Di∣∣Cik∣ - 计算信息增益
g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D,A)=H(D)-H(D|A) g(D,A)=H(D)−H(D∣A)
2.3 信息增益比(information gain ratio)
以信息增益作为划分训练数据集的特征,存在偏向于选择取值较多的特征的问题,使用信息增益比可以对这一问题进行校正。
【信息增益比的定义:】
特征A对训练数据集D的信息增益比
g
R
(
D
,
A
)
g_R(D,A)
gR(D,A),定义为其信息增益
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
)
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_{i=1}^n\frac{|D_i|}{|D|}log_2\frac{|D_i|}{|D|}
HA(D)=−∑i=1n∣D∣∣Di∣log2∣D∣∣Di∣,n是特征A取值的个数。
3. 决策树的生成
3.1 ID3算法——信息增益
在决策树各个节点上应用信息增益准则选择特征,递归地构建决策树。
3.2 C4.5算法——信息增益比
与ID3算法的区别是,生成决策树时,用信息增益比来选择特征。
4. 决策树的剪枝
决策树生成算法递归的产生决策树,直到不能继续下去为止,这样的树很容易过拟合,因此要剪枝,从已生成的树上裁掉一些子树或叶节点,并将其根节点或父节点作为新的叶节点,从而简化分类树模型。
剪枝的具体方法是——极小化决策树的损失函数:
C
α
=
C
(
T
)
+
α
∣
T
∣
C_\alpha=C(T)+\alpha|T|
Cα=C(T)+α∣T∣
其中,
C
(
T
)
C(T)
C(T)表示模型对训练数据的预测误差,即模型对训练数据的拟合程度,
∣
T
∣
|T|
∣T∣表示模型复杂度,
α
≥
0
\alpha\ge0
α≥0控制二者的权重因子,较大的
α
\alpha
α促使选择较简单的模型,较小的
α
\alpha
α促使选择较负责的模型。
剪枝,就是当
α
\alpha
α确定时,选择损失函数最小的模型。
5. CART算法——Gini指数
分类与回归树(classification and rgression tree,CART)模型,可以用于分类和回归。步骤:1. 决策树生成。 2. 剪枝
5.0 基尼指数的定义
样本集合D的基尼指数为:
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
这里,
C
k
C_k
Ck是D中属于第k类的样本子集,K是类的个数。
特征A条件下,样本集合D的基尼指数:
G
i
n
i
(
D
,
A
)
=
∣
D
1
∣
∣
D
∣
G
i
n
i
(
D
1
)
+
∣
D
2
∣
∣
D
∣
G
i
n
i
(
D
2
)
Gini(D,A)=\frac{|D_1|}{|D|}Gini(D_1)+\frac{|D_2|}{|D|}Gini(D_2)
Gini(D,A)=∣D∣∣D1∣Gini(D1)+∣D∣∣D2∣Gini(D2)
5.1 CART生成
回归树——平方误差最小准则
分类树——基尼指数(Gini index)最小化准则来进行特征选择,生成二叉树。
【回归树的生成】
十分详细 https://blog.csdn.net/weixin_40604987/article/details/79296427
回归树总体流程类似于分类树,分枝时穷举每一个特征的每一个阈值,来寻找最优切分特征j和最优切分点s,衡量的方法是平方误差最小化。分枝直到达到预设的终止条件(如叶子个数上限)就停止。
【分类树的生成】
采用基尼指数来进行特征选择,基尼指数表示集合的不确定性,基尼指数越大,样本集合的不确定性越大,这一点与熵相似。
构建CART分类树的步骤:
- 对于给定的样本集合D,计算现有特征对该数据集的基尼指数。
对每个特征A,对其可能取的每个值a,根据样本点对A=a的测试为“是”或“否”将D分割成 D 1 D_1 D1和 D 2 D_2 D2两部分,利用下式计算A=a时的基尼指数:
G i n i ( D , A ) = ∣ D 1 ∣ ∣ D ∣ G i n i ( D 1 ) + ∣ D 2 ∣ ∣ D ∣ G i n i ( D 2 ) Gini(D,A)=\frac{|D_1|}{|D|}Gini(D_1)+\frac{|D_2|}{|D|}Gini(D_2) Gini(D,A)=∣D∣∣D1∣Gini(D1)+∣D∣∣D2∣Gini(D2) - 选择基尼指数最小的特征及其对应的切分点作为最优特征与最优切分点。从现节点生成两个子节点,将训练数据集分配到这两个子节点中去。
- 对两个子节点递归调用前两步,直至满足停止条件。
- 生成CART决策树。
5.2 CART剪枝
还是刚刚的损失函数:
C
α
=
C
(
T
)
+
α
∣
T
∣
C_\alpha=C(T)+\alpha|T|
Cα=C(T)+α∣T∣
其中,T为任意子树,
C
(
T
)
C(T)
C(T)表示模型对训练数据的预测误差,
∣
T
∣
|T|
∣T∣为子树的叶节点个数,
α
≥
0
\alpha\ge0
α≥0是参数,权衡训练数据的拟合程度与模型的复杂度。
对固定的
α
\alpha
α,一定存在使损失函数最小的子树,即最优子树,最优子树是唯一的。当
α
\alpha
α大的时候,最优子树偏小,当
α
\alpha
α小的时候,最优子树偏大。
算法步骤: