我是靠谱客的博主 舒心心情,最近开发中收集的这篇文章主要介绍偏最小二乘回归分析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} Xnk,当 k > n k>n k>n时, ( X T X ) k ∗ k (X^TX)_{k*k} (XTX)kk的秩为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 XY标准化
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=x11xn1x1mxnmB=y11yn1y1mynm

第一步

  1. 分别提取两组( X 与 Y X与Y XY变量的第一对成分,并使之相关性达到最大
    假设从两组变量中第一对成分为 u 1 和 v 1 u_1和v_1 u1v1, 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=ρ1TXv1=γ1TY

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

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

第二步

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

  1. 最大化协方差,使得 u 1 和 v 1 u_1和v_1 u1v1的相关程度达到最大,可以用得分向量 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^>=ρ1TABγ1s.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=ρ1TABγ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=θ11BTAρ1

第三步

由两组变量集的标准化观察数据矩阵 X 和 Y X和Y XY,可以计算第一对成分的得分向量,记为 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ρ1v1^=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+A1B=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 A1B1代替 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+ArB=u1^τ1T++ur^τrT+Br

u 1 = ρ 1 T X u_1 = rho_1^T X u1=ρ1TX代入 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=cj1x1++cjmxm,j=1,2,,p

交叉有效性检验

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

每次舍去第 i i i个观察数据,对余下的 n − 1 n-1 n1个观测数据用偏最小二乘回归方法,并考虑抽取 h ( h ≤ r ) h(hleq r) h(hr)个肠粉后拟合的回归式,然后把舍去的自变量组第 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=1n(b(i)jb^(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=1pPRESSj(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=1n(bijb^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=1pSSj(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(h1)。因此在提取成分时,总是希望 P R E S S ( h ) S S ( h − 1 ) frac{PRESS(h)}{SS(h-1)} SS(h1)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(h1)PRESS(h)(10.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=1SS(h1)PRESS(h)
在每一步计算结束前,计算交叉有效性,在第 h h h步有 Q h 2 ^ < 1 − 0.9 5 2 hat{Q_h^2} < 1 - 0.95^2 Qh2^<10.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 least squares regression 偏最小二乘回归–潘登同学的Machine Learning笔记什么时候用PLS基本原理交叉有效性检验python实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部