学习笔记——信息熵

241 阅读3分钟

信息和熵

数据挖掘的本质是探索测量变量间的关系,在数据挖掘的开始就要关注如何评估并尽可能改进一个测量变量的信息量。

不同的信息价值不同,对于一个住在沙漠的人如果天气预报的信息是明天出太阳,现在这种信息的价值很低,如果天气预报的信息是明天下大雨,这种信息的价值就很高。

一条信息中都是你已经知道的事,那这条信息对于你的价值就很低,因此度量信息价值的一个方法就是测量信息中不确定消息的数量

假设你是一个将军,军队已经做好准备一旦进攻命令下达就会发起攻击,而现在你知道的只有接下来64天中的某一天命令会到达,并且假设到达的概率是均等的。你被告知第二天会收到一个二进制信息:yes表示今天进攻,no表示今天不进攻。第二天早上你在等待消息,你无法确定进攻的日期,它可能是接下来64天的任何一天,因此这种不确定性可以由6 bits来表示(log2(64)=6\log_2(64)=6)。

今天信息是yes的概率是164\frac{1}{64},则其信息可计算为log2(164)=6-\log_2(\frac{1}{64})=6,说明信息的价值和其出现的概率成反比

若收到了no的信息呢?这也不是安全没有价值的,这说明在接下来的63天中会有一天为yes,也就是:对于no的价值可计算为log26364-\log_2\frac{63}{64},约为0.023 bits,这里说明用bits可以将信息的价值量化为小数。

现在可以讨论对于一条消息的信息量的期望值,根据上例可知对于yes价值是6 bits,其出现的概率是164\frac{1}{64},对于no价值是0.023,其出现的概率是6364\frac{63}{64},则信息的期望值为:

6×164+0.023×6364=0.12  bits6\times \frac{1}{64} + 0.023 \times \frac{63}{64}=0.12\ \ bits

综上所述,可以给出信息价值的形式化定义:用X(X)X(X)表示所有可能信息的集合,xx是集合中的一个元素即xXx \in X,为一个随机变量值。用P(X=x)P(X=x)表示xx被观察到的概率,显然集合中所有元素被观察到的概率和为1,即 xXP(X=x)=1\sum_{x \in X} P(X=x)=1

之前说过一个特定消息的信息量可以表示是为log(p(x))\log(p(x)),期望值是所有元素的出现概率乘以元素值的和。XX所包含信息的期望值可以由下式表达:

H(X)=xXP(X=x)log2((P(X=x)))H(X)=-\sum_{x\in X}P(X=x)log_2((P(X=x)))

H(X)H(X)就称为XX的熵。

连续随机变量的信息熵

之前给出了有限的离散随机变量的信息熵计算法,对于连续随机变量也同样适用,只是单个元素的概率P(X=x)P(X=x)需要由概率密度函数f(X=x)f(X=x)来替换,得到:

H(X)=f(X=x)log(f(X=x))dxH(X)=-\int^\infty_{-\infty}f(X=x)log(f(X=x))dx

这种方法有几个问题:

  • 它的极限情况不是离散形式的极限,即二者不能完全等同
  • 它会收到缩放的影响,在现实中人们可能希望信息乘以一个常数其信息熵保持不变(同样的内容复制几倍也不会带来更多的信息)
  • 此外从样本中观测概率密度函数比观测出现次数难得多

因此应尽量避免使用连续随机变量的信息熵,比较明智的做法是通过一些方法将连续的随机变量转换为离散的随机变量。