互信息(Mutual Information)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了互信息(Mutual Information)相关的知识,希望对你有一定的参考价值。

参考技术A 互信息(Mutual Information) - gatherstars - 博客园 (cnblogs.com)

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

信息论基础 学习笔记(1) - 知乎 (zhihu.com)

互信息(mutual information) 是信息论中最重要的概念之一。它的对象是两个随机变量。互信息就是指这两个随机变量包括对方的信息的量。举个例子:X指性别,男生还是女生;Y指头发长度,长头发还是短头发。这一个有一个人,Ta是长头发,那Ta是女生的概率就更大。同理,Ta是男生,那么Ta拥有短头发的概率就更大。可以看出,头发长短暗含了一定的性别信息。那么暗含的信息量有多少呢?就是互信息。我们可以如下定义互信息:

互信息(Mutual Information)浅尝辄止(一):基础概念 - 知乎 (zhihu.com)
互信息是信息论中用以评价两个随机变量之间的依赖程度的一个度量。
举个例子:x=今天下雨与y=今天阴天,显然在已知y的情况下, 发生x的概率会更大

其中是观察到的变量分布,q是我们找到的一个尽量分布。是一个非对称的度量,这里我们希望对于较大概率出现的时,近似值和实际分布的信息量差异应该有个较大权重。

详解数据预处理和特征工程-特征选择-相关性过滤-互信息法菜菜的sklearn课堂笔记

互信息法是用来捕捉每个特征与标签之间的任意关系(包括线性和非线性关系)的过滤方法。和F检验相似,它既可以做回归也可以做分类,并且包含两个类feature_selection.mutual_info_classif(互信息分类)和feature_selection.mutual_info_regression(互信息回归)。这两个类的用法和参数都和F检验一模一样,不过互信息法比F检验更加强大,F检验只能够找出线性关系,而互信息法可以找出任意关系。

互信息法不返回p值或F值类似的统计量,它返回“每个特征与目标之间的互信息量的估计”,这个估计量在$[0,1]$之间取值,为0则表示两个变量独立,为1则表示两个变量完全相关。以互信息分类为例的代码如下:

from sklearn.feature_selection import mutual_info_classif as MIC
result = MIC(X_fsvar,y)

result.shape
---
(392,)

result[:5]
---
array([0.06884424, 0.08779026, 0.09929538, 0.11440733, 0.11444289])

k = result.shape[0] - sum(result == 0)
# 一般如果指定互信息阈值的话这里应该是result <= 阈值
X_fsmic = SelectKBest(MIC, k).fit_transform(X_fsvar, y)
# 这里k=392
cross_val_score(RFC(n_estimators=10,random_state=0),X_fsmic,y,cv=5).mean()

过滤法总结

建议先使用方差过滤,然后使用互信息法来捕捉相关性

以上是关于互信息(Mutual Information)的主要内容,如果未能解决你的问题,请参考以下文章

互信息(Mutual Information)的介绍

Mutual Information

图像的归一化互信息Normlized Mutual Information

关于互信息(Mutual Information),我有些话要说

逐点互信息PMI(Pointwise mutual information)

逐点互信息PMI(Pointwise mutual information)5发