信息熵的定义
热力学中的热熵是表示分子状态混乱程度的物理量。数学家香农用信息熵的概念来描述信源的不确定度,信息熵是来度量信息的不确定性的,熵越大,表示不确定性越高;熵越小,表示不确定性越低。不确定性是概率 p p p 的减函数,独立的两个信息的熵是可以相加的,对数函数同时满足这两个条件,设事件 A A A 有取值 a 1 a_1 a1, a 2 a_2 a2… a N a_N aN,对应的概率为 p 1 p_1 p1, p 2 p_2 p2,…, p N p_N pN,信息熵为事件各取值的期望,表达式如下
H ( A ) = ∑ i = 1 N p i l o g   p i H(A)=\sum_{i=1}^Np_ilog\,p_i H(A)=∑i=1Npilogpi
其中 p i = P ( A = a i ) p_i=P(A=a_i) pi=P(A=ai),表示取值为 a i a_i ai 的概率
熵的性质
- 非负性
- 对称性,关于 p = 0.5 p=0.5 p=0.5 对称
- 确定性,在 p = 1 p=1 p=1 和 p = 0 p=0 p=0 就是确定状态,此时非常确定,信息熵为0
- 极值性,熵表达式是关于 p p p 的上凸函数,在 p = 0.5 p=0.5 p=0.5 达到极大值,在 p = 0 p=0 p=0 和 p = 1 p=1 p=1 达到极小值0
条件信息熵的定义
条件
A
A
A ,可以取值
a
1
a_1
a1,
a
2
a_2
a2…
a
N
a_N
aN,对应的概率为
p
1
p_1
p1,
p
2
p_2
p2,
p
N
p_N
pN,
H
(
D
∣
A
=
a
i
)
H(D|A=a_i)
H(D∣A=ai) 表示在特征
A
A
A 取值为
a
i
a_i
ai 的情况下,数据集
D
(
A
=
A
i
)
D(A=Ai)
D(A=Ai) 的信息熵
H ( D ∣ A ) = ∑ i = 1 N p i H ( D ∣ A = a i ) H(D|A)=\sum_{i=1}^Np_iH(D|A=a_i) H(D∣A)=∑i=1NpiH(D∣A=ai)
信息增益
信息熵在机器学习中有一个重要的应用,决策树如何选择分裂叶节点时的参考指标就是分裂前后整体信息熵的变化量(信息增益)设样本数据集是 D D D ,整体的信息熵为 H ( D ) H(D) H(D),按照特征 A A A 的不同取值对数据集进行切分,假设 A A A 有 N N N 个取值 a 1 , a 2 , . . . , a N a_1,a_2,...,a_N a1,a2,...,aN 切分后信息熵为条件信息熵 H ( D ∣ A ) H(D|A) H(D∣A),信息增益的表示如下
g a i n ( D , A ) = H ( D ) − H ( D ∣ A ) gain(D,A)=H(D)-H(D|A) gain(D,A)=H(D)−H(D∣A)
其中 H ( D ∣ A ) = ∑ i N p ( A = a i ) H ( D ∣ A = a i ) = − ∑ i N p ( A = a i ) ∑ j K D j ∣ D ∣ l o g D j ∣ D ∣ H(D|A)=\sum_i^Np(A=a_i)H(D|A=a_i)=-\sum_i^Np(A=a_i)\sum_j^K\frac{D_j}{|D|}log\frac{D_j}{|D|} H(D∣A)=∑iNp(A=ai)H(D∣A=ai)=−∑iNp(A=ai)∑jK∣D∣Djlog∣D∣Dj
D j D_j Dj表示在 A = a i A=a_i A=ai的条件下分到类别 j j j 的数据集合
我们在选择特征进行分裂的时候,选择新信息增益最大的特征进行分裂,这样一次分裂最大程度的减少了整个数据集的不确定性
但是单纯使用信息增益作为评价标准,会倾向于取值较多的特征。有一个极端的例子:用户的ID特征,整个特征每个用户都不同,按照这个特征的取值去划分,会得到每个叶子节点都只有一个实例, H ( D ∣ A ) = 0 H(D|A)=0 H(D∣A)=0, g a i n = H ( D ) gain=H(D) gain=H(D)最大,但是这样划分是没有意义的,因此需要一个约束来解决这个情况,这就是信息增益率
g a i n _ r a t i o = g a i n ( D , A ) / H ( D ∣ A ) gain\_ratio=gain(D,A)/H(D|A) gain_ratio=gain(D,A)/H(D∣A)
基尼指数也是度量数据的不确定性,越均匀基尼指数越小,越无序表示基尼指数越大
G i n i ( D ) = 1 − ∑ i K p i 2 Gini(D)=1-\sum_i^Kp_i^2 Gini(D)=1−∑iKpi2
按照特征 A A A 的取值划分,划分后的基尼指数表示为
G i n i ( D , A ) = ∑ i N P ( A = a i ) G i n i ( D ∣ A = a i ) Gini(D,A)=\sum_i^NP(A=a_i)Gini(D|A=a_i) Gini(D,A)=∑iNP(A=ai)Gini(D∣A=ai)
划分节点的时候,不论是基尼指数还是信息熵,本质都是一样的