概述
决策树是一种基本的分类和回归方法。本次主要学习其中分类方法的应用。
决策树是一种树结构,包含内部结点、叶子结点。可以认为是if-then规则的集合。内部结点表示一个特征或属性,每个内部结点的分支代表其具体的特征值或属性值。叶子结点表示一个具体的类。
熵
在讲解决策树构建之前,先讲一下熵的概念。熵用来描述一个集合的混乱程度(就和我们在化学中提到的一样)。在信息论与概率统计中,熵表示随机变量不确定性的度量。给定一个取有限个值的离散随机变量X,则X的熵为H(X)。
H
(
X
)
=
−
∑
i
=
1
n
p
i
l
o
g
2
p
i
n
表
示
X
有
n
种
取
值
可
能
,
p
i
表
示
X
取
第
i
种
值
得
概
率
,
令
0
l
o
g
0
=
0
,
l
o
g
以
2
为
底
H(X) = - sum_{i=1}^{n}p_{i}log_{2}p_{i} \ n表示X有n种取值可能,p_{i}表示X取第i种值得概率,令0log0 = 0,log以2为底
H(X)=−i=1∑npilog2pin表示X有n种取值可能,pi表示X取第i种值得概率,令0log0=0,log以2为底
例:
集合X = {a,a,b,b,b}
p
1
=
2
/
5
=
0.4
,
p
2
=
3
/
5
=
0.6
,
H
(
X
)
=
−
0.4
l
o
g
2
0.4
−
0.6
l
o
g
2
0.6
p_{1} = 2/5=0.4,p_{2} = 3/5=0.6,H(X) = -0.4log_{2}0.4 - 0.6log_{2}0.6
p1=2/5=0.4,p2=3/5=0.6,H(X)=−0.4log20.4−0.6log20.6
在实际应用中,针对某个数据集D,H(D)的中D通常表示D中的分类结果。
熵越大,代表随机变量不确定性越大,集合混乱程度越高。
条件熵
条件熵H(Y|X)表示已知随机变量X的条件下,随机变量Y的不确定性。
H
(
Y
∣
X
)
=
∑
i
=
1
n
p
i
H
(
Y
∣
X
=
x
i
)
p
i
=
P
(
X
=
x
i
)
,
i
=
1
,
2
,
.
.
.
,
n
H(Y|X) = sum_{i=1}^{n}p_{i}H(Y|X = x_{i}) \ p_{i} = P(X=x_{i}), i=1,2,...,n
H(Y∣X)=i=1∑npiH(Y∣X=xi)pi=P(X=xi),i=1,2,...,n
在实际任务中,根据一个特征的不同特征值,可将原始训练集D切割成若干子集。
决策树构建
应用一个已经构建完成的决策树很容易,如何根据一个数据集构建其决策树呢?决策树中的内部结点放置顺序是否有什么规则要求呢?什么样的特征能作为根节点呢?
显然,如果某个特征对分类结果的影响因素(分类能力)较大,则将其放置在根结点或靠前的内部结点。 选取具有分类能力特征的过程称作特征选择。
如何量化一个特征的分类能力呢?具体方法有信息增益、信息增益比、基尼指数。
信息增益
特征A对训练集D的信息增益g(D,A),定义为集合的经验熵H(D)与特征A给定条件下D的经验条件熵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)
某个特征的信息增益越大,代表其分类能力越强。信息增益对应于ID3决策树生成算法。
信息增益比
特征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
)
H
A
(
D
)
=
−
∑
i
=
1
n
∣
D
i
∣
∣
D
∣
l
o
g
2
∣
D
i
∣
∣
D
∣
∣
D
∣
、
∣
D
i
∣
表
示
集
和
的
元
素
个
数
,
n
表
示
特
征
A
取
值
的
个
数
,
D
i
表
示
特
征
A
取
第
i
个
特
征
时
的
样
本
子
集
。
g_{R}(D,A) = frac{g(D,A)}{H_{A}(D)} \ H_{A}(D) = - sum_{i=1}^{n}frac{|D_{i}|}{|D|}log_{2}frac{|D_{i}|}{|D|} \ |D|、|D_{i}|表示集和的元素个数,n表示特征A取值的个数,D_{i}表示特征A取第i个特征时的样本子集。
gR(D,A)=HA(D)g(D,A)HA(D)=−i=1∑n∣D∣∣Di∣log2∣D∣∣Di∣∣D∣、∣Di∣表示集和的元素个数,n表示特征A取值的个数,Di表示特征A取第i个特征时的样本子集。
注意
H
(
D
)
、
H
(
D
∣
A
)
、
H
A
(
D
)
H(D)、H(D|A)、H_{A}(D)
H(D)、H(D∣A)、HA(D)的区别。
同理,某个特征的信息增益比越大代表其分类能力越强。
信息增益比对应于C4.5生成算法
基尼指数
对于给定样本集D,其基尼指数为:
G
i
n
i
(
D
)
=
1
−
∑
k
=
1
K
(
∣
C
k
∣
∣
D
∣
)
2
C
k
是
D
中
属
于
第
k
类
的
样
本
子
集
,
K
是
类
的
个
数
Gini(D) = 1 - sum_{k=1}^{K}(frac{|C_{k}|}{|D|})^{2} \ C_{k}是D中属于第k类的样本子集,K是类的个数
Gini(D)=1−k=1∑K(∣D∣∣Ck∣)2Ck是D中属于第k类的样本子集,K是类的个数
对于样本集D,已知其中一个特征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
)
D
1
和
D
2
表
示
A
是
否
取
某
一
可
能
值
a
被
分
割
成
的
两
部
分
。
当
A
的
可
能
取
值
种
类
大
于
n
>
2
时
,
则
G
i
n
i
(
D
,
A
)
要
计
算
n
次
,
取
其
中
最
小
值
代
表
整
个
G
(
D
,
A
)
Gini(D,A) = frac{|D_{1}|}{|D|}Gini(D_{1}) + frac{|D_{2}|}{|D|}Gini(D_{2}) \ D_{1}和D_{2}表示A是否取某一可能值a被分割成的两部分。 \ 当A的可能取值种类大于n>2时,则Gini(D,A)要计算n次, \ 取其中最小值代表整个G(D,A)
Gini(D,A)=∣D∣∣D1∣Gini(D1)+∣D∣∣D2∣Gini(D2)D1和D2表示A是否取某一可能值a被分割成的两部分。当A的可能取值种类大于n>2时,则Gini(D,A)要计算n次,取其中最小值代表整个G(D,A)
例:
假设特征A可取特征值a1,a2,a3;
则要计算:
G
i
n
i
(
D
,
A
=
a
1
)
G
i
n
i
(
D
,
A
=
a
2
)
G
i
n
i
(
D
,
A
=
a
3
)
Gini(D,A = a1) \ Gini(D,A = a2) \ Gini(D, A = a3)
Gini(D,A=a1)Gini(D,A=a2)Gini(D,A=a3)
其中Gini最小值为时的a为特征A的最优切分点。
在一个集合D中 ,若一个特征的基尼指数越小,表示其分类能力越强。
具体生成算法过程
ID3和C4.5的区别为,前者使用信息增益、后者采用信息增益比。
剪枝
由于生成的决策树可能发生过拟合问题,所以需要对其进行优化剪枝。往往是从已生成的树上减掉一些叶结点或叶结点以上的子树,并将其父节点作为新的叶结点,从而简化生成的决策树。具体剪枝算法过程… …
代码实践
主要通过机器学习库scikt-learn来实现。
from sklearn import tree ##决策树相关包
X = [[0,0],[1,1]] #训练集中的特征集 shape = (n_samples, n_features)
Y = [0,1] #对应特征的标签结合 len(Y) = n_samples
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X,Y) #根据训练集构建决策树
print(clf.predict([[2., 2.]])) #利用构建完成的决策树进行数据预测
###输出:[1]
当构建多值输出时,Y的shape为(n_samples,n_outputs),n_outputs表示每条样本对应n_outputs个输出值。
DecisionTreeClassifier类初始化参数意义
参考文献
1.李航《统计学习方法》第二版,第五章-------决策树。
最后
以上就是活力诺言为你收集整理的机器学习算法——决策树——学习总结的全部内容,希望文章能够帮你解决机器学习算法——决策树——学习总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复