信息论/python笔记: 最大信息系数 MIC

1 互信息

sklearn 笔记整理:sklearn.metrics_sklearn中的mean absolute percentage error_UQI-LIUWJ的博客-CSDN博客

信息论/python笔记: 最大信息系数 MIC_第1张图片 

2 最大信息系数(MIC,Maximal Information Coefficient)

2.1 方法介绍

  • 衡量两个变量X和Y之间的关联程度,线性或非线性的强度
  • 相较于Mutual Information(MI)互信息而言有更高的准确度,是一种优秀的数据关联性的计算方式

2.2 计算原理

  •  给定i、j,对X、Y构成的散点图进行i列j行网格化,并求出最大的互信息值(下式的分子)
  •  对最大的互信息值进行归一化(下式的分母)
  •  选择不同尺度下互信息的最大值作为MIC值(下式max部分)

 2.3 举例

2.3.1 网格化

  • 比如以下数据,我们有三种不同的网格方式(|X|=|Y|=2时,红黄绿三种分割方式)
    • 信息论/python笔记: 最大信息系数 MIC_第2张图片 

2.3.2 计算对应的互信息

  • 以红色的为例,左上、右上、左下、右下,每个区域对应的数据点数量为1,4,4,1
  • 将数据点归一化得到四个区域的数据点频率“0.1,0.4,0.4,0.1
    • 信息论/python笔记: 最大信息系数 MIC_第3张图片

     

2.3.3  互信息归一化

  • 2.3.2 计算出来的互信息除以log(min(|X|,|Y|))

2.3.4 计算MIC

  • 选择不同分割尺度下归一化互信息的最大值作为MIC值

3 Python实现

import numpy as np
from minepy import MINE
 
x = np.linspace(0, 1, 1000)
y = np.sin(10 * np.pi * x) + x

mine=MINE()
mine.compute_score(x,y)
mine.mic()
#1.0000000000000002

你可能感兴趣的:(数学知识整理,python,笔记,sklearn)