西瓜书第四章阅读笔记
1、基本概念
1.1 基本算法
决策树(decision tree) 是一种基于树结构进行决策的机器学习算法。从逻辑角度来看,决策树是许多“if-else”语句的组合;从几何角度出发,决策树就是基于某种准则划分特征空间。而其最终目的是尽可能地是样本分类越分越“纯”。
一般的,一棵决策树包含一个根结点、若干内部结点核若干叶结点;根结点包含样本全集,而叶结点对应于决策结果。其它每个结点对应于一个属性测试,结点中所包含的样本就是根据属性测试的结果划分而来的。从根结点到每个叶结点的路径对应于一个测试序列。
1.2 信息熵
信息熵(information entropy) 是度量样本集合纯度的一种常用指标。若当前样本集合D中第k类样本所占比例为
p
k
(
k
=
1
,
2
,
.
.
.
,
∣
Y
∣
)
p_k(k=1,2,...,| \mathcal{Y}|)
pk(k=1,2,...,∣Y∣),则集合D的信息熵定义如下:
E
n
t
(
D
)
=
−
∑
k
=
1
∣
Y
∣
p
k
log
b
p
k
(
b
可取值如
2
,
e
等
)
Ent(D)=-\sum_{k=1}^{|\mathcal{Y}|}p_k\log_bp_k \qquad(b可取值如2,e等)
Ent(D)=−k=1∑∣Y∣pklogbpk(b可取值如2,e等)
信息熵是**自信息
I
(
x
)
=
−
log
b
p
(
x
)
I(x)=-\log_bp(x)
I(x)=−logbp(x)** 的期望,能度量变量x的不确定性。
E
n
t
(
D
)
Ent(D)
Ent(D)的值越小,则D的纯度越高,不确定性越小。
1.3 信息增益
首先简单的给出条件熵的相关概念。条件熵讲的是在变量X给定的情况下,变量Y条件概率分布的信息熵关于X的期望,其度量的是已知随机变量X的条件下随机变量Y的不确定性。条件熵数学表达为:
E
n
t
(
Y
∣
X
)
=
∑
x
i
∈
X
p
(
x
)
E
n
t
(
Y
∣
X
=
x
i
)
Ent(Y|X)=\sum\limits_{x_i\in X}p(x)Ent(Y|X=x_i)
Ent(Y∣X)=xi∈X∑p(x)Ent(Y∣X=xi)。
接下来,假定离散属性a有
V
V
V个可能却只
a
1
,
a
2
,
.
.
.
,
a
V
{a^1,a^2,...,a^V}
a1,a2,...,aV,当采用a对集合D进行划分时,将数量
V
V
V个分支结点,其中第
v
v
v个分支结点包含D中所有属性a上所有取值为
a
v
a^v
av的样本,记为
D
v
D^v
Dv。根据信息熵的定义式可以得到
D
v
D^v
Dv的信息熵,考虑到不同分支结点所含样本的数量不一样,因此采用赋予权重
∣
D
v
∣
∣
D
∣
\frac{|D^v|}{|D|}
∣D∣∣Dv∣的方法。将各个分支结点的加权信息熵求和,其实得到的就是集合D在变量属性取
V
V
V中各个值后的总的信息熵:
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
E
n
t
(
D
v
)
\sum_{v=1}^{V}\frac{|D^v|}{|D|}Ent(D^v)
∑v=1V∣D∣∣Dv∣Ent(Dv),这其实也就是**集合D关于属性a的条件熵**。
所以,可计算用属性a划分样本集D进行划分所得的信息增益,也就是划分前后的信息熵之差:
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_{v=1}^{V}\frac{|D^v|}{|D|}Ent(D^v)
Gain(D,a)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(Dv)
信息增益值代表着在已知属性(特征)a的取值后D的不确定性减少量或纯度提升量,一般来说,信息增益值越大,获得的纯度提升也就越大,因此其可以作为决策树算法选择用来划分样本集的属性的依据。
2、ID3决策树
- 划分准则:信息增益
- 步骤:计算出样本集D对每个属性的信息增益,选择信息增益最大的属性作为划分属性来对集合中的样本进行划分。
3、C4.5决策树
- 产生背景 :信息增益准则对可取值数目较多的属性有所偏好(本质时每个取值中样本数量太少)。例如,倘若对于每个样本的有一个“编号”属性(编号不重复),则在计算各属性信息增益时,“编号”的信息增益往往会远大与其他属性,这样按“编号”划分后,每个结点仅包含一个样本,此时分支结点的纯度最大。但是这样的划分没有泛化能力,无法对新样本进行准确识别。
- 划分准则:增益率(gain_ratio)
定义为:
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)
其中
I
V
(
a
)
=
−
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
log
2
∣
D
v
∣
∣
D
∣
IV(a)=-\sum_{v=1}^{V}\frac{|D^v|}{|D|}\log_2\frac{|D^v|}{|D|}
IV(a)=−∑v=1V∣D∣∣Dv∣log2∣D∣∣Dv∣称为a的**“固有值”(intrinsic value)** ,当a的可能取值越多,V越大,IV(a)越大,一定程度上减小增益率。
- 步骤:由定义可以看出,与信息增益相反,增益率准则对可取值数目较少的属性有所偏好。所以C4.5决策树算法在增益率准则的基础上使用了启发式选择,即先从划分属性中找出信息增益高于平均水平的,在从中选择增益率高的。
4、CART决策树
- 划分准则:基尼指数(Gini index)
数据集D的基尼指数定义为:
G
i
n
i
(
D
)
=
∑
k
=
1
∣
Y
∣
∑
k
′
≠
k
p
k
p
k
′
≠
k
=
∑
k
=
1
∣
Y
∣
p
k
(
1
−
p
k
)
=
1
−
∑
k
=
1
∣
Y
∣
p
k
2
Gini(D)=\sum\limits_{k=1}^{|\mathcal Y|}\sum\limits_{k' \neq k}p_kp_{k' \neq k}=\sum\limits_{k=1}^{|\mathcal Y|}p_k(1-p_k)=1-\sum\limits_{k=1}^{|\mathcal Y|}{p_k}^2
Gini(D)=k=1∑∣Y∣k′=k∑pkpk′=k=k=1∑∣Y∣pk(1−pk)=1−k=1∑∣Y∣pk2,其反映了从样本集中随机抽取两个样本的类别标记不一致的概率。即
G
i
n
i
(
D
)
Gini(D)
Gini(D)值越小,数据集D纯度越高。
数据集D中属性a的基尼指数定义为:
G
i
n
i
_
i
n
d
e
x
(
D
,
a
)
=
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
G
i
n
i
(
D
v
)
Gini\_index(D,a)=\sum\limits_{v=1}^{V}\frac{|D^v|}{|D|}Gini(D^v)
Gini_index(D,a)=v=1∑V∣D∣∣Dv∣Gini(Dv)
- 步骤:在侯选属性集合A中,对使用每个属性划分后计算 G i n i _ i n d e x ( D , a ) Gini_index(D,a) Gini_index(D,a),选择最小的 G i n i _ i n d e x Gini_index Gini_index对应的属性a来划分集合D。
5、剪枝操作
剪枝(pruning) 是决策树算法缓解“过拟合”的主要手段,通过主动去掉一些分支来减少把训练集的一些特点当作所有数据都具有的一般性质情况的出现,有 “预剪枝”(prepruning) 和 “后剪枝”(postpruning) 两种基本策略。
- 预剪枝:在决策树生成过程中,对每个结点在划分前先进行估计,若其划分不能带来决策树泛化性能的提升,则不进行该划分操作,并将该结点标记为叶结点。
- 后剪枝:先在训练集上生成一颗完整的决策树,然后自底向上对每个非叶结点进行考察,若将该节点对应的子树替换为叶结点能带来决策树泛化性能的提升,则将该子树替换为叶结点。
- 预剪枝 vs 后剪枝:两者都在一定程度上减小了决策树过拟合的风险。预剪枝能显著减少决策树的训练时间开销和预测时间开销,但因为其基于“贪心”的本质禁止某些分支展开,可能造成欠拟合的风险。相较之下,在一般情况下,后剪枝决策树的欠拟合风险小,泛化性性能也更好,但训练时间开销则比未剪枝决策树和预剪枝决策树大得多。
6、连续与缺失值处理
- 连续值处理: 因为连续属性的取值个数是无限的,因此不能直接跟解决连续属性的可取值来对结点进行划分,要使用离散化技术对连续属性进行处理。 如C4.5决策树算法中采用的是 二分法(bi-partition) 来对连续属性进行处理。对于样本集D和连续属性a,假设a在D上出现了n个不同取值,按从小到大排序为 a 1 , a 2 , . . . a n {a^1,a^2,...a^n} a1,a2,...an。选择一个划分点 t ,将D分为子集 D t − 与 D t + D_t^-与D_t^+ Dt−与Dt+,其中 D t − D_t^- Dt−包含在属性a上值小于 t 的样本, D t + D_t^+ Dt+包含在属性a上值大于 t 的样本。
- 缺失值处理: 缺失值处理考虑的是现实中采集到的样本往往是不完整的,可能某些样本在某些属性上的值缺失,而简单的丢弃样本往往造成信息极大的浪费。 C4.5决策树算法中对于缺失值的处理的大体思路如下:首先每个样本x赋予一个权重wx,初始值为1.然后对于每个属性ai,分别计算出 ρ ρ ρ(无缺失值样本所占的比例), p k ~ \tilde{p_k} pk
(无缺失值样本中第k类样本所占的比例), r v ~ \tilde{r_v} rv(无缺失值样本中在属性a上取值为av的样本所占比例),然后在信息增益的计算中利用上述信息。而在给定属性划分样本时,若样本x在划分属性a上的取值已知,则将x划分入与其取值相对应的子结点,样本权重在子结点中保持为wx;若样本x在划分属性a上的取值未知,则将x同时划入所有子结点,并将样本权值wx调整为 r v ~ ⋅ \tilde{r_v} \cdot rv~⋅wx(也就是让同一个样本以不同的概率划入不同的子结点中)。
7、多变量决策树
d个属性构成一个d维空间,对样本分类意味着在这个坐标空间中寻找不同类样本之间的分类边界。而决策数所形成的分类边界的明显特点:轴平行(axis-parallel),即其分类边界由若干个与坐标轴平行的分段组成。
“多变量决策数”(multivariate decision tree) 使用斜的划分边界。该类决策树中,非叶节点不再是仅对某个属性,而是对属性的线性组合进行测试。学习过程中,不是为每一个非叶结点寻找一个最优划分属性,而是试图建立一个合适的线性分类器。
8、 补充
- 条件熵相关概念
- Datawhale决策树讲解视频
版权归原作者 狗狗熊学AI 所有, 如有侵权,请联系我们删除。