第四章 决策树
1 基本流程
如上图所示,决策树中包含两类节点,一类是内部结点(包括根结点),一类是叶子结点。内部结点表示决策条件,叶结点表示决策结果。构建决策树的伪代码如下。
递归三要素:
参数设置:输入训练集D和属性集A,输出决策树根结点;
终止条件:
(1)若当前结点的样本属于同一类
C
i
C_i
Ci,无需继续划分,将当前结点标记为叶结点,输出类别
C
i
C_i
Ci;
(2)若当前结点属性集为空,或者所有样本属性值相同,无法继续划分,将当前结点标记为叶结点,将当前结点所含样本最多的类别作为输出;这是利用当前结点的后验分布
P
(
C
i
∣
D
)
P(C_i| D)
P(Ci∣D);
(3)若当前结点样本集合为空,无法继续划分,将当前结点标记为叶结点,将当前节点的父结点所含样本最多的类别作为输出;这是利用父结点的样本分布作为自己的先验分布
P
(
C
i
)
P(C_i)
P(Ci);
单层逻辑:选择最优划分属性,将D划分为子集,将新的子集和属性集作为新的输入,递归;
2 划分选择
决策树学习的关键是选择最优划分属性,划分属性选择的越好,决策树性能越好。我们希望结点划分之后,子结点包含的样本都属于同一类别,即子结点的纯度越来越高。下面介绍三种算法,他们的主要区别是对纯度的定义不同。
2.1 ID3与信息增益
定义信息熵:
E
n
t
(
D
)
=
−
∑
k
=
1
∣
Y
∣
p
k
l
o
g
2
p
k
Ent(D) = - \sum\limits_{k = 1}^{|Y|}p_klog_2p_k
Ent(D)=−k=1∑∣Y∣pklog2pk;
p
k
p_k
pk表示第k类样本所占的比例;
在信息论中,信息熵表示信息的不确定性,信息熵越小,不确定性越小,纯度就越高;
定义信息增益
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\limits_{v = 1}^{|V|}\frac{|D^v|}{|D|}Ent(|D^v|)
Gain(D,a)=Ent(D)−v=1∑∣V∣∣D∣∣Dv∣Ent(∣Dv∣);表示选择属性a进行划分之后,不确定性减少的程度,也即纯度提高的程度。信息增益越大,划分属性a提高的纯度越多。ID3算法每次将信息增益最大的属性a作为划分属性。
2.2 C4.5与增益率
信息增益准测会对可取值数目较多的属性有偏好。a1属性有5个取值,a2属性有2个取值,信息增益会更偏好选择a1,仅仅是因为其可取值数目多而并非其最优。
为了减少可取值数目带来的影响,定义
I
V
(
a
)
=
−
∑
v
=
1
∣
V
∣
∣
D
v
∣
∣
D
∣
l
o
g
2
∣
D
v
∣
∣
D
∣
IV(a) = - \sum\limits_{v = 1}^{|V|}\frac{|D^v|}{|D|}log_2\frac{|D^v|}{|D|}
IV(a)=−v=1∑∣V∣∣D∣∣Dv∣log2∣D∣∣Dv∣,属性a的可取值越多,IV(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)}
Gainratio(D,a)=IV(a)Gain(D,a);C4.5算法每次将增益率最大的属性a作为划分属性,可在一定程度上减少可取值数目带来的不利影响。
2.3 CART与基尼指数
定义基尼指数
G
i
n
i
(
D
)
=
∑
k
=
1
∣
Y
∣
∑
k
′
!
=
k
p
k
p
k
′
Gini(D) = \sum\limits_{k = 1}^{|Y|}\sum\limits_{k' != k}p_kp_{k'}
Gini(D)=k=1∑∣Y∣k′!=k∑pkpk′,表示从数据集D中抽取两个样本,两个样本类别不一致的概率。基尼指数越小,不一致的概率越小,D纯度越高。
定义属性a的基尼指数$Gini_index(D, a) =
∑
v
=
1
∣
V
∣
∣
D
v
∣
D
G
i
n
i
(
D
v
)
\sum\limits_{v = 1}^{|V|}\frac{|D^v|}{D}Gini(D^v)
v=1∑∣V∣D∣Dv∣Gini(Dv),表示选择属性a划分之后数据集的基尼指数。** CART算法每次选择基尼指数最小的属性a作为划分属性**。
3 剪枝处理
剪枝处理是决策树避免过拟合的一种手段。剪枝处理可分为预剪枝和后剪枝。
3.1 预剪枝
预剪枝是在决策树生成过程中,对一个结点进行判断,如果对该结点划分可以提高决策树泛化能力,则进行划分;如若不能,则将该结点设为叶结点。决策树泛化能力是通过决策树在验证集上的表现来衡量。预剪枝在决策树生成时减少了许多分支的生成,减小了时间开销;但是有的后序划分可能会提高泛化能力的分支没有展开,可能会导致模型欠拟合。
3.2 后剪枝
后剪枝是在决策树生成之后,从下到上进行判断,如果该结点为叶结点可以提高泛化能力,则将该结点变为叶结点。后剪枝欠拟合风险较小。泛化能力较好,但是时间开销较大。
4 连续值与缺失值
4.1 连续值处理
当属性是连续值时,它的可选值是无限的。属性是离散值时,可选值是有限的。如连续属性密度,可选值是任意实数,离散属性有无房产,可选择是有或者无。对于连续属性,使用离散化,将无限可选值化为有限可选值。如连续属性密度,离散化为密度是否小于
a
i
a^i
ai,可选值只有小于和不小于。
若连续属性a在D中出现的值为
a
1
,
a
2
,
.
.
.
,
a
n
a^1, a^2, ..., a^n
a1,a2,...,an,则可以将其离散化为a是否小于
a
1
+
a
2
2
\frac {{a^1}+{ a^2}}{2}
2a1+a2,
a
2
+
a
3
2
\frac {a^2+ a^3}{2}
2a2+a3, … ,
a
n
−
1
+
a
n
2
\frac {a^{n - 1} + a^n}{2}
2an−1+an。
4.2 缺失值处理
当样本的某些属性值缺失的时候,需要解决两个问题:
(1)如何在属性值缺失的情况下进行属性划分;
(2)给定划分属性,如果样本在该属性上值缺失,该如何划分样本;
对于数据集D和属性a,第一个问题,使用D中属性a不缺失值的样本进行属性划分;第二个问题,划分之后,将属性a缺值的样本以不同概率划分到所有子结点中。具体过程参见周志华机器学习4.4节内容。
5 多变量决策树
多变量决策树和上面说的决策树有什么不同?上面的决策树都是单变量的,对于内部结点,根据
w
a
i
+
b
=
0
wa_i + b = 0
wai+b=0进行划分。这样划分出来的是直线划分,为了实现斜划分以及更复杂的划分,对于内部结点,需根据
∑
w
i
a
i
+
b
=
0
\sum w_ia_i + b = 0
∑wiai+b=0 进行划分。多变量决策树的生成过程不是寻找最优划分属性进行划分,而是学习参数w和b。
6 参考文献
周志华 机器学习 清华大学出版社
谢文睿、秦州 机器学习公式详解 人民邮电出版社
部分图片源自网络,如有侵权联系删除