熵用来度量一个事件、一个变量取值所含有的信息的量的大小。
出发点:一个低概率事件发生——背后信息大;反之亦然。比如,找人算1+1,等于2是很显然的,但是某人算出个3出来,那背后就有很大空间可以让我们想象了。
实施:既然信息量和概率(以及发生)有关,那就从事件发生的概率角度度量信息量;p(X)
设信息量用h(·)来表示
低概率事件信息量>高概率事件:所以h(·)与p(X)是个负相关关系
若两事件独立,则p(X,Y)=p(X)*p(Y),h(X,Y)应该等于h(X)+h(Y)。所以:h(p(X,Y)) 能变成h(p(X))+h(p(Y))。 What?! 让变量之间乘法变加法? 是什么函数?必然是log啊
轮廓: h(p(X)) 大约是log(p(X)) 的样子。
但是!要是负相关关系啊!要是单调减的啊!前面再来个负号吧!~
结果:h(x) = −log 2 p(X)
但是,如果是一个变量,这个变量取值多少呢(熵)?
质疑:具体到具体数据集的信息量?不知道概率还罢了。如果知道了概率(如通过训练样本得到),是否应该在测试集上,以训练集的概率,以及测试集事件发生概率结合,进行新的度量?比如Ptest(x)/Ptrain(x)进行估计?某种程度上可以反应我估计的特征之类的质量好坏?
或者训练集、测试集差别大小?
reference: PRML