学习笔记,大佬勿喷
2.1 概述
决策树(decision tree): 是一个分类与回归的算法,在分类问题中,表示基于特征对实例进行分类的过程,可以认为是if-then的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。如下为是否喜欢打篮球的分类决策树:
决策树算法以树状结构表示实例分类的结果,每个决策点实行一个具有离散输出的测试函数记为分支,其组成如下;
- 根结点
- 非叶子结点(决策点):代表对实例特征的测试条件
- 分支:代表每一个测试的结果
- 叶子结点:代表决策树分类后所得的分类标记
决策树通常有三个步骤:特征选择、决策树的生成、决策树的修剪。
-
决策树学习的目标:根据给定的训练数据集构建一个决策树模型,使它能够对实例进行正确的分类。
-
决策树学习的本质:从训练集中归纳出一组分类规则,或者说是由训练数据集估计条件概率模型。
-
决策树学习的损失函数:正则化的极大似然函数
-
决策树学习的测试:最小化损失函数
-
决策树学习的目标:在损失函数的意义下,选择最优决策树的问题。
-
决策树原理和问答猜测结果游戏相似,根据一系列数据,然后给出游戏的答案。
2.2 信息熵
2.2.1 熵与Gini系数
在化学中熵代表分子的混乱程度,同时解释就是当前的一个东西的纯度。信息熵
H
(
X
)
H(X)
H(X) 就代表一个随机变量
X
X
X 发生的不确定性,如
如
下
有
6
次
实
验
中
随
机
变
量
A
、
B
的
取
值
A
=
{
1
,
2
,
3
,
4
,
5
,
6
}
B
=
{
1
,
1
,
1
,
1
,
2
,
2
}
A
的
混
乱
程
度
较
高
,
因
此
H
(
A
)
较
大
B
的
混
乱
程
度
较
低
,
因
此
H
(
B
)
较
小
如下有6次实验中随机变量A、B的取值 \\ A = \{1,2,3,4,5,6 \} \\ B = \{1,1,1,1,2,2 \} \\ A的混乱程度较高,因此H(A)较大\\ B的混乱程度较低,因此H(B)较小
如下有6次实验中随机变量A、B的取值A={1,2,3,4,5,6}B={1,1,1,1,2,2}A的混乱程度较高,因此H(A)较大B的混乱程度较低,因此H(B)较小
构造一个函数分布
I
(
X
)
=
−
l
n
(
p
(
X
)
)
I(X) = -ln(p(X))
I(X)=−ln(p(X)) ,将该分布的期望称之为熵:
H
(
X
)
=
∑
i
=
1
n
I
(
x
i
)
p
(
x
i
)
=
−
∑
i
=
1
n
p
(
x
i
)
l
n
(
p
(
x
i
)
)
一
个
事
件
x
i
的
可
能
性
越
低
I
(
x
i
)
取
值
越
大
如
果
一
个
随
机
变
量
的
不
确
定
性
很
高
,
那
么
其
中
可
发
生
事
件
的
可
能
性
都
很
低
这
时
I
(
X
)
的
期
望
必
定
很
大
H(X) = \sum^{n}_{i=1}I(x_i)p(x_i) = -\sum^{n}_{i=1}p(x_i)ln(p(x_i)) \\ 一个事件 x_i 的可能性越低 I(x_i)取值越大\\ 如果一个随机变量的不确定性很高,那么其中可发生事件的可能性都很低 \\ 这时I(X)的期望必定很大
H(X)=i=1∑nI(xi)p(xi)=−i=1∑np(xi)ln(p(xi))一个事件xi的可能性越低I(xi)取值越大如果一个随机变量的不确定性很高,那么其中可发生事件的可能性都很低这时I(X)的期望必定很大
除了熵之外,还可以用
G
i
n
i
系
数
Gini系数
Gini系数来达到检测随机变量纯度的目的:
G
i
n
i
(
X
)
=
∑
i
=
1
n
p
(
x
i
)
(
1
−
p
(
x
i
)
)
=
1
−
∑
i
=
1
n
p
(
x
i
)
2
Gini(X) = \sum^n_{i=1}p(x_i)(1-p(x_i)) = 1-\sum^n_{i=1}p(x_i)^2
Gini(X)=i=1∑np(xi)(1−p(xi))=1−i=1∑np(xi)2
2.2.2 信息增益
划分数据集的大原则是:将无序数据变得更加有序,但是各种方法都有各自的优缺点,信息论是量化处理信息的分支科学,在划分数据集前后信息发生的变化称为信息增益,获得信息增益最高的特征就是最好的选择。
条件熵:
H
(
Y
∣
X
)
H(Y|X)
H(Y∣X) 表示在一种随机变量划分X 的情况下随机变量Y的不确定性:
H
(
Y
∣
X
)
=
∑
i
=
1
n
p
(
x
i
)
H
(
Y
∣
X
=
x
i
)
H(Y|X) = \sum^{n}_{i=1}p(x_i)H(Y|X=x_i)
H(Y∣X)=i=1∑np(xi)H(Y∣X=xi)
信息增益:信息增益是相对于分支特征而言的。分支特征
A
A
A对训练数据集
D
D
D的信息增益
G
a
i
n
(
D
,
A
)
Gain(D,A)
Gain(D,A),定义为集合D的经验熵
H
(
D
)
H(D)
H(D)与分支
A
A
A给定条件下
D
D
D的经验条件熵
H
(
D
∣
A
)
H(D|A)
H(D∣A)之差,即:
G
a
i
n
(
D
,
A
)
=
H
(
D
)
−
H
(
D
∣
A
)
H
(
D
∣
A
)
=
p
(
a
i
)
H
(
D
1
)
+
p
(
a
2
)
H
(
D
2
)
+
.
.
.
+
p
(
a
n
)
H
(
D
n
)
H
(
D
i
)
=
H
(
D
∣
A
=
a
i
)
,
p
(
a
i
)
=
n
a
i
n
A
Gain(D,A) = H(D) - H(D|A) \\ H(D|A) = p(a_i)H(D_1)+p(a_2)H(D_2)+...+p(a_n)H(D_n) \\ H(D_i)=H(D|A=a_i),\ p(a_i)=\frac{n_{a_i}}{n_A}
Gain(D,A)=H(D)−H(D∣A)H(D∣A)=p(ai)H(D1)+p(a2)H(D2)+...+p(an)H(Dn)H(Di)=H(D∣A=ai), p(ai)=nAnai
实例如下:
数据集
X
X
X的信息熵为:
H
(
X
)
=
0.940
H(X) = 0.940
H(X)=0.940
在数据集经过outlook特征分支后,其条件熵如下:
H
(
X
∣
o
u
t
l
o
o
k
)
=
P
(
o
u
t
l
o
o
k
=
s
u
n
n
y
)
×
H
(
X
∣
o
u
t
l
o
o
k
=
s
u
n
n
y
)
+
P
(
o
u
t
l
o
o
k
=
o
v
e
r
c
a
s
t
)
×
H
(
X
∣
o
u
t
l
o
o
k
=
o
v
e
r
c
a
s
t
)
+
P
(
o
u
t
l
o
o
k
=
r
a
i
n
y
)
×
H
(
X
∣
o
u
t
l
o
o
k
=
r
a
i
n
y
)
H
(
X
∣
o
u
t
l
o
o
k
)
=
5
14
×
0.971
+
4
14
×
0
+
5
14
×
0.971
=
0.693
H(X|outlook) = \ P(outlook=sunny) \times H(X|outlook=sunny) \\ +\ P(outlook=overcast) \times H(X|outlook=overcast) \\ +\ P(outlook=rainy) \times H(X|outlook=rainy)\\ H(X|outlook) = \frac{5}{14}\times 0.971 +\frac{4}{14}\times 0 + \frac{5}{14}\times 0.971 = 0.693
H(X∣outlook)= P(outlook=sunny)×H(X∣outlook=sunny)+ P(outlook=overcast)×H(X∣outlook=overcast)+ P(outlook=rainy)×H(X∣outlook=rainy)H(X∣outlook)=145×0.971+144×0+145×0.971=0.693
故信息增熵为:
G
a
i
n
(
X
,
o
v
e
r
l
o
o
k
)
=
H
(
X
)
−
H
(
X
∣
o
v
e
r
l
o
o
k
)
=
0.940
−
0.693
=
0.247
Gain(X,overlook)=H(X)-H(X|overlook)=0.940-0.693=0.247
Gain(X,overlook)=H(X)−H(X∣overlook)=0.940−0.693=0.247
2.2.3 信息增益率
信息增益值的大小相对于训练数据集而言的,并没有绝对意义,在分类问题困难时,也就是说在训练数据集信息熵 H ( X ) H(X) H(X)较大的时候,信息增益值会偏大,反之信息增益值会偏小,使用信息增益比可以对这个问题进行校正,这是特征选择的另一个标准。
信息增益率:特征
A
A
A对训练数据集
D
D
D的信息增益率
G
a
i
n
R
(
D
,
A
)
Gain_R(D,A)
GainR(D,A)定义为其信息增益
G
a
i
n
(
D
,
A
)
Gain(D,A)
Gain(D,A) 与训练数据集
D
D
D的经验熵之比:
G
a
i
n
R
(
D
,
A
)
=
G
a
i
n
(
D
,
A
)
H
(
D
)
Gain_R(D,A) = \frac{Gain(D,A)}{H(D)}
GainR(D,A)=H(D)Gain(D,A)
2.3 决策树的构造
2.3.1 决策树的构造原理
1)分支特征的选择:
决策树构造思想,实际上就是利用贪心策略寻找最纯净的划分方法,这个最纯净在数学上叫纯度,纯度通俗点理解就是目标变量要分得足够开(y=1的和y=0的混到一起就会不纯)。纯度的另一面也即不纯度,不纯度的选取有多种方法,每种方法也就形成了不同的决策树方法,比如ID3算法使用信息增益作为不纯度;C4.5算法使用信息增益率作为不纯度;CART算法使用基尼系数作为不纯度。
2)分支特征分割点的确定(如何分裂数据):
如何分裂数据也即分裂准则是什么?依然是通过不纯度来分裂数据的,通过比较划分前后的不纯度值,来确定如何分裂。
2.3.2 决策树构造算法
1)ID3算法:
使用信息增益作为分裂的规则,信息增益越大,则选取该分裂规则。多分叉树。信息增益可以理解为,有了x以后对于标签p的不确定性的减少,减少的越多越好,即信息增益越大越好。
2)C4.5算法:
使用信息增益率作为分裂规则(需要用信息增益除以,该属性本身的熵),此方法避免了ID3算法中的归纳偏置问题,因为ID3算法会偏向于选择类别较多的属性(形成分支较多会导致信息增益大)。多分叉树。连续属性的分裂只能二分裂,离散属性的分裂可以多分裂,比较分裂前后信息增益率,选取信息增益率最大的。
3)CART算法:
既可以做分类,也可以做回归,只能形成二叉树。
对于分类树(目标变量为离散变量):使用基尼系数作为分裂规则。比较分裂前的 g i n i gini gini和分裂后的 g i n i gini gini减少多少,减少的越多,则选取该分裂规则,这里的求解方法只能是离散穷举。下面这个红绿球的例子很好的说明了,如何根据损失函数最小(也就是基尼系数最小)来选取分裂规则。最后GIINs2更小,因此选择它作为分类规则。
**对于回归树(目标变量为连续变量):**使用最小方差作为分裂规则。只能生成二叉树。
4)算法对比:
-
ID3的缺点,倾向于选择水平数量较多的变量,可能导致训练得到一个庞大且深度浅的树;另外输入变量必须是分类变量(连续变量必须离散化);最后无法处理空值。
-
C4.5选择了信息增益率替代信息增益。
-
CART以基尼系数替代熵;最小化不纯度而不是最大化信息增益。
-
CART与逻辑回归的比较:
2.3.3 决策树的剪枝
由于决策树的深度过高会导致过拟合,所以需要对决策树进行剪枝:
预剪枝: 在构建决策树的过程中,提前停止;
后减枝: 决策树构建好后,才开始减枝,对各结点的损失函数进行评价,决定是否剪枝。
可
定
义
损
失
函
数
为
:
C
α
(
T
)
=
C
(
T
)
+
α
∣
T
l
e
a
f
∣
,
叶
子
结
点
越
多
,
损
失
越
大
可定义损失函数为:\\ C_\alpha(T) = C(T) + \alpha|T_{leaf}|,叶子结点越多,损失越大
可定义损失函数为:Cα(T)=C(T)+α∣Tleaf∣,叶子结点越多,损失越大
2.4 随机森林
尽管有剪枝等等方法,一棵树的生成肯定还是不如多棵树,因此就有了随机森林,解决决策树泛化能力弱的缺点(可以理解成三个臭皮匠顶过诸葛亮)。
而同一批数据,用同样的算法只能产生一棵树,这时Bagging策略可以帮助我们产生不同的数据集。Bagging策略来源于bootstrap aggregation: 从样本集(假设样本集N个数据点)中重采样选出Nb个样本(有放回的采样,样本数据点个数仍然不变为N),在所有样本上,对这n个样本建立分类器( I D 3 , C 4.5 , C A R T , S V M , L O G I S T I C ID3,C4.5,CART,SVM,LOGISTIC ID3,C4.5,CART,SVM,LOGISTIC),重复以上两步m次,获得m个分类器,最后根据这m个分类器的投票结果,决定数据属于哪一类。
随机森林的运行机制如下:
-
样本的随机:从样本集中用Bootstrap随机选取n个样本
-
特征的随机:从所有属性中随机选取K个属性,选择最佳分割属性作为节点建立CART决策树(泛化的理解,这里面也可以是其他类型的分类器,比如SVM、Logistics)
-
重复以上两步m次,即建立了m棵CART决策树
-
这m个CART形成随机森林,通过投票表决结果,决定数据属于哪一类(投票机制有一票否决制、少数服从多数、加权多数)
参考文章
http://www.maiziedu.com/course/ml/