2005年10月10日

信息熵的一个错误认识

昨天在和一位网友“一”交流的时候发现了自己以前的一个不完全正确的认识。
网友问信息熵会出现大于一的现象么?这时我一直记着以前在Tom Mitchell的Machine Learning上看到过的那个信息熵分布图(英文版第三章Figure 3.2,57页)。图上就是一个曲线,x从0到1,x在0和1时y都是1,而x是0.5时y是1。这个图在我的脑海中印象很深,所以我一直记着信息熵的分布范围在0~1之间。
网友问我
“我自己设的几个数据中,区间S1有6个数据,其中有3个属于第三类,2个属于第一类,1个属于第二类。那我算这个区间的信息熵:-(3/6×log2(3/6)+2/6×log2(2/6)+1/6log2(1/6)),这样算对吗?可是这样算出来的结果却大于1。不是我这样计算错了?还是我理解这个概率问题出错了?不可能啊,我看书上算熵也是这样算的啊。只是书上只有2类,我这里有3类。 ”

这时我用R计算了好几遍,结果都是大于一的。我在维基百科上找到了一个介绍。其中讲述了英文和中文中如果字符都是均匀分布的话出现的信息熵,英文是4.7中文是11.3。我根据其中的计算,推导出了信息熵在n类问题时分布范围是[0,log2(n)]的结论。这样对于两类问题,分布范围自然就是[0,1]了。

以上的分析帮助我纠正了我的关于信息熵的一个错误认识。在这里感谢网友“一”的提示。

联想起自己当初在实验室给大家讲述决策树的时候,我的slides中也出现了那个图片,但是我并没有给出是二元分布的情形,在这里向大家表示歉意。

感觉基本概念真是需要认认真真的认识透彻,任何细节都绝对不能含糊的。

没有评论: