NMI(Normalized Mutual Information)

NMI(Normalized Mutual Information),归一化互信息。常用在聚类中,度量两个聚类结果的相近程度(通常我们都是将聚类结果和真实标签进行比较相似程度)。他的值域是[0,1][0, 1][0,1],值越高表示两个聚类结果越相似。归一化是指将两个聚类结果的相似性值 定量到0~1之间。

NMI和另一个聚类指标ACC不同的是,NMI的值不会受到族类标签排列的影响。(This metric is independent of the absolute values of the labels: a permutation of the class or cluster label values won’t change the score value in any way.) sklearn包实现

公式

NMI(Y,C)=2×I(Y;C)H(Y)+H(C)NMI(Y, C) = \frac{2\times I(Y;C)}{H(Y)+H(C)} NMI(Y,C)=H(Y)+H(C)2×I(Y;C)​

其中,

  • Y 代表 数据真是的类别;
  • C 代表 聚类的结果;
  • H(.)H(.)H(.) 代表 交叉熵, H(X)=−∑i=1∣X∣P(i)log⁡P(i)H(X) = -\sum_{i=1}^{|X|} P(i)\log{P(i)}H(X)=−∑i=1∣X∣​P(i)logP(i)。此处的log⁡\loglog是以2为底的;
  • I(Y;C)I(Y;C)I(Y;C) 代表 互信息,I(Y;C)=H(Y)−H(Y∣C)I(Y;C) = H(Y) - H(Y|C)I(Y;C)=H(Y)−H(Y∣C)。互信息是信息论里一种有用的信息度量,它可以看成是一个随机变量中包含的关于另一个随机变量的信息量,或者说是一个随机变量由于已知另一个随机变量而减少的不肯定性。简明的说就是,表示两个时间集合的相关性。

例子

假设我们有3个类别,我们的聚类结果分成了2类,如下图。

1. 计算Y的交叉熵:

P(Y=1)=5/20=1/4P(Y=1)=5/20 = 1/4P(Y=1)=5/20=1/4,

P(Y=2)=5/20=1/4P(Y=2) = 5/20 = 1/4P(Y=2)=5/20=1/4,

P(Y=3)=10/20=1/2P(Y=3) = 10/20 = 1/2P(Y=3)=10/20=1/2,

H(Y)=−14log⁡(14)−14log⁡(14)−12log⁡(12)=1.5H(Y) = -\frac{1}{4}\log(\frac{1}{4}) - \frac{1}{4}\log(\frac{1}{4}) - \frac{1}{2}\log(\frac{1}{2}) = 1.5H(Y)=−41​log(41​)−41​log(41​)−21​log(21​)=1.5。

H(Y) 表示数据真实标签的交叉熵,它是一个固定的值。可以再聚类之前计算出。

2. 计算C的交叉熵:

P(C=1)=10/20=1/2P(C=1) = 10/20 = 1/2P(C=1)=10/20=1/2,

P(C=2)=10/20=1/2P(C=2) = 10/20 = 1/2P(C=2)=10/20=1/2,

H(C)=−12log⁡(12)−12log⁡(12)=1H(C) = - \frac{1}{2}\log(\frac{1}{2})- \frac{1}{2}\log(\frac{1}{2}) = 1H(C)=−21​log(21​)−21​log(21​)=1.

H© 表示数据聚类后标签的交叉熵。显然,每次得到一个聚类结果后我们都需要计算一下。

3. 计算Y和C的互信息:

I(Y;C)=H(Y)−H(Y∣C)I(Y;C) = H(Y) - H(Y|C)I(Y;C)=H(Y)−H(Y∣C)。表示两个聚类结果的相近程度。

  • C = 1时,

    P(Y=1∣C=1)=3/10P(Y=1|C=1) = 3/10P(Y=1∣C=1)=3/10,

    P(Y=2∣C=1)=3/10P(Y=2|C=1) = 3/10P(Y=2∣C=1)=3/10,

    P(Y=3∣C=1)=4/10P(Y=3|C=1) = 4/10P(Y=3∣C=1)=4/10.

$$
\begin{aligned}

H(Y|C=1) &= -P(C=1)\sum_{y\in {1,2,3}} P(Y=y|C=1)\log P(Y=y|C=1) \
&= -\frac{1}{2} \times[\frac{3}{10}\log(\frac{3}{10}) - \frac{3}{10}\log(\frac{3}{10}) - \frac{4}{10}\log(\frac{4}{10})] \
&= 0.7855

\end{aligned}
$$

  • C = 2时,

    同理H(Y∣C=2)=0.5784H(Y|C=2) = 0.5784H(Y∣C=2)=0.5784

所以 I(Y;C)=H(Y)−H(Y∣C)=1.5−(0.7855+0.5784)=0.1361I(Y;C) = H(Y) - H(Y|C) = 1.5 -(0.7855+0.5784) = 0.1361I(Y;C)=H(Y)−H(Y∣C)=1.5−(0.7855+0.5784)=0.1361

4. 计算Y和C的归一化互信息,即NMI:

NMI(Y,C)=2×I(Y;C)H(Y)+H(C)=2×0.13611.5+1=0.1089NMI(Y, C) = \frac{2\times I(Y;C)} {H(Y)+H(C)} = \frac{2\times 0.1361}{1.5+1} = 0.1089NMI(Y,C)=H(Y)+H(C)2×I(Y;C)​=1.5+12×0.1361​=0.1089

另一个例子

数据真实标签如图形,聚类结果分成了两类。

结果是:NMI(Y,C)=0.2533NMI(Y, C) = 0.2533NMI(Y,C)=0.2533

NMI(Normalized Mutual Information)相关推荐

  1. Normalized Mutual information

    在写论文做数据测试时有用到一个nmi(normalized mutual information)评价聚类的一种方法,不是很清楚,然后上网找了一下资料. 首先在理解nmi前,先说说mutual inf ...

  2. mutual information matlab,Mutual information and Normalized Mutual information 互信息和标准化互信息...

    实验室最近用到nmi( Normalized Mutual information )评价聚类效果,在网上找了一下这个算法的实现,发现满意的不多. 浙江大学蔡登教授有一个,http://www.zju ...

  3. 聚类算法评价指标——Normalized Mutual Information, NMI指数

    目录 NMI 是一种常见的聚类有效性外部评价指标,从信息论的角度评估了两个聚类结果的相似性 . 设实验结果为 X,真实结果为 Y,则其计算式如下: 其中,I(X,Y)I (X,Y)I(X,Y)表示 X ...

  4. 特征选择方法详解Part2-卡方检验、互信息(Mutual Information)

    Content 1. 单变量分析 1.1 卡方检验 1.1.1 原理 1.1.2 使用示例 1.2 互信息(Mutual Information) 1.2.1 原理 1.2.1.1 互信息(Mutua ...

  5. Mutual Information

    今天挺paper reading的时候,听到了最大化互信息,还不清楚互信息是个什么东东,google了一下,从 http://en.wikipedia.org/wiki/Mutual_informat ...

  6. 机器学习特征筛选:互信息法(mutual information)

    机器学习特征筛选:互信息法(mutual information) 互信息法多为分类问题的分类变量的筛选方法 经典的互信息也是评价定性自变量对定性因变量的相关性的,为了处理定量数据,最大信息系数法被提 ...

  7. Feature Selection Based on Mutual Information:Criteria of Max-Dependency, Max-Relevance,and Min-Redu

    Feature Selection Based on Mutual Information:Criteria of Max-Dependency, Max-Relevance,and Min-Redu ...

  8. 双目立体匹配经典算法之Semi-Global Matching(SGM)概述:匹配代价计算之互信息(Mutual Information,MI)...

      半全局立体匹配算法Semi-Global Matching,SGM由学者Hirschmüller在2005年所提出1,提出的背景是一方面高效率的局部算法由于所基于的局部窗口视差相同的假设在很多情况 ...

  9. Mutual Information Neural Estimation梳理

    Mutual Information Neural Estimation 原文 参考:https://ruihongqiu.github.io/posts/2020/07/mine/ 背景 互信息可以 ...

最新文章

  1. vue渲染大量数据如何优化_Vue - Table表格渲染上千数据优化
  2. Javascript 限制文本字节数
  3. live555工程建立与调试
  4. 评职称不需英语计算机的文件,《关于重申专业技术人员职称评定、职务聘任必须坚持外语、计算机条件的通知》……...
  5. 实现微信朋友圈动态列表
  6. 串口服务器信号连接不上,使用RS485串口服务器经常遇到的问题
  7. go token验证_golang jwt+token验证的实现
  8. pandas用均值填充nan_如何填补Pandas中的缺失值(机器学习入门篇)
  9. web前端学习第三周
  10. 使用u盘如何装linux系统教程视频教程,使用U盘安装Linux系统图解一
  11. 多任务Mask2Former | 性能优于任务特定模型(CVPR 2022)
  12. java计算机毕业设计html5大众汽车网站MyBatis+系统+LW文档+源码+调试部署
  13. Pytest setup teardown
  14. SQL SERVER 读取数据库中所有表名
  15. webrtc编译中的错误解决
  16. js splice,slice,split区别
  17. 我的 2016 年总结
  18. 如何将html转成PDF文件
  19. 中国内燃机及配件行业产销状况与未来需求规模预测报告(2022-2027年)
  20. 阿里三面必问JVM知识点- 使用堆外内存减少Full GC

热门文章

  1. python 几行代码实现自动回复功能
  2. 古人的智慧之回文诗——《两相思》
  3. 专用5G网络的7种部署方案
  4. Win10系统更新后开机密码错误怎么解决?
  5. 产品读书《数字化生存》
  6. 17.12.2B组总结
  7. 华硕 ROG Win11.21H2 x64极速精简优化专业版
  8. 关于EPS attach和EPS combined attach with sms only、NBIOT等
  9. 消费升级背景下零食行业发展报告_品牌升级与全渠道协同赋能 来伊份上半年营收21.36亿元...
  10. 最佳37个获取LOGO设计灵感的网站推荐