全文链接: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模型