偏最小二乘回归(PLSR)和主成分回归(PCR)

原文http://tecdat.cn/?p=2655

此示例显示如何在matlab中应用偏最小二乘回归(PLSR)和主成分回归(PCR),并讨论这两种方法的有效性。当存在大量预测变量时,PLSR和PCR都是对响应变量建模的方法,而且这些预测变量高度相关或甚至共线。两种方法都将新的预测变量(称为组件)构建为原始预测变量的线性组合,但它们以不一样的方式构造这些组件。PCR建立组件来解释预测变量中观察到的变异性,而根本不考虑响应变量。另外一方面,PLSR确实将响应变量考虑在内,所以一般会致使模型可以使用更少的组件来适应响应变量。函数

加载数据

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

使用两个 拟合数据

使用该plsregress功能使PLSR模型适用于10个PLS组件和一个响应。blog

为了充分拟合数据,可能须要十个组件,但可使用此拟合的诊断来选择具备更少组件的更简单模型。例如,选择组件数量的一种快速方法是将响应变量中解释的方差百分比绘制为组件数量的函数。rem

在实践中,在选择组件数量时可能须要更加谨慎。例如,交叉验证是一种普遍使用的方法,稍后将在本示例中进行说明。目前,上图显示具备两个成分的PLSR解释了观察到的大部分方差y。计算双组分模型的拟合响应值。get

接下来,拟合具备两个主要组分的PCR模型。第一步是X使用该pca函数执行主成分分析,并保留两个主成分。而后,PCR只是这两个组分的响应变量的线性回归。当变量具备很是不一样的可变性时,一般首先经过其标准误差来规范化每一个变量是有意义的,可是,这里没有作到。it

从某种意义上说,上图中的比较并不合理 - 经过观察双组分PLSR模型预测响应的程度来选择组分数(两个),而且没有理由为何PCR模型应该限制在相同数量的组件。然而,使用相同数量的组件,PLSR在安装方面作得更好y。实际上,观察上图中拟合值的水平散射,使用两个份量的PCR几乎不比使用常数模型好。两次回归的r平方值证明了这一点。class

比较两种模型的预测能力的另外一种方法是在两种状况下将响应变量绘制成两个预测变量。变量

若是不能以交互方式旋转图形,有点难以看到,但上面的PLSR图显示了一个紧密分散在平面上的点。另外一方面,下面的PCR图显示了点云,几乎没有线性关系的指示。方法

请注意,尽管两个PLS组分是观察到的更好的预测因子y,但下图显示它们解释了观察到的差别X比PCR中使用的前两个主要组分少。im

PCR曲线一致性较高的事实代表,为何使用两种成分的PCR相对于PLSR在拟合时表现如此糟糕y。PCR构建组件以便最好地解释X,所以,前两个组件忽略了数据中适合观察到的重要信息y。

适合更多组件

随着在PCR中添加更多组件,它必然会更好地拟合原始数据y,这仅仅是由于在某些时候,大多数重要的预测信息X将存在于主要组件中。例如,下图显示,使用10个组件时,两种方法的残差差别远小于两个组件的残差差别。

交叉验证

在预测将来对预测变量的观察结果时,选择组件数量以减小预期偏差一般颇有用。简单地使用大量组件将很好地拟合当前观察到的数据,但这是一种致使过分拟合的策略。过于拟合当前数据会致使模型不能很好地推广到其余数据,并对预期偏差给出过分乐观的估计。

交叉验证是一种更加统计上合理的方法,用于选择PLSR或PCR中的组分数量。它经过不重复使用相同的数据来适应模型和估计预测偏差来避免过分拟合数据。所以,预测偏差的估计不会乐观地向下误差。

plsregress 能够选择经过交叉验证来估计均方预测偏差(MSEP),在这种状况下使用10倍CV。

[X1,Y1,Xs,Ys,β,pctVar,PLSmsep] = plsregress(X,y,10,'CV',10);

对于PCR,crossval结合用于计算PCR的平方偏差之和的简单函数,能够再次使用10倍交叉验证来估计MSEP。

PCRmsep = 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负载彷佛选择了相同的变量。其余数据可能并不是如此。

有问题欢迎下方留言!

相关文章
相关标签/搜索