- 互信息(Mutual Information)
是信息论里一种有用的信息度量,它可以看成是一个随机变量中包含的关于另一个随机变量的信息量,或者说是一个随机变量由于已知另一个随机变量而减少的不肯定性。
- 最大信息系数(MIC Maximal Information Coefficient )
把两个 随机变量化成散点图,然后不断的用小方格子去分割。然后计算每个方格子里面的落入概率。在某种意义上,就可以估计出联合概率密度分布了。当然,只有在数据量是无穷的情况下我们才可以认为是真的就相等了。所以,导致随后是数据量越大,MIC越好。
分母是之前对散点图分割为与多块,在X方向和Y方向上也就是很多段。所以|X|就是X方向共被分成了多少段。Y方向也一样。限制条件|X||Y|<B,即所有的方格格总数不能大于B。作者说,B取数据总量的0.6或者0.55次方。 - 将两两特征的散点图划分为多个小格子,计算两两特征的MIC,选择一种划分方式使MIC最大。
代码:
import numpy as np
from minepy import MINE
# 利用linspace 产生x 为均匀分布的数
x = np.linspace(0, 1, 1000)
y = np.sin(10 * np.pi * x) + x
# alpha 为上面所提到的限制条件的B的alpha次方
# c 为在X 或Y 方向上划分的格子数 默认为15
mine = MINE(alpha=0.6,c=15)
# 计算x y 间最大的标准互信息得分
mine.compute_score(x, y)
mine.mic()
# ps: 因此时的只有一对变量,故输出一个mic值