kl距离 java_信息量、熵、最大熵、联合熵、条件熵、相对熵、互信息。
一直就对机器学习中各种XX熵的概念比较模糊,现在总结一下自己的学习心得。
信息量
先说一下信息量的概念,其实熵就是信息量的集合。
摘抄个例子:
英文有26个字母,假设每个字母出现的概率是一样的,每个字母的信息量就是 - log2 1/26 = 4.7(这就是个公式,现在不懂先不用管);常用的汉字有2500个,每个汉字的信息量是 - log2 1/2500 =11.3。所以在信息量相同的情况下,使用的汉字要比英文字母要少——这其实就是十六进制和二进制的区别,在这个例子中,apple成了5位26进制的数值,信息量4.7 * 5 = 23.5;而苹果成为2位2500进制的数值,信息量11.3 * 2 = 22.6。虽然表示的方式不同,但信息量差不多(这是一个很巧合的例子,仅用于说明信息量的含义,大多数词语都不会这么接近)。
我的理解是,英文中需要用23.5的二进制定位一个单词,汉语中使用22.6个二进制定位一个单词。
信息量是对应一个事件的熵,若想衡量一个系统有多少信息量,就要用到熵的概念。
信息量就是不确定度,越是不能判断未来有多少可能,信息度就越大。
熵
熵是用来衡量一个系统混论程度的物理量,代表一个系统中蕴含多少信息量,信息量越大表明一个系统不确定性就越大,就存在越多的可能性。
熵(entropy)就用来衡量整个系统的总体信息量,其计算公式如下
至于这个公式怎么导出的,比较麻烦,这里可以直观的理解一下。
熵是平均信息量,也可以理解为不确定性。例如进行决赛的巴西和南非,假设根据经验判断,巴西夺冠的几率是80%,南非夺冠的几率是20%,则谁能获得冠军的信息量就变为 - 0.8 * log2 0.8- 0.2 * log2 0.2 = 0.257 + 0.464 = 0.721,小于1 bit了。经验减少了判断所需的信息量,消除了不确定性。
而且通过计算可以发现,巴西夺冠的几率越高,计算出的熵就越小,即越是确定的情况,不确定性越小,信息量越少。如果巴西100%夺冠,那么熵是0,相当于没有任何信息。当两队几率都是50%最难判断,所熵达到最大值1。其实之前的 - log2 1/2= 1 bit 是简化了的计算过程,其结果也是通过熵的公式来计算的 - 0.5 * log2 0.5 - 0.5* log2 0.5 = 1 bit,计算信息量要综合考虑每种结果的可能性。
另一个会迷惑的问题是熵会大于1吗?答案当然是肯定的,刚刚计算的最大值为1bit,是因为最终的结果只有两种情况。在有四支球队的时候,其最大值就是 - 0.25 * log20.25 - 0.25 * log2 0.25 - 0.25 * log2 0.25 - 0.25 * log2 0.25 =2 bit,当四支球队夺冠概率不等的时候,熵会小于2 bit。
我记得有个公式可以计算最大熵,在哪里?
用处:决策树ID3和C4.5算法中,使用熵作为选择决策点的标准。
最大熵
就是在系统均衡的时候,系统的熵最大。
联合熵(KL距离,交叉熵)
我的理解,联合熵是为了导出条件熵和互信息的一个定义,
性质:
大于每个独立的熵
2个变量的联合熵大于或等于这2个变量中任一个的独立熵。
少于独立熵的和
2个变量的联合熵少于或等于2个变量的独立熵之和。这是次可加性的一个例子。该不等式有且只有在和均为统计独立的时候相等。
这表明,两个变量关联之后不确定性会增大,但是又由于相互有制约关系,不确定小于单独两个变量的不确定度之和。
条件熵
性质:
就是在事件X的前提下,事件Y的熵,
用处:决策树的特征选择,实际上使用的信息增益,就是用G(D,A)=H(Y)-H(Y|X)。可以看出在X的条件下,Y的不确定度下降了多少。
相对熵
也叫交叉熵。
相对熵越大,两个函数差异越大;反之,相对熵越小,两个函数差异越小。
用处:在聚类算法中,使用相对熵代替欧几里得距离,计算连个节点的相关度,据说效果不错。度量两个随机变量的差异性。
这幅图就是说,p分布和q分布共有的部分相对熵就是正的,非共有部分就是负的,D(p||q)就是面积的求和。
互信息
了解Y的前提下,消除X的不确定度。(注意和链式法则不一样)
相关文章:
只是概念性的描述,无法看出这几种熵之间的联系和用处,所以自己写一篇。
总结
以上是生活随笔为你收集整理的kl距离 java_信息量、熵、最大熵、联合熵、条件熵、相对熵、互信息。的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: jsp mysql utf-8 中文乱码
- 下一篇: java 空间复杂度_时间复杂度和空间复