簡(jiǎn)介
互信息(Mutual Information)是信息論中的概念,用來(lái)衡量?jī)蓚€(gè)隨機(jī)變量之間的相互依賴程度。對(duì)于Mutual Information的介紹會(huì)用到KL散度(Kullback–Leibler divergence)的知識(shí),可以參考http://m.itdecent.cn/p/00254c4d0931。
定義
互信息可以定義為兩個(gè)隨機(jī)變量的聯(lián)合分布與邊緣分布的乘積的KL散度。
根據(jù)上述定義,不難發(fā)現(xiàn),如果隨機(jī)變量和
相互獨(dú)立,即
,則
;
性質(zhì)
1 ,由KL Divergence的性質(zhì)可以直接得出
2
Pf:
其中
表示熵,同理可以證明
通過(guò)性質(zhì)2,我們可以從另一個(gè)角度認(rèn)識(shí)互信息。比如可以視為已知
之后,
的不確定性減少的程度;同理,
可以視為已知
之后,
的不確定性減少的程度.
Code
這里我們直接使用歸一化之后的互信息,經(jīng)過(guò)歸一化之后,互信息的取值范圍為[0,1]
import numpy as np
from scipy.stats import pearsonr
import matplotlib.pyplot as plt
from sklearn.metrics.cluster import normalized_mutual_info_score
rng = np.random.RandomState(1) #保證每次生成相同的隨機(jī)序列
x = rng.normal(0, 5, size = 10000)
y = np.sin(x)
plt.scatter(x,y)
plt.xlabel('x')
plt.ylabel('y = sin(x)')
r = pearsonr(x,y)[0]
nmi = normalized_mutual_info_score(x,y)
數(shù)據(jù)分布如下所示:

x vs sin(x).png
這里我們將pcc的結(jié)果和nmi的結(jié)果進(jìn)行對(duì)比,對(duì)于如上數(shù)據(jù),pcc的結(jié)果為0.00083,完全沒(méi)有相關(guān)性。而nmi的結(jié)果為1,表明x和y有很強(qiáng)的依賴關(guān)系。