2021-03-11 · 一起做有态度的数据人
原文:http://tecdat.cn/?p=2655
此示例显示如何在matlab中应用偏最小二乘回归(PLSR)和主成分回归(PCR),并讨论这两种方法的有效性。当存在大量预测变量时,PLSR和PCR都是对因变量建模的方法,并且这些预测变量高度相关或甚至共线性。两种方法都将新的预测变量(称为成分)构建为原始预测变量的线性组合,但它们以不同的方式构造这些成分。PCR创建成分来解释预测变量中观察到的变异性,而根本不考虑因变量。另一方面,PLSR确实将因变量考虑在内,因此通常会导致模型能够使用更少的成分来适应因变量。
加载数据
加载包括401个波长的60个汽油样品的光谱强度及其辛烷值的数据集。
使用两个拟合数据
使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)
4.matlab预测ARMA-GARCH 条件均值和方差模型
5.matlab中使用VMD(变分模态分解)
6.matlab使用贝叶斯优化的深度学习
7.matlab贝叶斯隐马尔可夫hmm模型
8.matlab中的隐马尔可夫模型(HMM)实现
9.matlab实现MCMC的马尔可夫切换ARMA – GARCH模型
2013-05-06
最小二乘法是用最简的方法求得一些绝对不可知的真值,而令误差平方之和为最小。
最小二乘法通常用于曲线拟合。很多其他的优化问题也可通过最小化能量或最大化熵用最小二乘形式表达。
比如从最简单的一次函数y=kx+b讲起
已知坐标轴上有些点(1.1,2.0),(2.1,3.2),(3,4.0),(4,6),(5.1,6.0),求经过这些点的图象的一次函数关系式.
当然这条直线不可能经过每一个点,我们只要做到5个点到这条直线的距离的平方和最小即可,这这就需要用到最小二乘法的思想.然后就用线性拟合来求.讲起来一大堆,既然你只问最小二乘法,我就讲这么多.
推荐于2016-05-25
长期以来,模型式的方法和认识性的方法之间的界限分得十分清楚。而偏最小二乘法则把它们有机的结合起来了,在一个算法下,可以同时实现回归建模(多元线性回归)、数据结构简化(主成分分析)以及两组变量之间的相关性分析(典型相关分析)。这是多元统计数据分析中的一个飞跃。
偏最小二乘法在统计应用中的重要性体现在以下几个方面:
偏最小二乘法是一种多因变量对多自变量的回归建模方法。偏最小二乘法可以较好的解决许多以往用普通多元回归无法解决的问题。
偏最小二乘法之所以被称为第二代回归方法,还由于它可以实现多种数据分析方法的综合应用。
主成分回归的主要目的是要提取隐藏在矩阵X中的相关信息,然后用于预测变量Y的值。这种做法可以保证让我们只使用那些独立变量,噪音将被消除,从而达到改善预测模型质量的目的。但是,主成分回归仍然有一定的缺陷,当一些有用变量的相关性很小时,我们在选取主成分时就很容易把它们漏掉,使得最终的预测模型可靠性下降,如果我们对每一个成分进行挑选,那样又太困难了。
偏最小二乘回归可以解决这个问题。它采用对变量X和Y都进行分解的方法,从变量X和Y中同时提取成分(通常称为因子),再将因子按照它们之间的相关性从大到小排列。现在,我们要建立一个模型,我们只要决定选择几个因子参与建模就可以了
基本概念
偏最小二乘回归是对多元线性回归模型的一种扩展,在其最简单的形式中,只用一个线性模型来描述独立变量Y与预测变量组X之间的关系:
Y = b0 + b1X1 + b2X2 + ... + bpXp
在方程中,b0是截距,bi的值是数据点1到p的回归系数。
例如,我们可以认为人的体重是他的身高、性别的函数,并且从各自的样本点中估计出回归系数,之后,我们从测得的身高及性别中可以预测出某人的大致体重。对许多的数据分析方法来说,最大的问题莫过于准确的描述观测数据并且对新的观测数据作出合理的预测。
多元线性回归模型为了处理更复杂的数据分析问题,扩展了一些其他算法,象判别式分析,主成分回归,相关性分析等等,都是以多元线性回归模型为基础的多元统计方法。这些多元统计方法有两点重要特点,即对数据的约束性:
变量X和变量Y的因子都必须分别从X'X和Y'Y矩阵中提取,这些因子就无法同时表示变量X和Y的相关性。
预测方程的数量永远不能多于变量Y跟变量X的数量。
偏最小二乘回归从多元线性回归扩展而来时却不需要这些对数据的约束。在偏最小二乘回归中,预测方程将由从矩阵Y'XX'Y中提取出来的因子来描述;为了更具有代表性,提取出来的预测方程的数量可能大于变量X与Y的最大数。
简而言之,偏最小二乘回归可能是所有多元校正方法里对变量约束最少的方法,这种灵活性让它适用于传统的多元校正方法所不适用的许多场合,例如一些观测数据少于预测变量数时。并且,偏最小二乘回归可以作为一种探索性的分析工具,在使用传统的线性回归模型之前,先对所需的合适的变量数进行预测并去除噪音干扰。
因此,偏最小二乘回归被广泛用于许多领域来进行建模,象化学,经济学,医药,心理学和制药科学等等,尤其是它可以根据需要而任意设置变量这个优点更加突出。在化学计量学上,偏最小二乘回归已作为一种标准的多元建模工具。
计 算 过 程
基本模型
作为一个多元线性回归方法,偏最小二乘回归的主要目的是要建立一个线性模型:Y=XB+E,其中Y是具有m个变量、n个样本点的响应矩阵,X是具有p个变量、n个样本点的预测矩阵,B是回归系数矩阵,E为噪音校正模型,与Y具有相同的维数。在通常情况下,变量X和Y被标准化后再用于计算,即减去它们的平均值并除以标准偏差。
偏最小二乘回归和主成分回归一样,都采用得分因子作为原始预测变量线性组合的依据,所以用于建立预测模型的得分因子之间必须线性无关。例如:假如我们现在有一组响应变量Y(矩阵形式)和大量的预测变量X(矩阵形式),其中有些变量严重线性相关,我们使用提取因子的方法从这组数据中提取因子,用于计算得分因子矩阵:T=XW,最后再求出合适的权重矩阵W,并建立线性回归模型:Y=TQ+E,其中Q是矩阵T的回归系数矩阵,E为误差矩阵。一旦Q计算出来后,前面的方程就等价于Y=XB+E,其中B=WQ,它可直接作为预测回归模型。
偏最小二乘回归与主成分回归的不同之处在于得分因子的提取方法不同,简而言之,主成分回归产生的权重矩阵W反映的是预测变量X之间的协方差,偏最小二乘回归产生的权重矩阵W反映的是预测变量X与响应变量Y之间的协方差。
在建模当中,偏最小二乘回归产生了pxc的权重矩阵W,矩阵W的列向量用于计算变量X的列向量的nxc的得分矩阵T。不断的计算这些权重使得响应与其相应的得分因子之间的协方差达到最大。普通最小二乘回归在计算Y在T上的回归时产生矩阵Q,即矩阵Y的载荷因子(或称权重),用于建立回归方程:Y=TQ+E。一旦计算出Q,我们就可以得出方程:Y=XB+E,其中B=WQ,最终的预测模型也就建立起来了。
非线性迭代偏最小二乘法
用于计算偏最小二乘回归的一种标准算法是非线性迭代偏最小二乘法(NIPALS),在这种算法中有许多变量,有些被规范化了,有些却没有。下面提到的算法被认为是非线性迭代偏最小二乘法中最有效的一种。
对h=1...c,且A0=X'Y, M0=X'X, C0=I,变量c已知。
计算qh,Ah'Ah的主特征向量。
wh=GhAhqh, wh=wh/||wh||,并将wh作为W的列向量。
ph=Mhwh, ch=wh'Mhwh, ph=ph/ch,并将ph作为P的列向量。
qh=Ah'wh/ch,并将qh作为Q的列向量。
Ah+1=Ah - chphqh',Bh+1=Mh - chphph'
Ch+1=Ch - whph'
得分因子矩阵T可以计算出来:T=XW,偏最小二乘回归系数B也可由公式B=WQ计算出。
SIMPLS算法
还有一种对偏最小二乘回归组分的估计方法,被称为SIMPLS算法。
对h=1...c,且A0=X'Y, M0=X'X, C0=I,变量c已知。
计算qh,Ah'Ah的主特征向量。
wh=Ahqh, ch=wh'Mhwh, wh=wh/sqrt(ch),并将wh作为W的列向量。
ph=Mhwh,并将ph作为P的列向量。
qh=Ah'wh,并将qh作为Q的列向量。
vh=Chph,vh=vh/||vh||
Ch+1=Ch - vhvh',Mh+1=Mh - phph'
Ah+1=ChAh
与NIPALS相同,SIMPLS的T由公式T=XW计算出,B由公式B=WQ'计算。