上一篇使用卡方系数进行特征选择,使用的是假设检验的思路,这篇文章使用最大信息系数的方法进行计算。

为什么要使用 mic?

MIC 的优越性

根据 MIC 的性质,MIC 具有普适性、公平性和对称性。所谓普适性,是指在样本量足够大(包含了样本的大部分信息)时,能够捕获各种各样的有趣的关联,而不限定于特定的函数类型(如线性函数、指数函数或周期函数),或者说能均衡覆盖所有的函数关系。一般变量之间的复杂关系不仅仅是通过单独一个函数就能够建模的,而是需要叠加函数来表现。所谓公平性,是指在样本量足够大时能为不同类型单噪声程度相似的相关关系给出相近的系数。例如,对于一个充满相同噪声的线性关系和一个正弦关系,一个好的评价算法应该给出相同或相近的相关系数。

MIC 与具有代表性的六种相关性评价算法的普适性对比如下图所示,可以看出 MIC 不仅可以检测出线性关系,还能够检测出各种非线性关系,并且只要两个变量不独立,它们的 MIC 系数均为 1;而其他评价方法或者只适合检测线性关系,或者没有标准化,或者无法检测出正弦关系、周期性关系等。如果采用没有普适性的算法进行相关性挖掘,那么结果就不是完备的,会令人漏掉许多有用的关联关系。

MIC 与几种相关性评价算法的公平性对比见下图。图中横坐标代表噪声程度从 0 增长到 1,纵坐标代表相关系数的大小,图中共有 27 种不同颜色的散点曲线代表不同的函数关系。从图 A 可以看出,随着噪声程度的增加,不同相关关系的 MIC 系数都是均匀降低,MIC 可以为不同类型单噪声程度相似的相关关系给出相近的系数。图 B-E 分别是 spearman 系数、基于互信息的 kraskov 系数、最大相关系数、CorGC 系数的公平性检测。可以看到,随着噪声程度的增加,这些方法对某些函数关系表现出的健壮性不一致。在大数据相关性挖掘中,数据难免会有噪声和异常点,如果没有良好的公平性,挖掘出的结果也就不再准确并且难以令人信服。利用 MIC,可以大大减少数据清洗的麻烦,只要有足够的数据量可以代表总体信息,就可以直接用 MIC 计算分析。

MIC 算法与其它算法的优劣对比:

mic 基本原理

mic 基本原理会利用到互信息概念,互信息的概念使用以下方程来说明:

I(x;y)=∫p(x,y)log2p(x,y)p(x)p(y)dxdyI(x;y)=∫p(x,y)log2p(x,y)p(x)p(y)dxdy

一般情况下联合概率计算相对来说比较麻烦,要是不记得联合概率可以去这里看看:联合概率

mic 的想法是针对两个变量之间的关系离散在二维空间中,并且使用散点图来表示,将当前二维空间在 x,y 方向分别划分为一定的区间数,然后查看当前的散点在各个方格中落入的情况,这就是联合概率的计算,这样就解决了在互信息中的联合概率难求的问题。下面的公式给出 mic 的计算公式:

mic(x;y)=maxa∗b<BI(x;y)log2min(a,b)mic(x;y)=maxa∗b<BI(x;y)log2min(a,b)

上式中 a,b 是在 x,y 方向上的划分格子的个数,本质上就是网格分布,B 是变量,在原作者的论文当中提到 B 的大小设置是数据量的 0.6 次方左右。

sklearn 函数剖析

from minepy import MINE from numpy import arraydef mic(x, y):    m = MINE()    m.compute_score(x, y)    return (m.mic(), 0.5) #选择 K 个最好的特征,返回特征选择后的数据SelectKBest(lambda X, Y: tuple(map(tuple,array(list(map(lambda x:mic(x, Y), X.T))).T)), k=2).fit_transform(irisdata.data, irisdata.target)

输出结果

array([[ 1.4,  0.2],       [ 1.4,  0.2],       [ 1.3,  0.2],       [ 1.5,  0.2],       [ 1.4,  0.2],       [ 1.7,  0.4],

Deeplearn, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明特征选择(4)-最大信息系数方法!

发表回复