几个概念
熵
在信息论里面,熵是对不确定性的测量。但是在信息世界,熵越高,则能传输越多的信息,熵越低,则意味着传输的信息越少。
1948年,香农引入了信息熵,将其定义为离散随机事件出现的概率,一个系统越是信息量低,信息熵就越低,反之一个系统越是信息量高,它的信息熵就越高。所以信息熵可以被认为是系统有序化程度的一个度量。
信息熵就是用来描述信息源(量)的不确定度,变量的不确定性越大(不确定性越大,其信息量也就越大),熵也就越大
H ( x ) = E [ l ( x i ) ] = E [ log ( 2 , 1 / P ( x i ) ) ] = − ∑ P ( x i ) log ( 2 , P ( x i ) ) ( i = 1 , 2 , . . n ) H(x)=E\left[l\left(x_{i}\right)\right]=E\left[\log \left(2,1 / P\left(x_{i}\right)\right)\right]=-\sum P\left(x_{i}\right) \log \left(2, P\left(x_{i}\right)\right)(i=1,2, . . n) H(x)=E[l(xi)]=E[log(2,1/P(xi))]=−∑P(xi)log(2,P(xi))(i=1,2,..n)
条件熵
H(Y|X) = H(X,Y)-H(X)
上图代表(x,y)发生所包含的熵
H(Y|X) = H(X,Y)-H(X)可以这么理解:
(x,y)发生所包含的熵,减去X单独发生所包含的熵,等于 在X发生的前提下,Y发生“新”带来的熵;上式定义为x发生前提下,Y的熵;
H(Y|X) = H(X,Y)-H(X)可以转化为下式子:
−
∑
x
⋅
y
p
(
x
,
y
)
log
p
(
x
,
y
)
+
∑
x
P
(
x
)
log
P
(
x
)
-\sum_{x \cdot y} p(x, y) \log p(x, y)+\sum_{x} P(x) \log P(x)
−x⋅y∑p(x,y)logp(x,y)+x∑P(x)logP(x)
=
−
∑
x
∈
X
∑
y
∈
Y
p
(
x
,
y
)
log
p
(
x
,
y
)
+
∑
x
∈
X
P
(
x
)
log
P
(
x
)
=-\sum_{x \in X} \sum_{y \in Y} p(x, y) \log p(x, y)+\sum_{x \in X} P(x) \log P(x)
=−x∈X∑y∈Y∑p(x,y)logp(x,y)+x∈X∑P(x)logP(x)
=
−
∑
x
,
y
P
(
x
,
y
)
log
P
(
x
,
y
)
+
∑
x
∈
X
∑
y
∈
Y
p
(
x
,
y
)
log
P
(
x
)
=-\sum_{x, y} P(x, y) \log P(x, y)+\sum_{x \in X} \sum_{y \in Y} p(x, y) \log P(x)
=−x,y∑P(x,y)logP(x,y)+x∈X∑y∈Y∑p(x,y)logP(x)
=
−
∑
x
,
y
P
(
x
,
y
)
log
P
(
x
,
y
)
+
∑
x
,
y
p
(
x
,
y
)
log
p
(
x
)
=-\sum_{x, y} P(x, y) \log P(x, y)+\sum_{x, y} p(x, y) \log p(x)
=−x,y∑P(x,y)logP(x,y)+x,y∑p(x,y)logp(x)
=
−
∑
x
,
y
p
(
x
,
y
)
log
p
(
x
,
y
)
p
(
x
)
=-\sum_{x, y} p(x, y) \log \frac{p(x, y)}{p(x)}
=−x,y∑p(x,y)logp(x)p(x,y)
=
−
∑
x
,
y
P
(
x
,
y
)
log
p
(
y
∣
x
)
=
H
(
Y
∣
X
)
=-\sum_{x, y} P(x, y) \log p(y | x) =H(Y|X)
=−∑x,yP(x,y)logp(y∣x)=H(Y∣X)
信息增益
预备知识
假设训练数据集为D,|D|表示样本个数,样本的总类别为K个(注意:这里不是样本总数!),
∣
C
k
∣
|C_k|
∣Ck∣(K=1,2,…K),为第k类的样本个数,有
∑
k
∣
C
k
∣
=
∣
D
∣
\sum_{k}\left|C_{k}\right|=|D|
∑k∣Ck∣=∣D∣;
设特征A有N个不同的取值
{
a
1
,
a
2
,
⋯
 
,
a
n
}
\left\{a_{1}, a_{2}, \cdots, a_{n}\right\}
{a1,a2,⋯,an}
根据A的特征取值将D划分为n个子集:
D
1
,
D
2
⋯
D
n
D_{1}, D_{2} \cdots D_{n}
D1,D2⋯Dn,
注意:这里的经验熵(信息熵)是和类相关的:
H
(
D
)
=
−
∑
k
=
1
K
∣
C
k
∣
∣
D
∣
log
2
∣
C
k
∣
∣
D
∣
H(D)=-\sum_{k=1}^{K} \frac{\left|C_{k}\right|}{|D|} \log _{2} \frac{\left|C_{k}\right|}{|D|}
H(D)=−∑k=1K∣D∣∣Ck∣log2∣D∣∣Ck∣,
∣
D
i
∣
\left|D_{i}\right|
∣Di∣为
D
i
D_{i}
Di的样本个数,且:
∑
i
∣
D
i
∣
=
∣
D
∣
\sum_{i}\left|D_{i}\right|=|D|
∑i∣Di∣=∣D∣,
记子集
D
i
D_{i}
Di中属于类
C
k
C_{k}
Ck的样本集合为
D
i
k
D_{i k}
Dik,即:
D
i
k
=
D
i
∩
C
k
D_{i k}=D_{i} \cap C_{k}
Dik=Di∩Ck,
∣
D
i
k
∣
\left|D_{i k}\right|
∣Dik∣为
D
i
k
D_{i k}
Dik的样本个数,
举个例子:
C
1
C_1
C1=9 (出去打网球 这种类别),
C
2
C_2
C2 = 5(不出去打网球 这种类别);
样本总数
∣
D
∣
|D|
∣D∣=14;
以天气这个特征(A)为例,A假设分为三类
{
a
1
,
a
2
,
a
3
}
\left\{a_{1}, a_{2}, a_{3}\right\}
{a1,a2,a3},分别对应{suny,overcast(阴天),windy},所对应的三个子集为
D
1
,
D
2
,
D
3
D_{1}, D_{2},D_{3}
D1,D2,D3,分别对应为5,4,5;
D
1
D_1
D1里面有些是出去打网球的,有些是不出去打网球的,
D
i
k
D_{i k}
Dik表示特征里面的第i这个子集当中k这个类别它的样本个数;
由上面的式子可以知道:
特征A对数据集D的经验条件熵
H
(
D
∣
A
)
H(D|A)
H(D∣A)为:(注意:这是与特征相关的!!!)
H
(
D
∣
A
)
=
−
∑
i
,
k
p
(
D
k
,
A
i
)
log
p
(
D
k
∣
A
i
)
H(D | A)=-\sum_{i, k} p\left(D_{k}, A_{i}\right) \log p\left(D_{k} | A_{i}\right)
H(D∣A)=−∑i,kp(Dk,Ai)logp(Dk∣Ai)
=
−
∑
i
,
k
p
(
A
i
)
p
(
D
k
∣
A
i
)
log
p
(
D
k
∣
A
i
)
=
−
∑
i
=
1
n
∑
k
=
1
K
p
(
A
i
)
p
(
D
k
∣
A
i
)
log
p
(
D
k
∣
A
i
)
=
−
∑
i
=
1
n
p
(
A
i
)
∑
k
=
1
K
p
(
D
k
∣
A
i
)
log
p
(
D
k
∣
A
i
)
=
−
∑
i
=
1
n
∣
D
i
∣
∣
D
∣
∑
k
=
1
K
∣
D
i
k
∣
∣
D
i
∣
log
∣
D
i
k
∣
∣
D
i
∣
\begin{array}{l}{=-\sum_{i, k} p\left(A_{i}\right) p\left(D_{k} | A_{i}\right) \log p\left(D_{k} | A_{i}\right)} \\ {=-\sum_{i=1}^{n} \sum_{k=1}^{K} p\left(A_{i}\right) p\left(D_{k} | A_{i}\right) \log p\left(D_{k} | A_{i}\right)} \\ {=-\sum_{i=1}^{n} p\left(A_{i}\right) \sum_{k=1}^{K} p\left(D_{k} | A_{i}\right) \log p\left(D_{k} | A_{i}\right)} \\ {=-\sum_{i=1}^{n} \frac{\left|D_{i}\right|}{|D |} \sum_{k=1}^{K} \frac{\left|D_{i k}\right|}{\left|D_{i}\right|} \log \frac{\left|D_{i k}\right|}{\left|D_{i}\right|}}\end{array}
=−∑i,kp(Ai)p(Dk∣Ai)logp(Dk∣Ai)=−∑i=1n∑k=1Kp(Ai)p(Dk∣Ai)logp(Dk∣Ai)=−∑i=1np(Ai)∑k=1Kp(Dk∣Ai)logp(Dk∣Ai)=−∑i=1n∣D∣∣Di∣∑k=1K∣Di∣∣Dik∣log∣Di∣∣Dik∣
信息增益:
g
(
D
,
A
)
=
H
(
D
)
−
H
(
D
∣
A
)
g(D,A) = H(D) - H(D|A)
g(D,A)=H(D)−H(D∣A)
- 总结:
打个比方, 总的样本数可以按照某个类别分为两类,A类9,B类5
另一方面,总的样本数可以按照某个特征可以分为3(分别为1,2,3类)类,分别为5,4,5
信息增益的理解
通过上面可以知道,信息熵是代表随机变量的复杂度(不确定度),条件熵代表在某一个条件下,随机变量的复杂度(不确定度),
而信息增益恰好是:信息熵-条件熵=H(Y)-H(Y|X)。
换句话说,信息增益代表了在一个条件下,信息复杂度(不确定性)减少的程度。
在决策树算法中,我们的关键就是每次选择一个特征,特征有多个,那么到底按照什么标准来选择哪一个特征。
这个问题就可以用信息增益来度量。如果选择一个特征后,信息增益最大(信息不确定性减少的程度最大),那么我们就选取这个特征。
信息增益率(C4.5)
g
R
(
D
,
A
)
=
g
(
D
,
A
)
H
A
(
D
)
g_{R}(D, A)=\frac{g(D, A)}{H_{A}(D)}
gR(D,A)=HA(D)g(D,A)
注意:其中的HA(D),对于样本集合D,将当前特征A作为随机变量(取值是特征A的各个特征值),求得的经验熵。
基尼系数(CART算法–分类树)
定义:基尼指数(基尼不纯度):表示在样本集合中一个随机选中的样本被分错的概率。
注意: Gini指数越小表示集合中被选中的样本被分错的概率越小,也就是说集合的纯度越高,反之,集合越不纯。
Gini
(
p
)
=
∑
k
=
1
K
p
k
(
1
−
p
k
)
=
1
−
∑
k
=
1
K
p
k
2
\operatorname{Gini}(\mathrm{p})=\sum_{k=1}^{K} p_{k}\left(1-p_{k}\right)=1-\sum_{k=1}^{K} p_{k}^{2}
Gini(p)=k=1∑Kpk(1−pk)=1−k=1∑Kpk2
说明:
-
pk表示选中的样本属于k类别的概率,则这个样本被分错的概率是(1-pk)
-
样本集合中有K个类别,一个随机选中的样本可以属于这k个类别中的任意一个,因而对类别就加和
-
当为二分类是,Gini§ = 2p(1-p)
以二分类为例,基尼系数指的是得到2次不同类别的概率!
决策树评价与剪枝
假设训练数据集为D,|D|表示样本个数,样本的总类别为K个(注意:这里不是样本总数!),
n
k
n_k
nk(K=1,2,…K),为第k类的样本个数,有
∑
k
∣
n
k
∣
=
∣
D
∣
\sum_{k}\left|n_{k}\right|=|D|
∑k∣nk∣=∣D∣;
叶子是分类结果的一个判断依据;(叶子节点没有子节点!!!如上图所示)
1.如果某类样本
n
j
=
n
n_{j}=n
nj=n,而
n
1
,
…
,
n
j
−
1
,
n
j
+
1
,
…
,
n
K
=
0
\mathrm{n}_{1}, \ldots, \mathrm{n}_{\mathrm{j}-1}, \mathrm{n}_{\mathrm{j}+1}, \ldots, \mathrm{n}_{\mathrm{K}}=0
n1,…,nj−1,nj+1,…,nK=0,此时该节点为“纯节点”(最终结果就是只有一类,样本全是这一类)
2.如果样本数目
n
1
=
n
2
=
…
=
n
k
=
n
/
K
\mathrm{n}_{1}=\mathrm{n}_{2}=\ldots=\mathrm{n}_{\mathrm{k}}=\mathrm{n} / \mathrm{K}
n1=n2=…=nk=n/K,称该样本为“均节点”;(此时不容易猜测类别)
3.对所有叶结点的熵求和,该值越小说明对样本的分类越精确;
各叶结点包含的样本数目不同,可使用样本数加权求熵和;
4.评价函数
C
(
T
)
=
∑
t
∈
l
e
a
f
N
t
⋅
H
(
t
)
C(T)=\sum_{t \in l e a f} N_{t} \cdot H(t)
C(T)=∑t∈leafNt⋅H(t)
其中,N(t)为当前结点的样本个数,H(t)为当前结点的熵
由于评价函数越小越好,所以又可以称之为“损失函数”
剪枝
预剪枝
1.事先给定一个结点包含多少个样本
2.给定书的高度
3.给定一个熵值
后剪枝
假设结点2的
N
2
N_2
N2=37,H(2)=0.900;
剪枝后的C(T):
C
(
T
)
=
c
(
r
)
+
α
∣
T
∣
=
37
∗
0.900
+
α
C(T)=c(r)+ \alpha|T|=37*0.900 + \alpha
C(T)=c(r)+α∣T∣=37∗0.900+α
剪枝后的|T|取1,叶子节点此时为1,即为它本身;
剪枝之前的C(T):
C
(
T
)
=
C
(
R
)
+
α
⋅
N
R
C(T)=C(R)+\alpha \cdot N_{R}
C(T)=C(R)+α⋅NR
N
R
N_R
NR为子树的叶结点个数,这里为以2结点为根结点的子树的结点个数;
其中C®:
C
(
R
)
=
∑
i
=
1
N
R
N
t
H
(
t
)
C(R)=\sum_{i=1}^{N_{R}} N_{t} H(t)
C(R)=∑i=1NRNtH(t)
注:以2结点为根结点的子树而言,这里的
N
R
N_R
NR=3;
N
t
N_t
Nt为这三个叶子节点中每个叶子节点所包含的样本数,H(t)可以计算出来或者已知;
如果C( r) = 10,C( R)=100,
α
\alpha
α = 10000,此时C( r)+
α
\alpha
α = 10010 (这个值比较小),
C
(
R
)
+
α
⋅
N
R
C(R)+\alpha \cdot N_{R}
C(R)+α⋅NR=140000+100
如果C( r) = 10,C( R)=1,
α
=
1
×
1
0
−
4
\alpha=1 \times 10^{-4}
α=1×10−4 ,此时C( r)+
α
\alpha
α =
10
+
1
×
1
0
−
4
10 + 1 \times 10^{-4}
10+1×10−4,
C
(
R
)
+
α
⋅
N
R
C(R)+\alpha \cdot N_{R}
C(R)+α⋅NR=
1
+
14
×
1
×
1
0
−
4
1 + 14 \times 1 \times 10^{-4}
1+14×1×10−4(这个值比较小)
C
(
r
)
+
α
=
C
(
R
)
+
N
R
⋅
α
C(r)+\alpha=C(R)+N_{R} \cdot \alpha
C(r)+α=C(R)+NR⋅α
α
=
C
(
r
)
−
C
(
R
)
N
R
−
1
\alpha=\frac{C(r)-C(R)}{N_{R}-1}
α=NR−1C(r)−C(R),
α
∈
(
0
,
+
∞
)
\alpha \in(0,+\infty)
α∈(0,+∞),上面这个式子成立时,其意义为:剪掉这个枝与不剪掉这个枝其损失值是一样的!
- 剪枝思路
由完全树T0开始,剪枝部分结点得到T1,再次剪枝得到T2…直到仅剩树根的树Tk;
在验证数据集上对这K个数分别评价,选择损失函数最小的树
T
α
T_{\alpha}
Tα
先剪掉最小的 α \alpha α,再减去次小的 α \alpha α所对应的子树;依次类推,最后直到根节点;