Datawhale-集成学习-学习笔记Day3-决策树与随机森林
1. 决策树
决策树,一种基本的分类与回归方法。个人认为,决策树更加广泛的应用于分类任务中。顾名思义,决策树是一种树形的模型,它基于特征对实例进行分类。决策树的好处是具有非常高的可读性,我们可以把它当成一些if-then规则的集合。
一般来说,决策树的训练包括以下三个步骤:
- 特征的选择
- 决策树的生成
- 决策树的修剪
2. 特征选择与信息增益
决策树的本质就是从训练集中归纳出一组分类规则。我们根据训练集一次进行一个特征的选择,直到最后的树可以满足整个训练集。但是,在对于一个训练集,往往我们可以找到很多个满足条件的树,这些决策树都可以很好的对训练集进行分类。而我们的目的是希望最优得出的决策树可以对未知的实例进行分类,这就需要得到的模型具有很好的泛化能力。我们可以使用正则化的极大似然函数作为决策树学习的损失函数,这样决策树的学习过程就可以转化为选择最优的决策树问题。
但是,如果在所有符合条件的决策树中选择最优的决策树,这完全是一个NP难问题。所以,决策树的学习算法往往是递归的选择最优的特征,并且根据该特征对数据集进行分割。在重复的进行上述过程,直到所有的子数据都归为一类。
2.1 特征选择
什么是特征选择?其本质上就是选择对数据集具有分类能力的特征。那么如何评价一个特征是否具有分类能力呢?通常情况下,我们使用信息增益或者信息增益比来判断一个特征是否有分类能力。
2.2 信息增益
为了说明信息增益,我们首先要先给出熵和条件熵的概念。
在信息论中,我们定义熵来表示变量的不确定性,也可以说是变量的混乱程度。假设X是一个取有限个值的离散随机变量,可以记其概率分布为:
P
(
X
=
x
i
)
=
p
i
,
i
=
1
,
2
,
3
,
…
,
n
P(X=x_i) = p_i,i=1,2,3,…,n
P(X=xi)=pi,i=1,2,3,…,n
而随机变量X的熵定义为:
H
(
X
)
=
−
∑
i
=
1
n
p
i
log
p
i
H(X) = -\sum_{i=1}^np_i\log p_i
H(X)=−i=1∑npilogpi
特别的我们定义若
p
i
=
0
p_i=0
pi=0,则
p
i
log
p
i
=
0
p_i\log p_i=0
pilogpi=0。如果对数以2为底,则熵的单位为比特,如果以e为底则熵的党委为纳特。
根据定义我们可以看出,H(X)的值与X的值是没有关系的,只与x的概率分布有关系。同时,熵越大,也代表着数据的混乱程度越大,随机变量的不确定性也就越大。
根据对数的定义我们还可以得出:熵的最大值为 log n \log n logn。
证明:当概率均等的时候信息熵最大,即
p
i
=
1
/
n
p_i = 1/n
pi=1/n时,
H
m
a
x
=
log
n
H_{max}=\log n
Hmax=logn。我们可以通过以n=2时证明:
z
=
−
[
p
log
p
+
(
1
−
p
)
log
(
1
−
p
)
]
z = -[p\log p + (1-p)\log(1-p)]
z=−[plogp+(1−p)log(1−p)]
对p进行求导:
z
′
=
−
log
p
+
1
+
[
−
l
o
g
(
1
−
p
)
]
−
[
(
1
−
p
)
/
(
1
−
p
)
]
z'=-{\log p + 1 + [-log(1-p)] - [(1 - p)/(1 - p)]}
z′=−logp+1+[−log(1−p)]−[(1−p)/(1−p)]
z ′ = log [ ( 1 − p ) / p ] z' = \log[(1 - p)/p] z′=log[(1−p)/p]
因此,当 p = 1 − p p = 1 - p p=1−p时,z取极值,带入值可知此时取得最大值。
我们可以得知,当概率分布越均匀的话,信息熵越大。
然后我们介绍一下条件熵。设有联合概率分布(X, Y),其联合概率分布为:
P
(
X
=
x
i
,
Y
=
y
j
)
=
p
i
j
,
i
=
1
,
2
,
3...
n
;
j
=
1
,
2
,
3...
m
P(X=x_i,Y=y_j)=p_{ij},i=1,2,3...n;j=1,2,3...m
P(X=xi,Y=yj)=pij,i=1,2,3...n;j=1,2,3...m
条件熵
H
(
Y
∣
X
)
H(Y|X)
H(Y∣X)表示在已知X的情况下Y的不确定性,定义为:
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=1∑npiH(Y∣X=xi)
知道着熵和条件熵后,我们就可以着手进行计算信息增益了。什么是信息增益,根据字面意思理解,就是知道了该特征X后,我们的类Y的信息不确定性减少的程度。可以这样定义,特征A对数据集D的信息增益为g(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)
当信息增益越大的时候,我们可以说这个特征有更强的分类能力。
2.3 使用信息增益来进行特征选择
在知道了信息增益后,通过递归每次选择信息增益最大特征,直到我们的子类中的所有实例都属于一类。这样就可以完成了一个决策树的生成。
但是,有时可能不会那么正好的就出现子类中所有的类都属于一类的情况。我们可以设置一个阈值,当最大的信息增益小于此阈值的时候,就假设次子类没有再向下分类的必要了。我们就可以选择子类中实例最多的类作为子类的标签。这也就是ID3算法。
3. 与bagging结合的决策树算法——随机森林
第一此见到随机森林的时候我以为这个随机是随机选择特征的意思。实际上并不是如此,随机森林的随机是随机选择样本集的意思。在上次的笔记中说过,bagging对受样本扰动较大的模型效果更好,在决策树上使用bagging往往可以得到很好的效果,这就是随机森林算法。可以通过每次选择一个不同的样本集生成决策树,再获取最多的分类结果,以此来提高模型的鲁棒性。