决策树是机器学习领域比较常见的算法,而信息熵在决策树的节点划分中具有重要作用。这里记录一下以便日后好复习。
在理解信息熵之前先理解信息量这个概念。
信息量的理解
信息量是信息的度量,就好像速度的度量是m/s、时间的度量是秒一样。举个简单例子理解一下:比如今天早上起床看新闻,知道美国总统特朗普得了重病(hhhh,开玩笑的!),这对大家来说都是大新闻,信息量就比较大,概率这么小的事件发生了,有点出乎意料,而如果新闻内容是特朗普又说了中国什么坏话,你可能觉得没什么(因为他经常说我们中国的坏话),这个信息量就比较小,这种事发生的概率很大,在意料之中。
总结一下上面的例子可以发现,信息量的大小和发生事件的概率成反比,发生事件的概率越大,信息量就越小,反之信息量就越大。那怎样用一个确定的数学公式来表示信息量呢?随着概率增大而结果变小的函数太多了,还有没有什么限制条件来确定这个函数呢?刚好就有一条。
我们都知道,当我们同时知道两条不相干的事件h(x)和h(y),那我们知道的信息量就是两个信息量的和:h=h(x)+h(y),比如今天早上,小明吃了早饭和小红做了作业,我们能知道的就是小明吃了早饭和小红做了作业这两个信息。但是这两者信息同时发生的概率却是:p=p(x)*p(y),因为这两件事是不相关的。可以看出h(x)一定是和p(x)的对数相关的(因为只有对数有这个性质)。
因此我们就能得到信息量的公式:
y
=
−
l
o
g
2
p
(
x
)
y=-log_{2}p(x)
y=−log2p(x)
负号是因为信息量y是正值,不可能为负值,所以要添加一个负号。底数为2是因为我们需要信息量满足低概率事件x对应于高的信息量。那么对数的选择是任意的。我们只是遵循信息论的普遍传统,使用2作为对数的底!
信息熵
前面我们已经知道了信息量的概念,信息量度量的是一个具体事件发生了所带来的信息,而熵则是在结果出来之前对可能产生的信息量的期望——考虑该随机变量的所有可能取值,即所有可能发生事件所带来的信息量的期望。因此信息熵的公式为:
H
(
x
)
=
−
∑
i
=
1
n
p
(
x
i
)
l
o
g
p
(
x
i
)
H(x)=-\sum_{i=1}^{n}p(x_{i})logp(x_{i})
H(x)=−i=1∑np(xi)logp(xi)
信息熵还可以作为一个系统复杂程度的度量,如果系统越复杂,出现不同情况的种类越多,那么他的信息熵是比较大的。
如果一个系统越简单,出现情况种类很少(极端情况为1种情况,那么对应概率为1,那么对应的信息熵为0),此时的信息熵较小。