信息熵及衍生概念
信息量
首先明确一个概念,信息和质量、时间、长度等一样,也是一个物理概念,其最小单位是bit,也就是二进制一位所代表的信息大小。
时间过了5秒,代表着过了5个原子钟(世界上最准的那个)的一秒这么长的时间,即5*1=5。
那信息有3bit,就代表着抛三次硬币所能产生结果的信息大小,我们知道有 2 3 = 8 2^3=8 23=8种结果。
那么信息量的大小就能计算了,因为
3
=
l
o
g
2
8
3=log_28
3=log28。也就是说要计算信息量,我们只要知道有多少种结果就行了(等可能)。假设结果总数为N,则信息量公式为:
H
=
l
o
g
2
N
H=log_2N
H=log2N
信息熵
信息熵代表着某事件对某人而言不确定性的大小。而不确定性的大小跟信息量的大小是一回事儿。
比如做选择题,ABCD四个选项,小明完全不会这题,只能瞎猜,那么这题对于小明而言的信息熵为 l o g 2 4 = 2 log_24=2 log24=2,当有人告诉小明C是错的时,答案的不确定性减小了,这题的信息熵就变成了 l o g 2 3 = 1.585 log_23=1.585 log23=1.585。
当然目前所谈都是等可能的情况,一切的基础都是基于定义了投一次硬币的那个1比特信息,而那个1bit就是两种情况等可能。
如果一件事的概率是1/5,另一件事的概率是4/5呢?其实还是一样的,1/5可以看成5件事等可能,4/5可以看成1.25件事等可能发生。于是我们同样可以计算信息量
l
o
g
2
5
=
2.32
,
l
o
g
2
1.25
=
0.32
log_25=2.32,log_21.25=0.32
log25=2.32,log21.25=0.32,这样一来,信息量的公式就能更新为:
H
=
l
o
g
2
1
p
=
−
l
o
g
2
p
H=log_2\frac1p=-log_2p
H=log2p1=−log2p
信息熵是对于一个事件总体而言的,也就是把所有的信息量相加,信息量前面乘个概率就成了信息熵,事件X的信息熵即为:
H
(
X
)
=
−
∑
i
n
p
i
l
o
g
2
p
i
H(X)=-\sum_i^np_ilog_2p_i
H(X)=−i∑npilog2pi
条件熵
这个概念的定义类似于条件概率,在某特征的信息已知的情况下,某个事件的信息熵称为条件熵。记为 H ( X ∣ Y ) H(X|Y) H(X∣Y)。
假设特征Y有m中可能,则条件熵可定义为:
H
(
X
∣
Y
)
=
∑
j
m
p
j
H
(
X
∣
Y
=
j
)
H(X|Y) = \sum_j^mp_jH(X|Y=j)
H(X∣Y)=j∑mpjH(X∣Y=j)
信息增益
信息增益就是信息熵与条件熵的差。
一开始我们对某件事浑然不知,那么这件事的不确定性肯定最大;
后来我们知道了一些信息(比如C是错误答案),那么事情的不确定性就小了(所以条件熵一定小于信息熵)。
这个熵的减小同样可以看成是信息的增加。
g
(
X
,
Y
)
=
H
(
X
)
−
H
(
X
∣
Y
)
g(X,Y)=H(X)-H(X|Y)
g(X,Y)=H(X)−H(X∣Y)
信息增益比
ID3就是用信息增益来排列特征的优先级的,但是容易出问题,就是分叉多的特征他优先级太高,你分叉本来就多,信息熵本来就大,你一确定当然信息增益就大了,这不是欺负人嘛。
于是就有了C4.5。
不再按
g
(
X
,
Y
)
g(X,Y)
g(X,Y)来排序,而是用信息增益比
g
R
(
X
,
Y
)
g_R(X,Y)
gR(X,Y)来排序,
g
R
(
X
,
Y
)
g_R(X,Y)
gR(X,Y)的定义如下:
g
R
(
X
,
Y
)
=
g
(
X
,
Y
)
H
(
Y
)
g_R(X,Y)=\frac{g(X,Y)}{H(Y)}
gR(X,Y)=H(Y)g(X,Y)
这样就等于是用单位信息熵下的信息增益来排序,更加公平一些。