在概率论和信息论中,两个随机变量的互信息(Mutual Information,简称MI)或转移信息(transinformation)是变量间相互依赖性的量度。不同于相关系数,互信息并不局限于实值随机变量,它更加一般且决定着联合分布 p(X,Y) 和分解的边缘分布的乘积 p(X)p(Y) 的相似程度。互信息(Mutual Information)是度量两个事件集合之间的相关性(mutual dependence)。互信息最常用的单位是bit。

互信息的定义

正式地,两个离散随机变量 X 和 Y 的互信息可以定义为:

其中 p(x,y) 是 X 和 Y 的联合概率分布函数,而p(x)和p(y)分别是 X 和 Y 的边缘概率分布函数。

在连续随机变量的情形下,求和被替换成了二重定积分:

其中 p(x,y) 当前是 X 和 Y 的联合概率密度函数,而p(x)和p(y)分别是 X 和 Y 的边缘概率密度函数。

互信息量I(xi;yj)在联合概率空间P(XY)中的统计平均值。 平均互信息I(X;Y)克服了互信息量I(xi;yj)的随机性,成为一个确定的量。如果对数以 2 为基底,互信息的单位是bit。

直观上,互信息度量 X 和 Y 共享的信息:它度量知道这两个变量其中一个,对另一个不确定度减少的程度。例如,如果 X 和 Y 相互独立,则知道 X 不对 Y 提供任何信息,反之亦然,所以它们的互信息为零。在另一个极端,如果 X 是 Y 的一个确定性函数,且 Y 也是 X 的一个确定性函数,那么传递的所有信息被 X 和 Y 共享:知道 X 决定 Y 的值,反之亦然。因此,在此情形互信息与 Y(或 X)单独包含的不确定度相同,称作 Y(或 X)的熵。而且,这个互信息与 X 的熵和 Y 的熵相同。(这种情形的一个非常特殊的情况是当 X 和 Y 为相同随机变量时。)

互信息是 X 和 Y 联合分布相对于假定 X 和 Y 独立情况下的联合分布之间的内在依赖性。于是互信息以下面方式度量依赖性:I(X; Y) = 0 当且仅当 X 和 Y 为独立随机变量。从一个方向很容易看出:当 X 和 Y 独立时,p(x,y) = p(x) p(y),因此:

此外,互信息是非负的(即 I(X;Y) ≥ 0; 见下文),而且是对称的(即 I(X;Y) = I(Y;X))。

与其他量的关系

互信息又可以等价地表示成

其中H(X)和H(Y) 是边缘熵,H(X|Y)和H(Y|X)是条件熵,而H(X,Y)是X和Y的联合熵。注意到这组关系和并集、差集和交集的关系类似,用Venn图表示:

于是,在互信息定义的基础上使用琴生不等式,我们可以证明 I(X;Y) 是非负的,因此H(X)>=H(X|Y),这里我们给出 I(X;Y) = H(Y) – H(Y|X) 的详细推导:

上面其他性质的证明类似。

直观地说,如果把熵 H(Y) 看作一个随机变量不确定度的量度,那么 H(Y|X) 就是 X 没有涉及到的 Y 的部分的不确定度的量度。这就是“在 X 已知之后 Y 的剩余不确定度的量”,于是第一个等式的右边就可以读作“Y的不确定度,减去在 X 已知之后 Y 的剩余不确定度的量”,此式等价于“移除知道 X 后 Y 的不确定度的量”。这证实了互信息的直观意义为知道其中一个变量提供的另一个的信息量(即不确定度的减少量)。

注意到离散情形 H(X|X) = 0,于是 H(X) = I(X;X)。因此 I(X;X) ≥ I(X;Y),我们可以制定”一个变量至少包含其他任何变量可以提供的与它有关的信息“的基本原理。

python计算互信息_互信息公式及概述相关推荐

  1. 用python计算圆周率_用python计算圆周率π

    原博文 2020-03-22 15:32 − 用python计算圆周率π 一.要求 1.要起义能计算到圆周率后面越多位越好. 2.用进度条显示计算的进度,能给出越多种进度条越好. 3.要求给出圆周率π ...

  2. python计算方位角_实例讲解:用python 计算方位角(根据两点的坐标计算)记得收藏哦...

    今天为大家分享一篇python 计算方位角实例(根据两点的坐标计算),具有很好的参考价值,希望对大家有所帮助.一起来看看吧! 知道两点坐标,怎么计算两点方向的方位角? 答:首先计算坐标增量dx,dy( ...

  3. 用python计算准确率_分词结果准确率、召回率计算-python(示例代码)

    使用python计算分词结果的准确率,召回率和F值 测试文件output.txt格式如下: 团 B B 圆 E E 是 BE BE 春 B B 节 E E 千 B B 年 E E 不 B B 变 E ...

  4. 如何用python计算圆周率_如何用python计算圆周率?

    如何用python计算圆周率? python计算圆周率的方法: 圆周率没有精确的计算公式,所以只能用近似的方式计算它的近似值. 我们运用蒙特卡罗方法,思路很简单,在下面图形中随机抛置大量的点, 计算落 ...

  5. python计算方位角_[宜配屋]听图阁

    知道两点坐标,怎么计算两点方向的方位角? 答:首先计算坐标增量dx,dy(两个对应坐标分量相减,终点的减始点的). 若dx,dy中有一个为零时,根据另一个的正负决定方位角(0,90,180,270这四 ...

  6. python计算三角函数_使用Python三角函数公式计算三角形的夹角案例

    使用Python三角函数公式计算三角形的夹角案例 题目内容: 对于三角形,三边长分别为a, b, c,给定a和b之间的夹角C,则有:.编写程序,使得输入三角形的边a, b, c,可求得夹角C(角度值) ...

  7. python计算无穷级数求和常用公式_傅里叶变换(二) 从傅里叶级数到傅里叶变换...

    在上一部分当中,得到了利用三角函数表示周期函数的方法,但是对于非周期函数就...凉了.所以有什么办法吗?没办法(划掉).这时候我们就需要拿出来我们的黑科技--傅里叶变换. 一.傅里叶级数的推广 当然这 ...

  8. python计算无穷级数求和常用公式_无穷级数-从入门到火葬

    一篇自学级数的笔记,带你轻松入门. 级数是什么:级数理论是分析学的一个分支:它与另一个分支微积分学一起作为基础知识和工具出现在其余各分支中.二者共同以极限为基本工具,分别从离散与连续两个方面,结合起来 ...

  9. python计算图解_图解NumPy,看这一篇就够了!

    晓查 编译整理 量子位 报道 | 公众号 QbitAI NumPy是Python的最重要的扩展程序库之一,也是入门机器学习编程的必备工具.然而对初学者来说,NumPy的大量运算方法非常难记. 最近,国 ...

最新文章

  1. 何时在C ++中使用extern
  2. GMIS 2017大会戴文渊演讲:构建AI商业大脑
  3. PsSetCreateProcessNotifyRoutineEx进程监控框架
  4. 我的小作品(烂笔头)
  5. Python爬虫(五)
  6. java什么叫元素_什么是Java做什么 - 每个元素使它们成为对象类型?
  7. 大容量存储方案_基因行业容器存储解决方案
  8. 【java基础知识】java分层思想
  9. android 8.0后台定位,Android 8.0权限说明
  10. python有趣小程序-python好玩的小程序
  11. tensorflow之数据集
  12. Shell常用命令大全
  13. RADASM中使用DOSBOX来运行DOS/BIOS程序(16位)
  14. pytorch模型转onnx Exporting the operator _thnn_fused_lstm_cell to ONNX opset version 9 is not supported
  15. tomcat之连接器
  16. 使用Pytorch在StarCraft II 星际争霸2上实现多智能体强化学习算法
  17. springCloud——ribbon和zuul
  18. CAD怎么添加打印机设备?CAD打印机添加步骤
  19. Windows10家庭版升级至专业版
  20. 按成绩统计各层次学生(附随机生成学生姓名和成绩),现已解决

热门文章

  1. windows无法发现任何计算机或设备,电脑网络诊断显示Windows无法与设备或资源(主DNS)通信怎么解决...
  2. 有关移动端IM通信协议的坑
  3. 什么是产业资本和金融资本
  4. 中科院计算机技术研究所石晶林,专家人才库数据----中国科学院计算技术研究所...
  5. ffmpeg 日志系统av_log()
  6. 生活-MBTI职业性格测试
  7. 利用python爬取城市公交站点
  8. 抢先微软,Google版Copilot上线!谷歌宣布给Google全家桶开放Bard功能
  9. 什么是伺服电机的电流环、速度环、位置环和带宽?
  10. 艺人全接触----周星驰