特征选择mRMR算法实现全解

mRMR:(Maximum relerelevance,minimum redundancy)


核心思想: 即最大化特征与分类变量之间的相关性,而最小化特征与特征之间的相关性。

它不仅考虑到了特征和label之间的相关性,还考虑到了特征和特征之间的相关性。度量标准使用的是互信息(Mutual information)。对于mRMR方法,特征子集与类别的相关性通过各个特征与类别的信息增益的均值来计算,而特征与特征的冗余使用的是特征和特征之间的互信息加和再除以子集中特征个数的平方。

在正式介绍mRMR算法之前先介绍下互信息概念。

一、 互信息:


定义:给定两个随机变量x和y,他们的概率密度函数(对应于连续变量)为p(x),p(y),p(x,y),则互信息为

I ( x ; y ) = ∫ ∫ p ( x , y ) l o g p ( x , y ) p ( x ) p ( y ) d x d y , . I(x;y)=\int \int p(x,y)log\frac{p(x,y)}{p(x)p(y)}dxdy,. I(x;y)=p(x,y)logp(x)p(y)p(x,y)dxdy,.
互信息(Mutual Information)是信息论里一种有用的信息度量,它可以看成是一个随机变量中包含的关于另一个随机变量的信息量,或者说是一个随机变量由于已知另一个随机变量而减少的不肯定性。

二、mRMR目标


我们的目标就是找出含有m个特征的特征子集 S S S ,这m个特征需满足以下两点条件

Goal1. 保证特征和类别的相关性最大(Maximum relerelevance)

  • 离散变量
    m a x D ( S , c ) , D = 1 ∣ S ∣ ∑ x i ∈ S I ( x i ; c ) maxD(S,c),D=\frac{1}{\left | S\right |}\sum_{^{x_{i\in S}}}I(x_{i};c) maxD(S,c),D=S1xiSI(xi;c)
  • 连续变量
    m a x D F , D F = 1 ∣ S ∣ Σ x i ∈ S F ( x i ; c ) max D_F, D_F=\frac{1}{|S|}\Sigma_{x_i\in S}F(x_i;c) maxDF,DF=S1ΣxiSF(xi;c)
Goal2. 确保特征之间的冗余性最小(minimum redundancy)

  • 离散变量
    m i n R ( S ) , R = 1 ∣ S ∣ 2 Σ x i , x j ∈ S I ( x i ; x j ) min R(S), R=\frac{1}{|S|^2}\Sigma_{x_i,x_j\in S}I(x_i;x_j) minR(S),R=S21Σxi,xjSI(xi;xj)
  • 连续变量
    m i n R c , R = 1 ∣ S ∣ 2 Σ x i , x j ∈ S c ( x i ; x j ) min R_c, R=\frac{1}{|S|^2}\Sigma_{x_i,x_j\in S}c(x_i;x_j) minRc,R=S21Σxi,xjSc(xi;xj)
    (其中 x i x_{i} xi为第 i i i个特征, c c c为类别变量, S S S为特征子集, F ( x i , c ) F(x_i,c) F(xi,c) F F F统计量, c ( x i , x j ) c(x_i,x_j) c(xi,xj)为相关函数)

三、源代码实现


1. python:pymrmr库(如果安装成功的话,最方便)

通过cmd,pip install pymrmr。由于电脑问题,我没有安装成功,在此不过多赘述。

2. matlab:

  • ① 打开 https://ww2.mathworks.cn/matlabcentral/fileexchange/56937-feature-selection-library, 下载工具箱。
    (里面集成了数十种特征选择算法。包含mRMR、RELIEFF、cfs等)
  • ② 将其添加到

你可能感兴趣的:(算法)