我们已经连续好几期在讲特征变量选择算法,这其中一个很重要的一个原因是:光谱数据的高维冗余性和目标值与少数解释变量之间的相关性,也就是特征解释问题。如何从实际测量的高维光谱数据中选择具有解释能力(特征变量)的变量是目前特征选择或者特征降维的主要研究内容,也是光谱分析建模的关键组成。
本期分享的随机蛙跳(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):控制正态分布方差的因子,用于控制抽取进入候选变量子集的变量数;
(4)w:用于重采样时调整变量个数;
(5):用于设定接受性能不优于 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; %模型参数,此处选PLS
F.minutes=toc/60; %计算时间/S
F.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算法,欢迎大家交流分析,有需要的可通过私信公众号加入光谱交流群。