主要内容

偏最小二乘回归和主成分回归

这个例子展示了如何应用偏最小二乘回归(PLSR)和主成分回归(PCR),并探讨了两种方法的有效性。PLSR模型和PCR方法响应变量当有大量的预测变量,这些预测是高度相关的,甚至共线。这两种方法构造新的预测变量,称为组件,作为最初的预测变量的线性组合,但是他们以不同的方式构造这些组件。PCR创建组件来解释观察到的变化的预测变量,而不考虑反应变量。另一方面,PLSR确实考虑到响应变量,因此常常会导致模型能够适应反应变量用更少的组件。是否最终转化为更简洁的模型,在其实际应用方面,取决于上下文。

加载数据

加载数据集组成的光谱强度的60的汽油样品401波长,和他们的辛烷值。描述这些数据在Kalivas约翰H。,"Two Data Sets of Near Infrared Spectra," Chemometrics and Intelligent Laboratory Systems, v.37 (1997) pp.255-259.

负载光谱近红外光谱辛烷
类属性名称大小字节NIR 60 x401 192480双辛烷60 x1 480双
(假,h) =(辛烷);oldorder =得到(gcf,“DefaultAxesColorOrder”);集(gcf,“DefaultAxesColorOrder”,jet (60));plot3 (repmat(1:401, 60岁,1)”,repmat(辛烷(h), 1401),近红外光谱(h:) ');集(gcf,“DefaultAxesColorOrder”,oldorder);包含(“波长指数”);ylabel (“辛烷”);轴(“紧”);网格

图包含一个坐标轴对象。坐标轴对象包含60线类型的对象。

拟合的数据两部分组成

使用plsregress函数以适应PLSR模型与十请组件和一个响应。

X =近红外光谱;y =辛烷;(氮、磷)= (X)大小;[Xloadings, Yloadings Xscores、Yscores betaPLS10, PLSPctVar] = plsregress (X, y, 10);

十个组件可能需要充分符合以上数据,但从这个适合可以用来诊断做出选择更简单的用更少的组件模型。例如,一个快速的方法选择组件的数量是情节的百分比响应变量作为函数的方差解释组件的数量。

情节(1:10,cumsum (100 * PLSPctVar (2:)),“博”);包含(请组件的数量);ylabel (百分比方差解释说在Y ');

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象。

在实践中,更多的关心可能会明智的选择组件的数量。例如,交叉验证,是一种广泛使用的方法,将在后面说明。现在,上述情节表明PLSR最多两个组件解释的方差y。双组分模型计算拟合响应值。

[Xloadings, Yloadings Xscores、Yscores betaPLS] = plsregress (X, y, 2);yfitPLS = [(n, 1)的X] * betaPLS;

接下来,适合一个PCR与两个主要组件模型。第一步是进行主成分分析X,使用主成分分析功能,保留两个主要组件。PCR是就一个响应变量的线性回归这两个组件。是非常有意义正常化时首先每个变量的标准偏差变量有不同数量的变化,然而,这并不是在这里完成。

[PCALoadings, PCAScores PCAVar] = pca (X,“经济”、假);betaPCR =回归(y-mean (y), PCAScores (: 1:2));

使PCR结果更容易解释的原始光谱数据,转换为原始的回归系数,偏心变量。

betaPCR = PCALoadings (: 1:2) * betaPCR;betaPCR =[意思(y) (X) * betaPCR;betaPCR];yfitPCR = [(n, 1)的X] * betaPCR;

情节上与观察到的PLSR和PCR反应。

情节(y, yfitPLS,“波”y yfitPCR“r ^”);包含(观察到的响应的);ylabel (“拟合响应”);传奇({“PLSR 2组件”PCR与2组件的},“位置”,“西北”);

图包含一个坐标轴对象。坐标轴对象包含2线类型的对象。这些对象代表PLSR 2组件,PCR与2组件。

从某种意义上说,上述情节的比较是不公平的——组件的数量(2)选择通过观察一个双组分PLSR模型预测响应,并没有理由PCR模型应该限制在相同数量的组件。然而,与相同数量的组件PLSR在拟合做一个更好的工作y。事实上,在拟合值的水平散射在上面的图中,PCR与两个组件并不比使用一个常数模型。的平方值两个回归证实。

TSS =总和(y-mean (y)) ^ 2);RSS_PLS = ((y-yfitPLS) ^ 2)总和;rsquaredPLS = 1 - RSS_PLS / TSS
rsquaredPLS = 0.9466
RSS_PCR = ((y-yfitPCR) ^ 2)总和;rsquaredPCR = 1 - RSS_PCR / TSS
rsquaredPCR = 0.1962

另一种方法来比较两个模型的预测能力是情节反应变量对两个在这两种情况下预测因子。

plot3 (Xscores (: 1) Xscores (:, 2), y-mean (y),“波”);传奇(“PLSR”);网格;视图(-30年,30);

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象。该对象代表PLSR。

有点很难看到没有能够交互式地旋转图,但PLSR阴谋上面点密切散落着一架飞机。另一方面,PCR下面图显示了一个云点的线性关系。

plot3 (PCAScores (: 1) PCAScores (:, 2), y-mean (y),“r ^”);传奇(聚合酶链反应的);网格;视图(-30年,30);

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象。该对象代表PCR。

注意,虽然两个请组件是观察到的更好的预测y下图显示了,他们解释观察到的差异程度X比前两个主成分用于PCR。

情节(1:10,100 * cumsum (PLSPctVar (1:)),“这”1:10,100 * cumsum (PCAVar(1:10)) /笔(PCAVar (1:10)),的r - ^);包含(主成分数的);ylabel (的百分比差异解释X ');传奇({“PLSR”聚合酶链反应的},“位置”,“本身”);

图包含一个坐标轴对象。坐标轴对象包含2线类型的对象。这些对象代表PLSR, PCR。

PCR曲线是一致高表明PCR与两个组件为什么这样一个可怜的工作,相对于PLSR,配件y。PCR构建组件最好的解释X,因此,前两个组件忽略重要的信息数据拟合观测到y

拟合与更多的组件

随着越来越多的组件被添加在PCR,它一定会做得更好的拟合原始数据y,因为在某一时刻最重要的预测信息X将出现在主成分。例如,下图显示了残差的两种方法的区别在于更戏剧性的在使用十个组件比两个组件。

yfitPLS10 = [(n, 1)的X] * betaPLS10;betaPCR10 =回归(y-mean (y), PCAScores (:, 1:10));betaPCR10 = PCALoadings (: 1:10) * betaPCR10;betaPCR10 =[意思(y) (X) * betaPCR10;betaPCR10];yfitPCR10 = [(n, 1)的X] * betaPCR10;情节(y, yfitPLS10,“波”y yfitPCR10“r ^”);包含(观察到的响应的);ylabel (“拟合响应”);传奇({“与10组件PLSR”“PCR与10组件”},“位置”,“西北”);

图包含一个坐标轴对象。坐标轴对象包含2线类型的对象。这些对象代表PLSR 10组件,PCR与10组件。

两种模型适合y相当准确,尽管PLSR仍然让稍微更准确。但是,十个组件仍是一个任意选择的数字模型。

选择和交叉验证组件的数量

通常是有用的选择组件的数量最小化预期的错误预测未来观察的反应的预测变量。仅仅使用大量的组件将搞好当前的观测数据,但是是一个策略,导致过度拟合。拟合当前数据太好导致模型不能很好地推广到其他数据,并给出了过于乐观的估计预期的错误。

交叉验证是一个统计上更合理的方法来选择组件PLSR或PCR的数量。它可以避免过度拟合数据不重用相同的数据适合模型和估计预测误差。因此,乐观地预测误差的估计是不带偏见的下降。

plsregress有一个选项来估计均方预测误差(MSEP)通过交叉验证,在这种情况下C-V使用10倍。

[Xl, Yl, X, y,β,pctVar, PLSmsep] = plsregress (X, y,,“简历”10);

PCR,crossval结合一个简单的函数来计算PCR的平方误差的总和,可以估计MSEP,再次使用10倍交叉验证。

PCRmsep = (crossval (@pcrsse, X, y,和“KFold”10),1)/ n;

PLSR MSEP曲线表明两个或三个组件尽可能好。另一方面,PCR需要四个组件得到相同的预测精度。

:情节(0:10 PLSmsep (2),“这”0:10 PCRmsep,的r - ^);包含(“组件”);ylabel (“估计均方预测误差”);传奇({“PLSR”聚合酶链反应的},“位置”,“不”);

图包含一个坐标轴对象。坐标轴对象包含2线类型的对象。这些对象代表PLSR, PCR。

事实上,第二部分在PCR增加模型的预测误差,表明预测变量中包含组件的组合并不强烈相关y。再一次,这是因为PCR构建组件解释的变化X,而不是y

模型吝啬

所以如果PCR需要四个组件相同的预测精度PLSR三个组件,是PLSR模型更简洁吗?这取决于你认为什么方面的模型。

请权重是原始变量的线性组合定义请组件,即。,they describe how strongly each component in the PLSR depends on the original variables, and in what direction.

[Xl, Yl, X, y,β,pctVar, mse,统计]= plsregress (X, y, 3);情节(1:401 stats.W,“- - -”);包含(“变量”);ylabel (“请重”);传奇({“组件1日”“第二部分”“第三部分”},“位置”,“西北”);

图包含一个坐标轴对象。坐标轴对象包含3线类型的对象。这些对象代表第一组件,第二组件,第三组件。

同样,PCA载荷描述强烈每个组件在PCR取决于原始变量。

情节(1:401 PCALoadings (:, 1:4),“- - -”);包含(“变量”);ylabel (“PCA加载”);传奇({“组件1日”“第二部分”“第三部分”“第四组件”},“位置”,“西北”);

图包含一个坐标轴对象。坐标轴对象包含4线类型的对象。这些对象代表第一组件,第二组件,第三组件,4日组件。

PLSR或PCR,也许每个组件可以通过检查身体有意义的解释变量它重量最多。例如,与这些光谱数据可以解释强度峰值的化合物存在于汽油,然后观察权重为一个特定的组件挑选少量这些化合物。从这个角度来看,更少的组件是简单的解释,因为PLSR通常需要更少的组件来预测充分响应,它会导致更简约模型。

另一方面,PLSR和PCR结果在一个为每个原始预测变量的回归系数,加上一个拦截。在这个意义上,也更加节俭,因为不管有多少组件使用,两种模型依赖于预测。更具体地说,对于这些数据,两个模型需要401光谱强度值来作出预测。

然而,最终目标可能减少原始变量设置为一个较小的子集仍然能够准确预测的响应。例如,它可能会使用请重量或PCA载荷选择只有那些最有助于每个组件的变量。如图所示,一些组件从PCR模型适合为主要描述预测变量的变化,和可能包括大型权重与响应变量不是强相关。因此,PCR可以导致保留预测变量是不必要的。

在这个示例中,使用的数据的不同组件的数量所需要的PLSR PCR对准确预测并不是很好,请权重和PCA载荷似乎挑出相同的变量。这可能并不适用于其他数据。

另请参阅

|

相关的话题