乐趣区

关于数据挖掘:MATLAB偏最小二乘回归PLSR和主成分回归PCR分析光谱数据

全文链接:http://tecdat.cn/?p=2655

原文出处:拓端数据部落公众号

此示例显示如何在 matlab 中利用偏最小二乘回归(PLSR)和主成分回归(PCR),并探讨这两种办法的有效性。当存在大量预测变量时,PLSR 和 PCR 都是对因变量建模的办法,并且这些预测变量高度相干或甚至共线性。两种办法都将新的预测变量(称为成分)构建为原始预测变量的线性组合,但它们以不同的形式结构这些成分。PCR 创立成分来解释预测变量中察看到的变异性,而基本不思考因变量。另一方面,PLSR 的确将因变量思考在内,因而通常会导致模型可能应用更少的成分来适应因变量。

 主成分剖析 PCA 降维办法和 R 语言剖析葡萄酒可视化实例

主成分剖析 PCA 降维办法和 R 语言剖析葡萄酒可视化实例

,时长 04:30

加载数据

加载包含 401 个波长的 60 个汽油样品的光谱强度及其辛烷值的数据集。

set(gcf,'DefaultAxesColorOrder',jet(60));
xlabel('Wavelt Inde'); ylabel('Oct'); axis('tiht');
grid on

应用两个拟合数据

使 PLSR 模型拟合 10 个 PLS 成分和一个因变量。

为了充沛拟合数据,可能须要十个成分,但能够应用此拟合的诊断来抉择具备更少成分的更简略模型。例如,抉择成分数量的一种疾速办法是将因变量中解释的方差百分比绘制为成分数量的函数。

在实践中,在抉择成分数量时可能须要更加审慎。例如,穿插验证是一种宽泛应用的办法,稍后将在本示例中进行阐明。目前,上图显示具备两个成分的 PLSR 解释了察看到的大部分方差 y。计算双组分模型的拟合因变量。

接下来,拟合具备两个次要成分的 PCR 模型。第一步是 X 应用该 pca 函数执行主成分剖析,并保留两个主成分。而后,PCR 只是这两个成分的因变量的线性回归。当变量具备十分不同的可变性时,通常首先通过其标准偏差来标准每个变量。

从某种意义上说,上图中的比拟并不合理 – 通过观察双组分 PLSR 模型预测因变量的水平来抉择成分数(两个),并且没有阐明为什么 PCR 模型应该限度雷同数量的成分。然而,应用雷同数量的成分,PLSR 做得更好。实际上,察看上图中拟合值的程度散布,应用两个重量的 PCR 简直不比应用常数模型好。回归的 r 方值证实了这一点。

比拟两种模型的预测能力的另一种办法是在两种状况下将因变量绘制成两个预测变量。

如果不能以交互方式旋转图形,有点难以看到,但下面的 PLSR 图显示了严密扩散在立体上的点。另一方面,上面的 PCR 图显示点简直没有线性关系。

请留神,只管两个 PLS 成分是察看到的更好的预测因子,但下图显示它们解释的方差比例比 PCR 中应用的前两个主成分少。

PCR 曲线一致性较高的事实表明,为什么应用两种成分的 PCR 绝对于 PLSR 在拟合时体现很差。PCR 构建成分以便最好地解释 X,因而,前两个成分疏忽了数据拟合中察看到的重要信息 y。

拟合更多成分

随着在 PCR 中增加更多成分,它必然会更好地拟合原始数据 y,这仅仅是因为在某些时候,大多数重要的预测信息 X 将存在于次要成分中。例如,应用 10 个成分时,两种办法的残差远小于两个成分的残差。

穿插验证

在预测将来变量的察看后果时,抉择成分数量以缩小预期误差通常很有用。简略地应用大量成分将很好地拟合以后察看到的数据,但这是一种导致适度拟合的策略。过于拟合以后数据会导致模型不能很好地推广到其余数据,并对预期误差给出适度乐观的预计。

穿插验证是一种更加统计上正当的办法,用于抉择 PLSR 或 PCR 中的成分数量。它通过不重复使用雷同的数据来拟合模型和预计预测误差来防止适度拟合数据。因而,预测误差的预计不会乐观地向下偏差。

pls 能够抉择通过穿插验证来预计均方预测误差(MSEP),在这种状况下应用 10 倍 CV。

plsreg(X,y,10,'CV',10);

对于 PCR,crossval 联合用于计算 PCR 的平方误差之和,能够再次应用 10 倍穿插验证来预计 MSEP。

 sum(crossval(@ pcrsse,X,y,'KFold',10),1)/ n;

PLSR 的 MSEP 曲线表明两个或三个成分好。另一方面,PCR 须要四个成分能力取得雷同的预测精度。

事实上,PCR 中的第二个成分会减少模型的预测误差,这表明该成分中蕴含的预测变量的组合与其没有很强的相关性 y。再次,这是因为 PCR 构建成分来解释 X,而不是 y。

模型简洁

因而,如果 PCR 须要四个成分来取得与具备三个成分的 PLSR 雷同的预测精度,那么 PLSR 模型是否更加简洁?这取决于您思考的模型的哪个方面。

PLS 权重是定义 PLS 重量的原始变量的线性组合,即,它们形容了 PLSR 中的每个重量依赖于原始变量的权重。

相似地,PCA 载荷形容了 PCR 中每个成分依赖于原始变量的强度。

对于 PLSR 或 PCR,能够通过查看每个成分最重要的变量来为每个成分提供有意义的解释。例如,利用这些光谱数据,能够依据汽油中存在的化合物解释强度峰值,而后察看特定成分的权重挑选出大量这些化合物。从这个角度来看,更少的成分更易于解释,并且因为 PLSR 通常须要更少的成分来充沛预测因变量,因而会导致更简洁的模型。

另一方面,PLSR 和 PCR 都导致每个原始预测变量的一个回归系数加上截距。从这个意义上讲,两者都不是更简洁,因为无论应用多少成分,两种模型都依赖于所有预测变量。更具体地,对于这些数据,两个模型都须要 401 个光谱强度值以进行预测。

然而,最终目标可能是将原始变量集缩小到依然可能精确预测因变量的较小子集。例如,能够应用 PLS 权重或 PCA 载荷来仅抉择对每个成分奉献最大的那些变量。如前所示,来自 PCR 模型拟合的一些成分可次要用于形容预测变量的变动,并且可包含与因变量不强相干的变量的权重。因而,PCR 会导致保留预测不必要的变量。

对于本例中应用的数据,PLSR 和 PCR 所需的成分数量之间的差别不是很大,PLS 权重和 PCA 载荷抉择了雷同的变量。其余数据可能并非如此。

有问题欢送下方留言!


参考文献

1.matlab 应用教训模式合成 emd 对信号进行去噪

2.Matlab 应用 Hampel 滤波去除异样值

3.matlab 偏最小二乘回归 (PLSR) 和主成分回归 (PCR) 和主成分回归(PCR)”)

4.matlab 预测 ARMA-GARCH 条件均值和方差模型

5.matlab 中应用 VMD(变分模态合成)  “)

6.matlab 应用贝叶斯优化的深度学习

7.matlab 贝叶斯隐马尔可夫 hmm 模型

8.matlab 中的隐马尔可夫模型 (HMM) 实现实现 ”)

9.matlab 实现 MCMC 的马尔可夫切换 ARMA – GARCH 模型

退出移动版