我是靠谱客的博主 舒心心情,这篇文章主要介绍偏最小二乘回归分析PLSPartial least squares regression 偏最小二乘回归–潘登同学的Machine Learning笔记什么时候用PLS基本原理交叉有效性检验python实现,现在分享给大家,希望可以做个参考。

Partial least squares regression 偏最小二乘回归–潘登同学的Machine Learning笔记

文章目录

  • Partial least squares regression 偏最小二乘回归--潘登同学的Machine Learning笔记
  • 什么时候用PLS
  • 基本原理
    • 计算步骤
      • 第一步
      • 第二步
      • 第三步
      • 第四步
  • 交叉有效性检验
  • python实现

什么时候用PLS

偏最小二乘回归是集主成分分析,典型相关分析和多元线性回归分析3种分析方法的优点于一身

  • MLR的缺点: 当自变量的数量大于样本量的时候,解不出 θ theta θ,回顾解析解
    θ = ( X T X ) − 1 X T Y theta = (X^TX)^{-1}X^TY θ=(XTX)−1XTY

    设 X n ∗ k X_{n*k} Xn∗k​,当 k > n k>n k>n时, ( X T X ) k ∗ k (X^TX)_{k*k} (XTX)k∗k​的秩为n,不是满秩的,所以没有逆矩阵 R a n k ( A B ) ≤ R a n k ( B ) Rank(AB)leq Rank(B) Rank(AB)≤Rank(B)

  • PCA的缺点: PCA只考虑了自变量的方差,然后选取了方差最大的几个正交变量,可以用于解决共线性问题(计量),没有考虑自变量对因变量的贡献

  • PLS: 偏最小二乘回归提供一种多对多线性回归建模的方法,特别当两组变量的个数很多,且都存在多重相关性,而样本又比较少的时候。

基本原理

考虑 P P P个因变量 y 1 , y 2 , ⋯   , y p y_1,y_2,cdots,y_p y1​,y2​,⋯,yp​与 m m m个自变量 x 1 , x 2 , ⋯   , x m x_1,x_2,cdots,x_m x1​,x2​,⋯,xm​的回归问题。

首先在自变量集中提出第一成分 u 1 u_1 u1​( u 1 u_1 u1​是 x 1 , … , x n x_1,ldots,x_n x1​,…,xn​的线性组合,且尽可能多地提取原自变量集中的变异信息);同时在因变量集中也提取第一成分 v 1 v_1 v1​,并要求 u 1 u_1 u1​与 v 1 v_1 v1​相关程度达到最大。 然后建立因变量 y 1 , … , y p y_1,ldots,y_p y1​,…,yp​与 u 1 u_1 u1​的回归,重复这个过程直到提取到足够的指定的成分。

计算步骤

先将 X 与 Y X与Y X与Y标准化
A = [ x 11 ⋯ x 1 m ⋮ ⋮ x n 1 ⋯ x n m ] B = [ y 11 ⋯ y 1 m ⋮ ⋮ y n 1 ⋯ y n m ] A = begin{bmatrix} x_{11} & cdots & x_{1m}\ vdots & & vdots \ x_{n1} & cdots & x_{nm} end{bmatrix} B = begin{bmatrix} y_{11} & cdots & y_{1m}\ vdots & & vdots \ y_{n1} & cdots & y_{nm} end{bmatrix} A=⎣⎢⎡​x11​⋮xn1​​⋯⋯​x1m​⋮xnm​​⎦⎥⎤​B=⎣⎢⎡​y11​⋮yn1​​⋯⋯​y1m​⋮ynm​​⎦⎥⎤​

第一步

  1. 分别提取两组( X 与 Y X与Y X与Y变量的第一对成分,并使之相关性达到最大
    假设从两组变量中第一对成分为 u 1 和 v 1 u_1和v_1 u1​和v1​, u 1 u_1 u1​是自变量集 X = [ x 1 , ⋯   , x m ] T X=[x_1,cdots,x_m]^T X=[x1​,⋯,xm​]T的线性组合, v 1 v_1 v1​是自变量集 X = [ y 1 , ⋯   , y p ] T X=[y_1,cdots,y_p]^T X=[y1​,⋯,yp​]T的线性组合
    u 1 = ρ 1 T X v 1 = γ 1 T Y u_1 = rho_1^T X \ v_1 = gamma_1^T Y \ u1​=ρ1T​Xv1​=γ1T​Y

为了回归分析的需要,要求

  • u 1 和 v 1 u_1和v_1 u1​和v1​各自尽可能多地提取所在变量组的变异信息
  • u 1 和 v 1 u_1和v_1 u1​和v1​的相关程度达到最大

第二步

计算 ρ 1 与 γ 1 rho_1与gamma_1 ρ1​与γ1​

  1. 最大化协方差,使得 u 1 和 v 1 u_1和v_1 u1​和v1​的相关程度达到最大,可以用得分向量 u 1 ^ 和 v 1 ^ hat{u_1}和hat{v_1} u1​^​和v1​^​的內积来计算
    max ⁡ < u 1 ^ , v 1 ^ > = ρ 1 T A B γ 1 s . t . { ρ 1 T ρ 1 = 1 γ 1 T γ 1 = 1 max <hat{u_1},hat{v_1}> = rho_1^T A B gamma_1 \ s.t. begin{cases} rho_1^T rho_1 = 1 \ gamma_1^T gamma_1 = 1 \ end{cases} max<u1​^​,v1​^​>=ρ1T​ABγ1​s.t.{ρ1T​ρ1​=1γ1T​γ1​=1​

  2. 采用Lagrange乘数法,问题化为求单位向量 ρ 1 和 γ 1 rho_1和gamma_1 ρ1​和γ1​,使 θ 1 = ρ 1 T A B γ 1 theta_1 = rho_1^T A B gamma_1 θ1​=ρ1T​ABγ1​达到最大,问题求解只需计算 M = A T B B T A M=A^TBB^TA M=ATBBTA的特征值与特征向量,且 M M M的最大特征值为 θ 1 2 theta_1^2 θ12​,相应的特征向量就是所要求解的 ρ 1 rho_1 ρ1​,进而也能得到 γ 1 gamma_1 γ1​
    γ 1 = 1 θ 1 B T A ρ 1 gamma_1 = frac{1}{theta_1}B^TArho_1 γ1​=θ1​1​BTAρ1​

第三步

由两组变量集的标准化观察数据矩阵 X 和 Y X和Y X和Y,可以计算第一对成分的得分向量,记为 u 1 ^ 和 v 1 ^ hat{u_1}和hat{v_1} u1​^​和v1​^​
u 1 ^ = A ρ 1 v 1 ^ = B γ 1 hat{u_1} = A rho_1 \ hat{v_1} = B gamma_1 \ u1​^​=Aρ1​v1​^​=Bγ1​

  1. 建立 y 1 , ⋯   , y p y_1,cdots,y_p y1​,⋯,yp​对 u 1 u_1 u1​的回归及 x 1 , ⋯   , x m x_1,cdots,x_m x1​,⋯,xm​对 u 1 u_1 u1​的回归,假定回归模型
    { A = u 1 ^ σ 1 T + A 1 B = u 1 ^ τ 1 T + B 1 begin{cases} A = hat{u_1}sigma_1^{T} + A_1 \ B = hat{u_1}tau_1^{T} + B_1 \ end{cases} {A=u1​^​σ1T​+A1​B=u1​^​τ1T​+B1​​
    其中, σ 1 T = [ σ 1 , … , σ m ] , τ 1 T = [ τ 1 , … , τ m ] sigma_1^{T} = [sigma_{1},ldots,sigma_{m}],tau_1^{T} = [tau_{1},ldots,tau_{m}] σ1T​=[σ1​,…,σm​],τ1T​=[τ1​,…,τm​]分别是多对一回归模型中的参数向量, A 1 , B 1 A_1,B_1 A1​,B1​是残差阵

  2. 回归系数向量 σ 1 , τ 1 sigma_1,tau_1 σ1​,τ1​的最小二乘估计为
    { σ 1 = A T u 1 ^ ∣ ∣ u 1 ^ ∣ ∣ 2 τ 1 = B T u 1 ^ ∣ ∣ u 1 ^ ∣ ∣ 2 begin{cases} sigma_1 = frac{A^That{u_1}}{||hat{u_1}||^2} \ tau_1 = frac{B^That{u_1}}{||hat{u_1}||^2} \ end{cases} {σ1​=∣∣u1​^​∣∣2ATu1​^​​τ1​=∣∣u1​^​∣∣2BTu1​^​​​

  3. 用残差阵 A 1 和 B 1 A_1和B_1 A1​和B1​代替 A , B A,B A,B,重复以上步骤,直到残差阵中元素的绝对值近似为0,每进行一次得到一个 σ t 和 τ t sigma_t和tau_t σt​和τt​,

第四步

重复上面的步骤,得到 r r r个成分
{ A = u 1 ^ σ 1 T + ⋯ + u r ^ σ r T + A r B = u 1 ^ τ 1 T + ⋯ + u r ^ τ r T + B r begin{cases} A = hat{u_1}sigma_1^{T} + cdots + hat{u_r}sigma_r^{T} + A_r \ B = hat{u_1}tau_1^{T} + cdots + hat{u_r}tau_r^{T} + B_r \ end{cases} {A=u1​^​σ1T​+⋯+ur​^​σrT​+Ar​B=u1​^​τ1T​+⋯+ur​^​τrT​+Br​​

将 u 1 = ρ 1 T X u_1 = rho_1^T X u1​=ρ1T​X代入 Y = u 1 ^ τ 1 T + ⋯ + u r ^ τ r T Y=hat{u_1}tau_1^{T} + cdots + hat{u_r}tau_r^{T} Y=u1​^​τ1T​+⋯+ur​^​τrT​,即得 P P P个因变量的偏最小二乘回归方程式
y j = c j 1 x 1 + … + c j m x m , j = 1 , 2 , … , p y_j = c_{j1}x_1 + ldots + c_{jm}x_m, j= 1,2,ldots,p yj​=cj1​x1​+…+cjm​xm​,j=1,2,…,p

交叉有效性检验

应该提取多个个成分,可以使用交叉有效性检验

每次舍去第 i i i个观察数据,对余下的 n − 1 n-1 n−1个观测数据用偏最小二乘回归方法,并考虑抽取 h ( h ≤ r ) h(hleq r) h(h≤r)个肠粉后拟合的回归式,然后把舍去的自变量组第 j j j个观测数据代入所拟合的回归方程式,得到 y j ( j = 1 , 2 , ⋯   , p ) y_j(j=1,2,cdots,p) yj​(j=1,2,⋯,p)在第 i i i观测点上的预测值为 b ( i ) j ^ ( h ) hat{b_{(i)j}}(h) b(i)j​^​(h)

对 i = 1 , 2 , … , n i=1,2,ldots,n i=1,2,…,n重复以上的验证,即得抽取 h h h个成分时第 j j j个因变量 y j ( j = 1 , 2 , … , p ) y_j(j=1,2,ldots,p) yj​(j=1,2,…,p)的预测误差平方和为
P R E S S j ( h ) = ∑ i = 1 n ( b ( i ) j − b ^ ( i ) j ( h ) ) 2 , j = 1 , 2 , … , p PRESS_j(h) = sum_{i=1}^n(b_{(i)j}-hat{b}_{(i)j}(h))^2,j=1,2,ldots,p PRESSj​(h)=i=1∑n​(b(i)j​−b^(i)j​(h))2,j=1,2,…,p
Y Y Y的预测误差平方和为
P R E S S ( h ) = ∑ i = 1 p P R E S S j ( h ) PRESS(h) = sum_{i=1}^pPRESS_j(h) PRESS(h)=i=1∑p​PRESSj​(h)

另外,再采用所有的样本点,拟合含 h h h个成分的回归方程。这时,记第 i i i个样本点的预测值为 b ^ i j ( h ) hat{b}_{ij}(h) b^ij​(h),则可以定义 y j y_j yj​的误差平方和为
S S j ( h ) = ∑ i = 1 n ( b i j − b ^ i j ( h ) ) 2 SS_j(h) = sum_{i=1}^n(b_{ij}-hat{b}_{ij}(h))^2 SSj​(h)=i=1∑n​(bij​−b^ij​(h))2
定义 h h h成分的误差平方和
S S ( h ) = ∑ j = 1 p S S j ( h ) SS(h) = sum_{j=1}^p SS_j(h) SS(h)=j=1∑p​SSj​(h)

当 P R E S S ( h ) PRESS(h) PRESS(h)达到最小值时,对应的 h h h即为所求的成分 l l l个数。通常,总有 P R E S S ( h ) > S S ( h ) PRESS(h) > SS(h) PRESS(h)>SS(h),而 S S ( h ) < S S ( h − 1 ) SS(h) < SS(h-1) SS(h)<SS(h−1)。因此在提取成分时,总是希望 P R E S S ( h ) S S ( h − 1 ) frac{PRESS(h)}{SS(h-1)} SS(h−1)PRESS(h)​越小于好,一般可以设定阈值为0.05,判定规则为,当
P R E S S ( h ) S S ( h − 1 ) ≤ ( 1 − 0.05 ) 2 frac{PRESS(h)}{SS(h-1)} leq (1-0.05)^2 SS(h−1)PRESS(h)​≤(1−0.05)2
时,新加成分对回归改善是有帮助的

因此,可以定义交叉有效性
Q h 2 = 1 − P R E S S ( h ) S S ( h − 1 ) Q_h^2 = 1 - frac{PRESS(h)}{SS(h-1)} Qh2​=1−SS(h−1)PRESS(h)​
在每一步计算结束前,计算交叉有效性,在第 h h h步有 Q h 2 ^ < 1 − 0.9 5 2 hat{Q_h^2} < 1 - 0.95^2 Qh2​^​<1−0.952,则模型到达精度,可以停止提取成分

python实现

from sklearn.cross_decomposition import PLSRegression
pls = PLSRegression(n_compoents=k)
pls.fit(X,Y)
y_pred = pls.predict(X_test)

最后

以上就是舒心心情最近收集整理的关于偏最小二乘回归分析PLSPartial least squares regression 偏最小二乘回归–潘登同学的Machine Learning笔记什么时候用PLS基本原理交叉有效性检验python实现的全部内容,更多相关偏最小二乘回归分析PLSPartial内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(266)

评论列表共有 0 条评论

立即
投稿
返回
顶部