要理解这两个概念,首先要分清楚三个定义:
数据集经验熵
特征对数据集的经验条件熵
数据集对特征值的熵
符号
A : 特 征 D : 训 练 样 本 ∣ D ∣ : 样 本 容 量 D i : 根 据 每 个 特 征 A 的 特 征 值 , 把 样 本 D 划 分 的 第 i 个 划 分 训 练 样 本 ∣ D i ∣ : 第 i 个 划 分 样 本 容 量 l a b e l : 样 本 标 签 列 C k : 样 本 标 签 是 第 k 类 , 相 当 于 通 过 标 签 列 , 把 D 做 了 K 个 划 分 ∣ C k ∣ : 第 k 类 的 样 本 个 数 D i k = D i ∩ C k A: 特征 \\ D: 训练样本 \\ |D|: 样本容量 \\ D_i: 根据每个特征 A 的特征值,把样本 D 划分的第 i 个划分训练样本 \\ |D_i|: 第 i 个划分样本容量 \\ label: 样本标签列 \\ C_k: 样本标签是第 k 类,相当于通过标签列,把 D 做了 K 个划分 \\ |C_k|:第 k 类的样本个数 \\ D_{ik} = D_i \cap C_k A:特征D:训练样本∣D∣:样本容量Di:根据每个特征A的特征值,把样本D划分的第i个划分训练样本∣Di∣:第i个划分样本容量label:样本标签列Ck:样本标签是第k类,相当于通过标签列,把D做了K个划分∣Ck∣:第k类的样本个数Dik=Di∩Ck
几个概念
数据集经验熵
H
(
D
)
=
−
∑
k
=
1
K
∣
C
k
∣
∣
D
∣
l
o
g
2
∣
C
k
∣
∣
D
∣
H(D) = -\sum_{k = 1}^K \frac{|C_k|}{|D|}log_2 \frac{|C_k|}{|D|}
H(D)=−k=1∑K∣D∣∣Ck∣log2∣D∣∣Ck∣
这里的
H
(
D
)
H(D)
H(D) 可以认为是按照
l
a
b
e
l
label
label 划分的熵
H
l
a
b
e
l
(
D
)
H_{label}(D)
Hlabel(D)
特征对数据集的经验条件熵
H
(
D
∣
A
)
=
∑
i
=
1
n
∣
D
i
∣
∣
D
∣
H
(
D
i
)
H(D|A) = \sum_{i=1}^n \frac{|D_i|}{|D|}H(D_i)
H(D∣A)=i=1∑n∣D∣∣Di∣H(Di)
其中
H
(
D
i
)
H(D_i)
H(Di)是按照特征
A
A
A划分之后的样本集,再按照
l
a
b
e
l
label
label进行划分的经验熵。那么:
H
(
D
∣
A
)
=
∑
i
=
1
n
∣
D
i
∣
∣
D
∣
H
(
D
i
)
=
∑
i
=
1
n
∣
D
i
∣
∣
D
∣
∗
(
−
∑
k
=
1
K
∣
D
i
k
∣
∣
D
i
∣
l
o
g
2
∣
D
i
k
∣
∣
D
i
∣
)
H(D|A) = \sum_{i=1}^n \frac{|D_i|}{|D|}H(D_i) = \sum_{i=1}^n \frac{|D_i|}{|D|} *(- \sum_{k = 1}^K \frac{|D_{ik}|}{|D_i|}log_2 \frac{|D_{ik}|}{|D_i|})
H(D∣A)=i=1∑n∣D∣∣Di∣H(Di)=i=1∑n∣D∣∣Di∣∗(−k=1∑K∣Di∣∣Dik∣log2∣Di∣∣Dik∣)
数据集对特征值的熵
H A ( D ) = − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ l o g 2 ∣ D i ∣ ∣ D ∣ H_A(D) = - \sum_{i=1}^n \frac{|D_i|}{|D|}log_2 \frac{|D_i|}{|D|} HA(D)=−i=1∑n∣D∣∣Di∣log2∣D∣∣Di∣
为什么要用信息增益比
信息增益:
g
(
D
,
A
)
=
H
(
D
)
−
H
(
D
∣
A
)
g(D, A) = H(D) - H(D|A)
g(D,A)=H(D)−H(D∣A)
信息增益比:
g
R
(
D
,
A
)
=
g
(
D
,
A
)
H
A
(
D
)
=
−
∑
k
=
1
K
∣
C
k
∣
∣
D
∣
l
o
g
2
∣
C
k
∣
∣
D
∣
−
∑
i
=
1
n
∣
D
i
∣
∣
D
∣
∗
(
−
∑
k
=
1
K
∣
D
i
k
∣
∣
D
i
∣
l
o
g
2
∣
D
i
k
∣
∣
D
i
∣
)
−
∑
i
=
1
n
∣
D
i
∣
∣
D
∣
l
o
g
2
∣
D
i
∣
∣
D
∣
g_R(D, A) = \frac{g(D,A)}{H_A(D)} \\= \frac{-\sum_{k = 1}^K \frac{|C_k|}{|D|}log_2 \frac{|C_k|}{|D|} - \sum_{i=1}^n \frac{|D_i|}{|D|} *(- \sum_{k = 1}^K \frac{|D_{ik}|}{|D_i|}log_2 \frac{|D_{ik}|}{|D_i|})}{- \sum_{i=1}^n \frac{|D_i|}{|D|}log_2 \frac{|D_i|}{|D|}}
gR(D,A)=HA(D)g(D,A)=−∑i=1n∣D∣∣Di∣log2∣D∣∣Di∣−∑k=1K∣D∣∣Ck∣log2∣D∣∣Ck∣−∑i=1n∣D∣∣Di∣∗(−∑k=1K∣Di∣∣Dik∣log2∣Di∣∣Dik∣)
我们来假设一种情况,当特征
A
A
A是连续型变量时,每一个值,都对应一个类别。
那么
∣
D
i
k
∣
=
∣
D
i
∣
|D_{ik}| = |{D_i}|
∣Dik∣=∣Di∣,导致
H
(
D
∣
A
)
=
0
H(D|A)=0
H(D∣A)=0,因为信息熵是大于零的,所以此时选择特征
A
A
A得到的信息熵最大
g
(
D
,
A
)
=
H
(
D
)
−
H
(
D
∣
A
)
=
H
(
D
)
−
0
=
H
(
D
)
g(D, A) = H(D) - H(D|A)=H(D) - 0=H(D)
g(D,A)=H(D)−H(D∣A)=H(D)−0=H(D),与此同时
H
A
(
D
)
H_A(D)
HA(D)会变得非常大。
从直觉上讲,如果特征连续,导致每个结点都只包含一种类别,确实把确定性调到了最大。但是,由于从上层结点引入了过多的分支,反而在整个系统中引入了不确定性。
所以,信息增益比,是对这种额外引入的不确定性的而一种校准。
参考
《统计学习方法》李航
https://www.zhihu.com/question/22928442