光谱波长筛选算法

本文介绍了四种常用的波长选择算法在近红外光谱分析中的应用:SPA算法利用投影分析选择波长;UVE算法通过去除无信息变量优化模型;LAR算法是一种高效的变量选择方法;CARS算法基于PLS模型和蒙特卡洛采样选择特征波长。这些算法有助于建立预测准确且鲁棒的光谱模型。

系列文章目录

近红外光谱分析技术属于交叉领域,需要化学、计算机科学、生物科学等多领域的合作。为此,在(北京邮电大学杨辉华老师团队)指导下,近期准备开源传统的PLS,SVM,ANN,RF等经典算和SG,MSC,一阶导,二阶导等预处理以及GA等波长选择算法以及CNN、AE等最新深度学习算法,以帮助其他专业的更容易建立具有良好预测能力和鲁棒性的近红外光谱模型。



前言

NIRS是介于可见光和中红外光之间的电磁波,其波长范围为(1100∼2526 nm。 由于近红外光谱区与有机分子中含氢基团(OH、NH、CH、SH)振动的合频和 各级倍频的吸收区一致,通过扫描样品的近红外光谱,可以得到样品中有机分子含氢 基团的特征信息,常被作为获取样本信息的一种有效的载体。 基于NIRS的检测方法具有方便、高效、准确、成本低、可现场检测、不 破坏样品等优势,被广泛应用于各类检测领域。但 近红外光谱存在谱带宽、重叠较严重、吸收信号弱、信息解析复杂等问题,与常用的 化学分析方法不同,仅能作为一种间接测量方法,无法直接分析出被测样本的含量或 类别,它依赖于化学计量学方法,在样品待测属性值与近红外光谱数据之间建立一个 关联模型(或称校正模型,Calibration Model) ,再通过模型对未知样品的近红外光谱 进行预测来得到各性质成分的预测值。现有近红外建模方法主要为经典建模 (预处理+波长筛选进行特征降维和突出,再通过pls、svm算法进行建模)以及深度学习方法(端到端的建模,对预处理、波长选择等依赖性很低)

本篇主要讲述常见的波长选择算法(目前是matlab版本的,python版本有时间重写一下)

一、SPA算法

连续投影算法(successive projections algorithm, SPA) 是前向特征变量选择方法。SPA利用向量的投影分析,通过将波长投影到其他波长上,比较投影向量大小,以投影向量最大的波长为待选波长,然后基于矫正模型选择最终的特征波长。SPA选择的是含有最少冗余信息及最小共线性的变量组合。

function chain = projections_qr(X,k,M)

% Projections routine for the Successive Projections Algorithm using the
% built-in QR function of Matlab
%
% chain = projections(X,k,M)
%
% X --> Matrix of predictor variables (# objects N x # variables K)
% k --> Index of the initial column for the projection operations
% M --> Number of variables to include in the chain
%
% chain --> Index set of the variables resulting from the projection operations

X_projected = X;

norms = sum(X_projected.^2);    % Square norm of each column vector
norm_max = max(norms); % Norm of the "largest" column vector

X_projected(:,k) = X_projected(:,k)*2*norm_max/norms(k); % Scales the kth column so that it becomes the "largest" column

[dummy1,dummy2,order] = qr(X_projected,0); 
chain = order(1:M)';

二、UVE算法

无信息变量去除算法(uninformative variable elimination,UVE)能够去除对建模共效率较小的波长变量,选出特征波长变量,被去除的波长变量我们称之为无信息变量。无信息变量去除算法的建立是基于偏最小二乘(partial least squares,PLS)算法。去除无信息变量,减少了建模所用的变量个数,降低了模型复杂性。为了选择无信息变量,UVE算法通过对PLS模型中添加一组与原始变量数量相同的白噪声变量,然后基于PLS模型的交叉留一法得到每个变量对应的回归系数,包括噪声变量。用每个变量系数的稳定值除以标准差,将他们的商与随机变量矩阵得到的稳定值做比较,删除那些与随机变量一样对建模无效的波长变量。

function [B,C,P,T,U,R,R2X,R2Y]=plssim(X,Y,A,S,XtX);

[n,px] = size(X); [n,m] = size(Y);   				% size of the input data matrices
if nargin<5, S = []; end, if isempty(S), S=(Y'*X)'; end		% if XtX not inputted, S=[]; always when S=[] then S=(Y'*X)'
if nargin<4, XtX=[]; end					% if S is not inputted, XtX=[];
if isempty(XtX) & n>3*px, XtX = X'*X; end			% when XtX=[] and X is very "tall", the booster XtX is calculated
if nargin<3, A=10; end, A = min([A px n-1]);			% if A is not inputted, then the defaul A is min[10 px n-1]
T = zeros(n ,A); U = T;						% initialization of variables
R = zeros(px,A); P = R; V = R;
C = zeros(m ,A); 
R2Y = zeros(1,A);
z = zeros(m,1); v = zeros(px,1);
if n>px, S0 = S; end, StS = S'*S;				% SIMPLS algorithm
nm1 = n-1;
tol = 0;
for a = 1:A
  StS = StS-z*z'; 
  [Q,LAMBDA] = eig(StS); 
  [lambda,j] = max(diag(LAMBDA)); 
  q = Q(:,j(1));
  r = S*q;
  t = X*r;
  if isempty(XtX), p = (t'*X)'; else p = XtX*r; end
  if n>px, d = sqrt(r'*p/nm1); else d = sqrt(t'*t/nm1); end
  if d<tol, 
	disp(' ')
        disp('WARNING: the required number of factors (A) is too high !')
	disp('Less PLS factors were extracted from the data in the PLSSIM program !') 
	disp(' ')
	break,
, 	else tol=max(tol,d/1e5);
  end
  v = p-V(:,1:max(1
<think>首先,用户的问题是:“我想查找关于高光谱特征波段筛选的方法或技术请问高光谱数据特征波段筛选方法技术”。这似乎是用户第一次提问,所以我需要基于提供的引用来回答。系统级指令:-所有行内数学表达式必须使用$...$格式。-独立公式必须使用$$...$$格式并单独成段。-LaTeX语法正确。-使用中文回答。-生成相关问题。-回答中引用的段落末尾自然地添加引用标识,例如:[^1]-用户可见层:回答结构清晰,帮助用户逐步解决问题,尽量保证回答真实可靠。参考站内引用:-[^1]:关于高光谱降维的遗传算法方法。-[^2]:CARS算法用于高光谱特征波段选择。-[^3]:基于递归特征消除的方法。-[^4]:多光谱/高光谱遥感影像最佳特征波段选择方法,涉及标准差相关系数。用户需求:查找高光谱数据特征波段筛选的方法或技术。回答结构:1.**介绍高光谱特征波段筛选的必要性**:解释为什么需要筛选特征波段,如减少冗余、避免“Hughes”现象、降低计算复杂度等。参考[^1][^2]。2.**概述常见方法**:列出并简要描述几种方法:-特征选择(波段选择):如遗传算法[^1]、CARS算法[^2]、递归特征消除[^3]。-特征提取:如PCA等([^1]中提到)。-其他方法:如基于统计的方法,使用标准差相关系数[^4]。3.**详细说明几种关键方法**:-遗传算法(GA):参考[^1],描述其原理。-CARS算法:参考[^2],简要说明。-递归特征消除(RFE):参考[^3],描述其步骤。-基于统计的方法:参考[^4],涉及标准差相关系数。4.**添加示例或代码片段**:如果可能,添加代码示例,但要确保格式正确。参考[^3]有Python代码实现RFE。5.**生成相关问题**:在末尾添加相关问题。6.**引用标识**:在描述每个方法时,自然地添加引用标识。确保LaTeX格式:-行内数学:使用$...$,例如描述标准差时:$\sigma$。-独立公式:如果有,使用$$...$$。完整回答大纲:-开头:解释高光谱特征波段筛选的重要性。-方法分类:特征选择vs.特征提取。-具体方法:-遗传算法:描述并引用[^1]。-CARS算法:描述并引用[^2]。-递归特征消除:描述并引用[^3],添加代码片段。-基于统计的方法:描述并引用[^4],可能添加数学表达式。-结束语:总结并建议。-相关问题。代码片段:从[^3]中,提到Python代码实现了RFE特征选择。我可以提供一个简化版代码示例。数学表达式:-在[^4]中,提到标准差相关系数:$\sigma$相关系数矩阵。-例如:使用$\text{标准差}$或$\sigma$。相关问题:-基于内容,生成3-5个相关问题,如:1.如何评估高光谱特征波段筛选的效果?2.特征选择与特征提取有什么区别?3.在实际应用中,如何选择合适的高光谱特征筛选方法?4.高光谱数据预处理步骤有哪些?5.遗传算法在波段选择中的具体实现步骤是什么?最终回答用中文。</think>### 高光谱数据特征波段筛选方法 高光谱数据包含数十至数百个光谱波段(如PaviaU数据集有103个波段),这些波段之间存在大量冗余信息,可能导致“Hughes现象”(即分类精度随波段增加先升后降),并增加存储计算负担[^1]。特征波段筛选(又称波段选择)旨在从高维数据中提取最相关的子集,保留物理意义并提升模型性能(如分类或回归精度)。以下我将逐步介绍主流方法,分为特征选择(直接筛选波段)特征提取(变换数据)两类,重点聚焦特征选择技术。 #### 一、特征选择方法(直接筛选波段) 特征选择通过评估波段重要性,保留关键波段,物理意义明确,适用于需解释性的场景。 1. **遗传算法(Genetic Algorithm, GA)** 遗传算法模拟自然进化过程,通过选择、交叉变异操作优化波段子集。它以分类精度或信息量为适应度函数,迭代筛选最优波段组合。例如,处理PaviaU数据时,GA可减少冗余波段,避免“Hughes现象”[^1]。 - **优势**:全局搜索能力强,适用于非线性问题。 - **步骤示例**: - 初始化种群(随机波段子集)。 - 计算适应度(如分类准确率)。 - 选择高适应度个体,进行交叉变异。 - 迭代至收敛。 2. **竞争性自适应重加权采样(CARS)** CARS算法基于PLS(偏最小二乘回归)模型,通过蒙特卡洛采样指数衰减函数动态筛选波段。它强调波段间的竞争关系,优先保留与目标变量相关性高的波段[^2]。 - **数学基础**:在每次采样中,波段权重更新为: $$ w_j = \exp\left(-\frac{|c_j|}{\max(|c|)}\right) $$ 其中$c_j$是第$j$个波段的回归系数。 - **优势**:高效处理多重共线性,提升模型泛化能力。 3. **递归特征消除(Recursive Feature Elimination, RFE)** RFE通过迭代移除最不重要的波段来优化子集。它依赖于基模型(如SVM或随机森林)的重要性评分。Python中可用`sklearn`库实现[^3]。 ```python from sklearn.feature_selection import RFE from sklearn.svm import SVC import numpy as np # 假设X是高光谱数据(样本数×波段数),y是标签 model = SVC(kernel='linear') selector = RFE(model, n_features_to_select=20) # 筛选前20个关键波段 selector.fit(X, y) selected_bands = np.where(selector.support_)[0] # 获取选中波段索引 ``` - **优势**:结合交叉验证,确保稳定性;代码易于集成[^3]。 4. **基于统计的方法(如OIF算法)** 通过计算波段的标准差相关系数筛选信息量大且冗余低的波段。例如,用标准差$ \sigma $衡量信息量,相关系数$ \rho $评估冗余性。最佳指数(OIF)定义为: $$ \text{OIF} = \frac{\sigma_i + \sigma_j}{|\rho_{ij}|} $$ 其中$ \sigma_i $$ \sigma_j $是波段$i$$j$的标准差,$ \rho_{ij} $是它们的相关系数。值越大表示波段组合越优[^4]。 - **工具实现**:可用ERDAS或Python的`numpy`计算统计量。 #### 二、特征提取方法(变换数据) 特征提取通过数学变换降维,但可能损失物理意义: - **主成分分析(PCA)**:将数据投影到方差最大方向,减少相关性。 - **线性判别分析(LDA)**:最大化类间差异,适用于监督问题。 #### 方法选择建议 - **优先特征选择**:当需保留波段物理意义时(如遥感解释),推荐GA或CARS。 - **计算效率考虑**:RFE统计方法更易实现;GA适合复杂优化。 - **数据规模**:大数据集可选CARS或RFE,小数据集用统计方法。 总之,高光谱特征波段筛选能显著提升模型性能。实际应用中,建议结合交叉验证评估筛选效果(如分类精度变化)[^2][^3]。
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值