Normalized Mutual information

Normalized Mutual information在写论文做数据测试时有用到一个nmi(normalizedmutualinformation)评价聚类的一种方法,不是很清楚,然后上网找了一下资料。首先在理解nmi前,先说说mutualinformation这个东西。我们先举个例子:比如说,标准结果是大圆里面的叉叉圈圈点点,上图呢是我们算法聚类出来的结果,那么如何来看我们算法的聚类效果呢,如何计算呢?我们把上图中的图形用字母来表示…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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

首先在理解nmi前,先说说mutual information这个东西。
我们先举个例子:
在这里插入图片描述
比如说,标准结果是大圆里面的叉叉圈圈点点,上图呢是我们算法聚类出来的结果,那么如何来看我们算法的聚类效果呢,如何计算呢?
我们把上图中的图形用字母来表示出来,集合A是标准的聚类结果,集合B是我们算法的聚类结果,如下:
A:{(aaaaaa),(bbbbbb),(ccccc)}
B:{(aaaaab),(abbbbc),(accca)}
可以按照下列公式来计算:
I ( X , Y ) = ∑ y ∈ Y ∑ x ∈ X p ( x , y ) l o g p ( x , y ) p ( x ) p ( y ) I(X,Y)=\sum_{y\in Y}\sum_{x\in X} p(x,y)log\frac{p(x,y)}{p(x)p(y)} I(X,Y)=yYxXp(x,y)logp(x)p(y)p(x,y)
分子 p ( x , y ) p(x,y) p(x,y) x x x, y y y的联合分布概率
p ( 1 , 1 ) = 5 17 p ( 1 , 2 ) = 1 17 p ( 1 , 3 ) = 0 p(1,1)=\frac{5}{17}\quad p(1,2)=\frac{1}{17}\quad p(1,3)=0 p(1,1)=175p(1,2)=171p(1,3)=0
p ( 2 , 1 ) = 1 17 p ( 2 , 2 ) = 4 17 p ( 2 , 3 ) = 1 17 p(2,1)=\frac{1}{17}\quad p(2,2)=\frac{4}{17}\quad p(2,3)=\frac{1}{17} p(2,1)=171p(2,2)=174p(2,3)=171
p ( 3 , 1 ) = 2 17 p ( 3 , 2 ) = 0 p ( 3 , 3 , ) = 3 17 p(3,1)=\frac{2}{17}\quad p(3,2)=0\quad p(3,3,)=\frac{3}{17} p(3,1)=172p(3,2)=0p(3,3,)=173
p(x)是标准集合中字母占比 p(y)是我们算法所得聚类集合中字母的占比。p(x,y)中我们可以把x看作是聚类的序号,把y看作是聚类中叉叉点点圈圈的标记数。也就是对于p(x,y)我们还考虑了叉叉点点圈圈在某一个范围中(某个聚类)占了总数的比例,所以如果x=y,p(x)也不一定等一p(y),因为x和y两个参数的属性是不一样的。
p ( x ) : p(x): p(x): p ( 1 ) = 6 17 p ( 2 ) = 6 17 p ( 3 ) = 5 17 p(1)=\frac{6}{17}\quad p(2)=\frac{6}{17}\quad p(3)=\frac{5}{17} p(1)=176p(2)=176p(3)=175
p ( y ) : p(y): p(y): p ( 1 ) = 8 17 p ( 2 ) = 5 17 p ( 3 ) = 4 17 p(1)=\frac{8}{17}\quad p(2)=\frac{5}{17}\quad p(3)=\frac{4}{17} p(1)=178p(2)=175p(3)=174
这样就可算出MI(mutual information)的值了

nmi(normalized mutual information)公式如下:

∗ ∗ U ( X , Y ) = 2 I ( X , Y ) H ( X ) + H ( Y ) ∗ ∗ **U(X,Y)=2\frac{I(X,Y)}{H(X)+H(Y)}** U(X,Y)=2H(X)+H(Y)I(X,Y)
其目的是为了让MI的值调整到0到1之间, H ( X ) , H ( Y ) H(X),H(Y) H(X),H(Y)分别为 X , Y X,Y X,Y的熵:

H ( X ) = ∑ i i = n p ( x i ) I ( x i ) = ∑ i i = n l o g b 1 p ( x i ) = − ∑ i i = n p ( x i ) l o g b p ( x i ) H(X)=\sum_i^{i=n} p(x_i)I(x_i)=\sum_i^{i=n}log_b\frac{1}{p(x_i)}=-\sum_i^{i=n}p(x_i)log_bp(x_i) H(X)=ii=np(xi)I(xi)=ii=nlogbp(xi)1=ii=np(xi)logbp(xi) b = 2 b=2 b=2

还有一种理解方法,
NMI(A,B)= 2 I ( A , B ) H ( A ) + H ( B ) 2\frac{I(A,B)}{H(A)+H(B)} 2H(A)+H(B)I(A,B),而 I ( A , B ) I(A,B) I(A,B)是A,B两向量的MI,H(A)是A的信息熵。

I ( A , B ) = H ( A ) − H ( A ∣ B ) = H ( B ) − H ( B ∣ A ) I(A,B)=H(A)-H(A|B)=H(B)-H(B|A) I(A,B)=H(A)H(AB)=H(B)H(BA);直觉上,如果已知了B的情况,A的信息熵相对于H(A|B)相对于H(A)就要小一点,因为不确定因素变小了嘛。即B能提供给A有用的信息,越有用越相近。

I ( A , B ) = H ( A ) + H ( B ) − H ( A , B ) ⩾ 0 I(A,B)=H(A)+H(B)-H(A,B)\geqslant 0 I(A,B)=H(A)+H(B)H(A,B)0,而且当A=B时,H(A,B)=0,I(A,B)最大。此时

N M I A , B ) = 2 I ( A , B ) H ( A ) + H ( B ) = 2 H ( A ) 2 H ( A ) = 1 NMIA,B)=2\frac{I(A,B)}{H(A)+H(B)}=2\frac{H(A)}{2H(A)}=1 NMIA,B)=2H(A)+H(B)I(A,B)=22H(A)H(A)=1,故 N M I ∈ [ 0 , 1 ] NMI\in[0,1] NMI[0,1]

参考:https://nlp.stanford.edu/IR-book/html/htmledition/evaluation-of-clustering-1.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193238.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 12 优化物理设计

    12 优化物理设计

    2021年9月3日
    71
  • 【Shader】Shader官方示例[通俗易懂]

    官方示例原文地址:https://docs.unity3d.com/Manual/SL-SurfaceShaderExamples.htmlSurfaceShader示例在表面着色器。此页面上的示例显示如何使用内置照明模型。有关如何实现自定义光照模型的示例,请参阅SurfaceShader光照示例。简单着色器例我们将从一个非常简单的Shader开始,并在此基础上进行构建。这是一个将…

    2022年4月15日
    54
  • ELK

    ELK

    2021年5月28日
    100
  • 【转AekdyCoin】求小于等于N的与N互质的数的和「建议收藏」

    【转AekdyCoin】求小于等于N的与N互质的数的和「建议收藏」话说我以前求这样的问题都是先求与N不互质的数,把N分解质因数,然后用容斥原理,今天看了大牛的博客,顿时觉得弱爆了。。。以下内容转大牛文章:ifgcd(n,i)=1thengcd(n,n-i)=1(1反证法:如果存在K!=1使gcd(n,n-i)=k,那么(n-i)%k==0而n%k=0那么必须保证i%k=0k是n的因子,如果i%k=0那么gcd(n,i)=k

    2022年7月23日
    13
  • c语言基础知识菜鸟_c语言入门基础100题

    c语言基础知识菜鸟_c语言入门基础100题菜鸟教程之C语言基础(上)一、前言:前几天,在看另一个教程视频,总感觉太啰嗦,讲的东西不符合我想要的。这里,通过菜鸟教程,看一遍文档,打一遍笔记,想通过这样学一下C语言的基础。感谢菜鸟教程。

    2022年8月5日
    7
  • x86汇编指令详解_x86汇编指令详解

    x86汇编指令详解_x86汇编指令详解——————————————一、数据传输指令———————————————它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据。1.通用数据传送指令:MOV传送字或字节.MOVSX先符号扩展,再传送.MOVZX先零扩展,再传送.PUSH把字压入堆栈.POP把字弹出堆栈.PUSHA把AX,CX,DX

    2022年9月13日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号