光谱特征选择---随机蛙跳变量选择RF

        我们已经连续好几期在讲特征变量选择算法,这其中一个很重要的一个原因是:光谱数据的高维冗余性和目标值与少数解释变量之间的相关性,也就是特征解释问题。如何从实际测量的高维光谱数据中选择具有解释能力(特征变量)的变量是目前特征选择或者特征降维的主要研究内容,也是光谱分析建模的关键组成。

        本期分享的随机蛙跳(Random Frog, RF)主要参考李宏东老师于2012年发表在ACA的论文(题目见文末),区别于由Kevin Lanes和Mustafa Eusuff于2003年提出的随机蛙跳算法(Shuffled Frog Leaping Algorithm, SFLA),RF迭代更新过程更加简单直观,而SFLA粒子群优化算法相似,本期就RF在光谱特征分析建模中的应用进行介绍,并以真实数据进行代码解析和结果展示,对于代码在光谱交流群内。

        1. 随机蛙跳RF

        作者原文以基因表达过程中的关键变量选择为背景提出了RF算法,结合光谱建模分析应用,我们首先介绍RF的基本原理。对于光谱变量X,其n行表示样本数,p列表示变量,对应的目标矩阵Y由nx1的变量组成,其迭代计算过程主要包括以下三步:

        (1)随机生成包含Q个变量的子集V0;

        (2)在V0的基础上提出一个包含Q*个变量的候选变量子集V*,以一定的概率接受V*作为V1,用V1代替V0,循环该过程;

        (3)计算各个变量选择的概率值,以此作为变量重要性评价指标。

        在RF算法计算过程中,主要涉及5个关键参数,分别是:

        (1)N:迭代次数,一般根据数据规模设置;

        (2)Q:初始数据子集所含变量数;

        (3)\theta:控制正态分布方差的因子,用于控制抽取进入候选变量子集的变量数;

        (4)w:用于重采样时调整变量个数;

        (5)\eta:用于设定接受性能不优于 V0 的候选变量子集 V* 的概率的上限。

上述变量中,除了Q和N外,其余变量均设置为默认值,此外,变量的重要性不再是单纯的以回归系数的大小为依据,而是以N次迭代中变量出现的概率为依据。

        2. 代码分析

        RF的matlab调用如下所示:​​​​​​​

function F=randomfrog_pls(X,Y,A,method,N,Q,criterion)%+++ Random Frog for variable selection for high dimensional data.%+++ Input:  X: m x n  (Sample matrix)%            Y: m x 1  (measured property)%            A: The maximal number of latent variables for%               cross-validation%       method: data pretreat method,'center' or 'autoscaling'%            N: The number of Simulation.%            Q: Intial number of variables to sample%+++ Criterion: index for variable assessment:'RegCoef',or 'sr'%+++ Output: Structural data: F

        输出的结构体F包含的主要变量有:​​​​​​​

F.N=N;                   %迭代次数F.Q=Q0;                  %子集变量数F.model=model;           %模型参数,此处选PLSF.minutes=toc/60;        %计算时间/SF.method=method;         %预处理方法F.Vrank=Vrank;           %变量序号F.Vtop10=Vtop10;         % top-10 变量F.probability=probability; % 各变量被选概率F.nVar=nVar;             %迭代建模过程中子集变量个数F.RMSEP=RMSEP;           %迭代模型RMSEP

        3. 实例分析

        本文以公开数据集Corn进行测试分析,对应下载链接已在前期中给出,原始光谱为:

        基于RF算法,我们选择前60个变量,具体的分布如图所示,其中有部分点分布在起始点附近,而大部分分布在500左右,对于起始点附近的点,可能是我们子集变量个数设置过小,导致这些变量的选择概率较高。

        各变量在100次迭代循环过程中的选择概率分布如下图所示,对应上图,我们可以看到选择概率大于0的个数较少,而且分布相对集中,对于上图所选前60变量过多,可能需要多次交叉验证才能确定最佳的特征变量个数。

        基于所选变量所建模型的PLS预测结果如下所示,可知预测结果精度较高,能够实现目标指标的有效预测。

        对比发现,RF算法能够有效选择光谱特征变量,其基本分析过程跟iPLS相似,区别在于区间的可变性和变量的随机选择性,也正是这种过程产生了变量的竞争选择机制,进而确保了变量的有效性。

        至此,我们简要介绍了RF算法并应用实例数据进行了分析,下期会介绍区间随机蛙跳iRF算法,欢迎大家交流分析,有需要的可通过私信公众号加入光谱交流群。

随机蛙跳特征提取是一种用于处理图像和信号的特征提取算法,它借鉴了青蛙跳跃的行为,通过模拟青蛙跳跃的随机性和多样性,来获取图像或信号的重要信息。在Matlab中,可以使用以下步骤进行随机蛙跳特征提取: 1. 导入需要处理的图像或信号数据,例如使用Matlab的imread函数读取图像数据。 2. 对数据进行预处理,例如对彩色图像进行灰度化处理,可以使用Matlab的rgb2gray函数实现。 3. 将预处理后的数据转换为一维数组,这样可以方便地进行特征提取操作。例如,使用Matlab的reshape函数将图像数据转换为一维数组。 4. 设定随机蛙跳的参数,包括蛙群规模、跳跃次数、跳跃长度等。这些参数的选择需要根据具体情况和应用需求进行调整。 5. 使用循环结构实现随机蛙跳算法,首先生成随机的初始位置和方向,并根据跳跃长度进行移动。在每次跳跃过程中,计算当前位置的特征值,并将其存储到一个数组中。 6. 循环结束后,可以通过对特征值数组进行统计分析,例如计算平均值、标准差等,来得到最终的特征描述。 7. 根据实际需求,可以将提取到的特征用于图像分类、目标检测等应用。 总之,随机蛙跳特征提取是一种基于模拟算法的特征提取方法,通过模拟蛙跳随机性和多样性,获取图像或信号的重要信息。在Matlab中,可以通过几个简单的步骤来实现该算法,从而得到有效的特征描述。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值