转载: https://blog.csdn.net/zyq11223/article/details/90267069
感谢原作者,如有侵权,请联系删除。

  1. 点互信息PMI

机器学习相关文献里面,经常会用到点互信息PMI(Pointwise Mutual Information)这个指标来衡量两个事物之间的相关性(比如两个词)。

关于PMI
PMI, 是互信息(NMI)中的一种特例, 而互信息,是源于信息论中的一个概念,主要用于衡量2个信号的关联程度.
至于PMI,是在文本处理中,用于计算两个词语之间的关联程度.
比起传统的相似度计算, pmi的好处在于,从统计的角度发现词语共现的情况来分析出词语间是否存在语义相关 , 或者主题相关的情况.

其原理很简单,公式如下:

在概率论中,我们知道,如果x跟y不相关,则p(x,y)=p(x)p(y)。二者相关性越大,则p(x, y)就相比于p(x)p(y)越大。

用后面的式子可能更好理解,在y出现的情况下x出现的条件概率p(x|y)除以x本身出现的概率p(x),自然就表示x跟y的相关程度。

这里的log来自于信息论的理论,而且 log 1 = 0 ,也恰恰表明P(x,y) = P(x)P(y),相关性为0,而且log是单调递增函数,所以 “P(x,y) 就相比于 P(x)P(y) 越大,x 和 y 相关性越大” 这一性质也得到保留。

举个自然语言处理中的例子来说,我们想衡量like这个词的极性(正向情感还是负向情感)。我们可以预先挑选一些正向情感的词,
比如good。然后我们算like跟good的PMI。

通常我们可以用一个Co-occurrence Matrix来表示对一个语料库中两个单词出现在同一份文档的统计情况,例如

以计算PMI(information,data)为例则有(其中分母上的19是上表所有数值之和):

其他中间结果如下表所示:

但是从上表中你可能会发现一个问题,那就是你有可能会去计算 log 0 = -inf,即得到一个负无穷。为此人们通常会计算一个PPMI(Positive PMI)来避免出现 -inf,即

  1. 互信息MI

点互信息PMI其实就是从信息论里面的互信息这个概念里面衍生出来的。

互信息即:

其衡量的是两个随机变量之间的相关性,即一个随机变量中包含的关于另一个随机变量的信息量。所谓的随机变量,即随机试验结

果的量的表示,可以简单理解为按照一个概率分布进行取值的变量,比如随机抽查的一个人的身高就是一个随机变量。

可以看出,互信息其实就是对X和Y的所有可能的取值情况的点互信息PMI的加权和。因此,点互信息这个名字还是很形象的。

  1. sklearn编程
from sklearn import metrics as mr
mr.mutual_info_score(label,x)
  • 1
  • 2

label、x为list或array。
计算x和label的互信息。

参考:https://blog.csdn.net/u013710265/article/details/72848755
https://blog.csdn.net/baimafujinji/article/details/6509820
https://blog.csdn.net/qq_30843221/article/details/50767590

NLP_task3特征选择_点互信息和互信息(求词语关联性)相关推荐

  1. python文本分类特征选择_文本挖掘之特征选择(python 实现)

    机器学习算法的空间.时间复杂度依赖于输入数据的规模,维度规约(Dimensionality reduction)则是一种被用于降低输入数据维数的方法.维度规约可以分为两类: 特征选择(feature ...

  2. 互信息python代码_转:标准化互信息NMI计算步骤及其Python实现

    标准化互信息NMI计算步骤 Python 实现 代码: ''' 利用Python实现NMI计算''' import math import numpy as np from sklearn impor ...

  3. python 卡方检验 特征选择_结合Scikit-learn介绍几种常用的特征选择方法

    特征选择(排序)对于数据科学家.机器学习从业者来说非常重要.好的特征选择能够提升模型的性能,更能帮助我们理解数据的特点.底层结构,这对进一步改善模型.算法都有着重要作用. 特征选择主要有两个功能: 减 ...

  4. python分类时特征选择_关于python:是否有可用于分类数据输入的特征选择算法?...

    我正在训练一个具有10个左右分类输入的神经网络. 在对这些分类输入进行一次热编码之后,我最终将大约500个输入馈入网络. 我希望能够确定我每个分类输入的重要性. Scikit-learn具有许多功能重 ...

  5. 用python编写表达式求值_用Python3实现表达式求值

    Problem Description yizhen has no girlfriend due to his stupid brain that he even can't solve a simp ...

  6. 分词之后的如何做特征选择_特征选择怎么做?这篇文章告诉你

    作者 | Pier Paolo Ippolito 翻译 | Skura 编辑 | 唐里 原文标题:Feature Selection Techniques 据<福布斯>报道,每天大约会有 ...

  7. python作业表达式求值_用Python3实现表达式求值

    一.题目描述 请用 python3编写一个计算器的控制台程序,支持加减乘除.乘方.括号.小数点,运算符优先级为括号>乘方>乘除>加减,同级别运算按照从左向右的顺序计算. 二.输入描述 ...

  8. python坐标表示_已知经纬度坐标求两点间距离,用python表示

    已知经纬度坐标求两点间距离,用python表示 已知地球上任意两点(lon1, lat1),( lon2, lat2)的经纬度坐标,求两点间的距离用haversine表示: 1.首先先将经纬度坐标的角 ...

  9. python输入数学表达式并求值_用Python3实现表达式求值

    一.题目描述 请用 python3编写一个计算器的控制台程序,支持加减乘除.乘方.括号.小数点,运算符优先级为括号>乘方>乘除>加减,同级别运算按照从左向右的顺序计算. 二.输入描述 ...

最新文章

  1. thinkbook14 2021版有两个显卡
  2. javascript Navigator对象属性和方法
  3. sougou ubuntu 优麒麟_搜狗输入法 Linux – V2.3 版发布,完美适配优麒麟 19.10
  4. java中对象字节数_JAVA中求解对象所占字节大小
  5. [流体力学] 推导柱坐标系下的连续性方程
  6. C#LeetCode刷题之#231-2的幂(Power of Two)
  7. java程序设置软件界面(jFrame)的最小大小
  8. Js Date对象 简单操作
  9. android菜单键选择图标,Android Design
  10. 使用OpenCV需要注意的小细节
  11. 原创:爱是两个人的事
  12. 幅频特性曲线protues_短学期--功率放大器电路图设计及Proteus仿真
  13. c语言输入相应的成绩评定信息,C语言上机练习题记答案.doc
  14. vmware 中安装chrome os操作系统
  15. 计算机毕业设计php的网络投票在线投票系统
  16. 在火狐3中安装google工具栏
  17. php composer.phar install,解决composer.phar安装问题
  18. QStackedWidget切换动画实现以及尝试过程中花点、花屏、背景无法透明解决处理
  19. 【手把手带你Godot游戏开发】FlappyBird:4.1无限地面之Godot青年(AnimationPlayer)版
  20. 【转载】 Android MediaCodec stuff

热门文章

  1. 西门子S71200与三菱FX5U数据交换
  2. 一针见血评互联网五大巨头:腾讯贪、阿里全、百度狠、小米直、奇虎360难
  3. 全息投影是计算机技术吗,什么是3D全息投影沙盘技术?
  4. 浅谈box-sizeing,以及chrome firfox 以及ie的区别
  5. ssh 隧道 mysql_利用SSH隧道方式连接远程MySQL
  6. linux 逻辑卷 pe size 4.00 mib大小怎么改,linux 逻辑卷管理 调整分区大小
  7. 电子综合设计——电子钟
  8. 阿里云开源离线同步工具DataX3.0,用于数据仓库、数据集市、数据备份
  9. VL813 HUB USB3.0集线器芯片
  10. 防腐层(Anti-corruption layer)