matlab代码——最大相关性最小冗余性(MRMR)

该篇文章介绍了最大相关性最小冗余(MRMR)方法在特征选择中的应用,通过计算特征向量矩阵与类别之间的互信息,结合增量搜索策略,选择最优的特征组合,以提高模型的性能。
摘要由CSDN通过智能技术生成

 关于最大相关性最小冗余性(MRMR)的理论推导 http://t.csdnimg.cn/dzg2N

%%  主程序举例
all_f=all_feature;          %导入计算好特征向量矩阵all_feature
all_feature=mapminmax(all_f);           %统一化处理
label=[1*ones(1,30) 2*ones(1,30)]';     %贴标签
[mrmr,c]=mRMR(all_feature',label,20);   %调用mRMR子程序 
select_feature=all_f(c,:);                   
%%% 特征优选——最大相关最小冗余(MRMR)
%%%使用增量搜索算法来得到合适的特征集合
function [mrmr,slctFea] = mRMR(dataX, dataC, nSelect)
% 输入: 
%       dataX ,n-by-p:输入n*p特征向量矩阵,n个采样值,p个特征值;
%       dataC ,n-by-1:输入n*1向量,分类的结果(或贴好标签);
%          nSelect  :选择特征的个数,但是要小于或等于n个。

% 输出:
%       slctFea ,nSelect-by-1:输出n*1向量,优选的特征(排序);
%                mrmr       : 相对应优选特征的值
%%  
%初始化
slctFea     = zeros(nSelect, 1);   %优选特征的零向量
dimF        = size(dataX, 2);      %特征的个数
remainFea   = (1:dimF);            %取前dimF个特征的序号

% 互信息(最大相关性),特征dataX与类别dataC之间,  维数为dim*1
Ixc = bundleMI(dataX, dataC);      %调用互信息子函数

% 选择第一个最大相关性的特征
[mrmr(1), idxF]          = max(Ixc);    %计算每一列中的最大元素mrmr(1),以及他们所在的行索引idxF
slctFea(1)         = remainFea(idxF);   %存放第一个优选特征

% 删除已选定的特征
remainFea( idxF )  = [];
Ixc(       idxF )  = [];
dimRemain          = dimF-1;    % 剩余特征的个数

% 互信息(最小冗余性) , 特征xi和特征xj之间
Ixx        = zeros(dimRemain, nSelect-1);
redunSum   = zeros(dimRemain, 1);

%% 使用增量搜索算法来得到合适的特征集合
for fea = 2 : nSelect    %去除第一个特征后
    
    Ixx(:, fea-1) = bundleMI( dataX(:,remainFea) , dataX(:,slctFea(fea-1)) );     %特征间互信息
    redunSum      = redunSum + Ixx(:,fea-1);

    % 选择具有增量mRMR的特性
    [mrmr(fea), idxF]   = max( Ixc - redunSum/(fea-1) );      %最大相关最小冗余特征集
    slctFea(fea)= remainFea(idxF);                            %%存放第fea个优选特征
   
    % 删除已选定的特征
    Ixx(idxF, : ) = [];           %特征与特征间的互信息
    redunSum(idxF) = [];
    remainFea(idxF) = [];
    Ixc( idxF) = [];              %特征与类别间的互信息
    dimRemain  = dimRemain - 1;   % 剩余特征的个数

end

end
%%% mRMR中的子程序,互信息
function bMI = bundleMI(X, y)
% 输入: 
%           X:维数为k的向量
%           y:维数为1的离散数据
%输出: 
%           bMI:维度为k*1,bMI(i) = I(X(:,i),y)
%%
k = size(X,2);       %向量X的维数
bMI = zeros(k,1);
for i = 1 : k
        bMI(i) = mutualInfoDis(X(:,i), y);    %调用另一子程序
end
end
%%% MI的子程序
function mi = mutualInfoDis(x, y)

n = length(x);      %向量x的长度
x = ceil(x(:));     %取大于或者等于指定表达式的最小整数
y = ceil(y(:));

%更新x和y,取值范围为1:max([x;y])
lo = min( [ x; y ] );
x  = x - lo + 1;
y  = y - lo + 1;
up = max( [ x; y ] );

%% 求熵
idx  = (1:n);
tabX = sparse(idx, x, 1, n, up, n);    %稀疏矩阵
                                       %由向量idx,x,1(三者维数一样)生成一个n*up的含有n个非零元素的稀疏矩阵tabX
                                       %idx 和 x 分别是矩阵中非零元素的行索引和列索引的向量。
                                       %1 是由对应的 (idx ,x) 对指定索引的非零值的向量。
                                       %最后一个n为:分配可以存储n个非零值的空间。                                     
tabY = sparse(idx, y, 1, n, up, n);
Pxy  = nonzeros(tabX'*tabY) / n;      %非零矩阵元素,概率p           
Px      = mean(tabX);
Py      = mean(tabY);
negHxy  = Pxy' * log(Pxy);             %x,y,联合熵   
negHx   = Px * log(Px)';             %x,熵,
negHy   = Py * log(Py)';             %y,熵,
%% 互信息
mi      = negHxy - negHx - negHy;     %互信息公式:H(x)+H(y)-H(x,y)
end

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: mRMR(minimum Redundancy Maximum Relevance)是一种基于信息论的特征选择方法,用于选择最具有代表的特征用于分类或回归。mRMR方法的基本思想是,在选择特征时,应同时考虑特征的相关性和互信息,选取相关性高、互信息低的特征,以此达到最优的特征选择效果。 在使用mRMR方法进行特征选择时,可以采用MATLAB编程,利用mRMR工具箱进行操作。mRMR工具箱提供了各种函数,可以进行特征选择的各个步骤,如计算相关性、互信息、排序等,还可以进行各种分类器的测试,以评估特征选择的效果。mRMR工具箱适用于各种数据类型和维度,广泛应用于图像识别、科学研究等领域。 使用mRMR进行特征选择需要注意的问题是,不同的特定问题需要不同的特征选择策略,需要充分了解数据的质和特点,选择适当的特征选择方法。同时,mRMR方法虽然可以提高特征选择的精度,但对于大规模高维度的数据,需要对计算资源有充分的考虑。 ### 回答2: Matlab MRM(最大相关性最小冗余算法是一种特征选择算法,用于数据挖掘和机器学习领域。该算法可以筛选出对分类或回归有用的独立特征,并且能够对具有高度相关性冗余的特征进行过滤。 MRM算法分为两个部分:相关性最大化和冗余特征过滤。相关性最大化通过计算每个特征与输出变量之间的互信息来选择具有最大相关性的特征。冗余特征过滤则通过消除高度相关的特征来避免过拟合问题。 MRM算法的优点是可以有效地提高算法的分类准确和回归精度,并且能够帮助在大型数据集上快速筛选出重要的特征。但是,其缺点是在处理高维数据上可能会遇到困难,因为其计算复杂度随着特征数量的增加而增加。 总之,Matlab MRM算法是一种有效的特征选择算法,可以加速数据挖掘和机器学习算法的执行,并提高模型的分类和回归效果。 ### 回答3: Matlab中的mRMR是一种特征选择算法,它可以从给定数据集中选择有用的特征以进行分类或预测。mRMR的全称是minimum Redundancy Maximum Relevance,它基于两个原则:最小冗余最大相关性mRMR首先计算每个特征与目标变量之间的相关性,也就是它们之间的互信息。然后,它计算每个特征与其他特征之间的冗余度,即它们之间相互独立的程度。通过这些计算,mRMR可以找到相对独立但与目标变量高度相关的特征。 在实际应用中,可以使用mRMR选择最优的特征子集以进行分类或预测。该算法可以用于各种领域,例如生物医学、金融、图像处理等。相比于传统的特征选择方法,mRMR在选取少量特征的情况下可以提高准确,并且不易过拟合。因此,它在机器学习和数据挖掘中具有广泛的应用价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我不是哆啦A梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值