光谱特征选择---连续投影算法SPA
作为光谱分析的重要环节,如何从冗余、复杂的变量中选取特征变量直接决定了预测模型的性能,在实际特征选择过程中,通常从两方面考虑特征选择的合理性:一是对目标变量y的解释性,二是不同自变量x间的冗余性,前者是考虑变量自身或变量组合的预测性能,后者考虑变量间的冗余问题,如何在保证对模型性能的同时减少变量冗余对于提高模型精度、降低过拟合风险和提高模型泛化性十分重要。
本周分享连续投影算法(successive projections algorithm,SPA),SPA算法2001年发表在Chemometrics and Intelligent Laboratory Systems期刊上,该算法原理简单,适用性较强,目前还有很多研究应用该方法进行分析。我们首先简单分析一下SPA的分析原理和关键步骤,然后给出代码,最后应用一个实例数据进行分析测试,完整代码及答疑在交流群,不在此展示。
1. SPA算法
SPA是一种前向迭代搜索方法,即从一个波长开始,然后在每次迭代中加入一个新变量,直至所选变量数达到设定值N。SPA的目的是选择光谱信息最少冗余的波长以解决共线性问题,其实现步骤可表示如下:
注意:对于波段数和起始位置的选择问题,可以通过对比不同参数的结果进行分析。
2. 代码分析
function [SelectedW] = SPA(SpecCal,Winitial,totN)
% SpecCal 光谱矩阵(行为样品,列为波段)
% Winitial 起始波段
% totN 选择的波段总数
% SelectedW 最终选择的波段
[NoSp,Novab] = size(SpecCal);
Varibs = 1:Novab;
SelectedW = ones(1,totN);
Specj = SpecCal;
Specn = SpecCal(:,Winitial);
SelectedW(1) = Winitial;
for n = 1:totN-1 %待确定变量数的循环
litW =SelectedW(1:n);
Jnotsel = setdiff(Varibs,litW); %确定未映射变量
APSpecj = zeros(1,length(Jnotsel));
PSpecj = zeros(NoSp,Novab);
stP = 1;
for j = Jnotsel %未确定变量的循环
PSpecj(:,j) = Specj(:,j) - (Specj(:,j)'*Specn)*Specn*(Specn'*Specn)^(-1);
APSpecj(stP) = norm(PSpecj(:,j));
stP = stP+1;
end
SelectedW(n+1) = Jnotsel(APSpecj==max(APSpecj));
Specn = SpecCal(:,SelectedW(n+1));
Specj = PSpecj;
end
end
3. 实例分析
此处以某油掺假比例预测数据为例,光谱数据为39x256,波长范围为897-2124 nm,选择SNV进行预处理,所得光谱数据为:
图1 原始与SNV光谱
SPA选择的特征变量(前60)分布为:
图2 SPA选择特征分布
分析发现,所选变量主要集中在1780nm左右,而在其他两个峰没有选择特征变量,主要原因是特征选择过程属于无监督过程,仅从自变量分布进行分析,未建立有效的预测模型。基于上述模型所建模型的预测结果为:
图3 SPA-PLS分析结果
实验分析结果表明,SPA-PLS模型的训练集和预测集精度相近,相比于原始数据集(0.96,0.93,LVs=4),SPA能够有效提高模型性能,但是相比于CARS,性能提升有限,主要原因是该方法特征选择过程为无监督过程,选择的变量最大化解释了自变量空间,未建立预测模型,因此变量解释能力有限。
欢迎加入光谱分析交流群或添加个人微信(lyqhcxx060111)。
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击