决策树简介
决策树作为一种基本的分类与回归方法,它由结点和有向边组成。结点有两种类型:
- 内部节点: 表示一个特征或属性;
- 叶子结点: 表示一个类别或者某个值。
决策过程
决策树是一种基于规则的方法,在树的每个决策节点处,根据判断结果进入一个分支,反复执行这项操作直至到达叶子结点,得到预测结果。而规则是通过训练得到的,而不是人工制定的。
划分属性选择
决策树学习的关键是如何选择最优划分属性。一般地,我们要求随着划分的进行,节点的纯度越来越高,即节点所包含的样本尽可能属于同一样本。
为此,下面我们引入度量样本集不纯度的指标:
1. 信息增益
假设当前样本集中第
k
k
k 类样本所占比例为
p
k
(
k
=
1
,
2
,
…
,
K
)
,
p_{k} \, (k = 1, 2, \ldots, K),
pk(k=1,2,…,K), 则
D
D
D 的信息熵定义为
Ent
(
D
)
=
−
∑
i
=
1
K
p
k
log
2
p
k
.
\text{Ent}(D) = -\sum_{i = 1}^{K} p_{k} \log_{2} p_{k}.
Ent(D)=−i=1∑Kpklog2pk.
信息熵的值越小,则
D
D
D 的纯度越高。
假定离散属性 a a a 有 V V V 个可能的取值 { a 1 , … , a ν } \{ a^{1}, \ldots, a^{\nu}\} {a1,…,aν},若使用 a a a 来对样本集进行划分, 则会产生 V V V 个分支节点, 其中第 ν \nu ν 个分支节点包含了 D D D 中所有在属性 a a a 上 取值为 a ν a^{\nu} aν 的样本, 记为 D ν D^{\nu} Dν.
接下来,定义用属性
a
a
a 对样本集划分所获得的信息增益
Gain
(
D
,
a
)
=
End
(
D
)
−
∑
ν
=
1
V
∣
D
ν
∣
∣
D
∣
Ent
(
D
ν
)
.
\text{Gain}(D, a) = \text{End}(D) - \sum_{\nu = 1}^{V} \frac{\left| D^{\nu} \right|}{\left| D \right|} \text{Ent}(D^{\nu}).
Gain(D,a)=End(D)−ν=1∑V∣D∣∣Dν∣Ent(Dν).
一般来说,信息增益越大,意味着用属性
a
a
a 来进行划分所获得的纯度提升越大。因此,我们可以用信息增益来进行决策树的划分属性选择,即
a
∗
=
arg
max
a
∈
A
Gain
(
D
,
a
)
.
a^{*} = \mathop{\arg \max}\limits_{a \in A} \text{Gain}(D, a).
a∗=a∈AargmaxGain(D,a).
2. 信息增益比
信息增益比(增益率)定义为
Gain_ratio
(
D
,
a
)
=
Gain
(
D
,
a
)
IV
(
a
)
,
\text{Gain\_ratio}(D, a) = \frac{\text{Gain}(D, a)}{\text{IV}(a)},
Gain_ratio(D,a)=IV(a)Gain(D,a),
其中
IV
(
a
)
=
−
∑
ν
=
1
V
∣
D
ν
∣
∣
D
∣
log
2
∣
D
ν
∣
∣
D
∣
\text{IV}(a) = -\sum_{\nu = 1}^{V} \frac{\vert D^{\nu} \vert}{ \vert D \vert} \log_{2} \frac{\vert D^{\nu} \vert}{ \vert D \vert}
IV(a)=−ν=1∑V∣D∣∣Dν∣log2∣D∣∣Dν∣
称为属性
a
a
a 的固有值。
3. 基尼指数
数据集
D
D
D 的不纯度可以用基尼值来度量
Gini
(
D
)
=
∑
k
=
1
K
∑
k
′
≠
k
p
k
p
k
′
=
1
−
∑
k
=
1
K
p
k
2
.
\begin{aligned} \text{Gini}(D) &= \sum_{k=1}^{K} \sum_{k' \ne k} p_{k}p_{k'} \\ &= 1 - \sum_{k=1}^{K}p_{k}^{2}. \end{aligned}
Gini(D)=k=1∑Kk′=k∑pkpk′=1−k=1∑Kpk2.
基尼值反映了从数据集中随机抽取两个样本,类别不一致的概率。
属性
a
a
a 的 Gini index 定义为
Gini_index
(
D
,
a
)
=
∑
ν
=
1
V
∣
D
ν
∣
∣
D
∣
Gini
(
D
ν
)
.
\text{Gini\_index}(D, a) = \sum_{\nu = 1}^{V} \frac{\vert D^{\nu} \vert}{ \vert D \vert} \text{Gini}(D^{\nu}).
Gini_index(D,a)=ν=1∑V∣D∣∣Dν∣Gini(Dν).
因此,最优划分属性为
a
∗
=
arg
min
a
∈
A
Gini_index
(
D
,
a
)
.
a^{*} = \mathop{\arg \min}\limits_{a \in A} \text{Gini\_index}(D, a).
a∗=a∈AargminGini_index(D,a).
剪枝处理
当决策树的结构过于复杂时,有可能会带来过拟合的问题。此时,要对决策树进行剪枝,剪掉某些节点。
决策树的剪枝算法分为
- 预剪枝:在树的训练过程中通过停止分裂来对树的规模进行限制,即边训练边剪枝。
- 后剪枝:先构造一颗完整的树,而后通过某种规则去掉部分节点。
后剪枝的典型实现:
- 降低错误剪枝( Reduced-Error Pruning, REP )
- 悲观错误剪枝( Pesimistic-Error Pruning, PEP )
- 代价-复杂度剪枝( Cost-Complexity Pruning, CCP)
三种典型的决策树学习算法的比较
算法 | 支持类型 | 划分属性的选择 | 连续值处理 | 缺失值处理 | 剪枝 |
---|---|---|---|---|---|
ID3 | 分类 | 信息增益 | 不支持 | 不支持 | 不支持 |
C4.5 | 分类 | 信息增益比 | 支持 | 支持 | 支持 |
CART | 分类与回归 | 基尼指数/均方差 | 支持 | 支持 | 支持 |