偏最小二乘回归是集主成分分析,典型相关分析和多元线性回归分析3种分析方法的优点于一身
- MLR的缺点: 当自变量的数量大于样本量的时候,解不出θ \theta θ,回顾解析解
θ = ( X T X ) − 1 X T Y \theta = (X^TX)^{-1}X^TY θ=(X T X )−1 X T Y 设X n ∗ k X_{nk}X n ∗k ,当k > n k>n k >n时,( X T X ) k ∗ k (X^TX)_{kk}(X T X )k ∗k 的秩为n,不是满秩的,所以没有逆矩阵R a n k ( A B ) ≤ R a n k ( B ) Rank(AB)\leq Rank(B)R a n k (A B )≤R a n k (B ) - PCA的缺点: PCA只考虑了自变量的方差,然后选取了方差最大的几个正交变量,可以用于解决共线性问题(计量),没有考虑自变量对因变量的贡献
- PLS: 偏最小二乘回归提供一种多对多线性回归建模的方法,特别当两组变量的个数很多,且都存在多重相关性,而样本又比较少的时候。
考虑P P P个因变量y 1 , y 2 , ⋯ , y p y_1,y_2,\cdots,y_p y 1 ,y 2 ,⋯,y p 与m m m个自变量x 1 , x 2 , ⋯ , x m x_1,x_2,\cdots,x_m x 1 ,x 2 ,⋯,x m 的回归问题。
首先在自变量集中提出第一成分u 1 u_1 u 1 (u 1 u_1 u 1 是x 1 , … , x n x_1,\ldots,x_n x 1 ,…,x n 的线性组合,且尽可能多地提取原自变量集中的变异信息);同时在因变量集中也提取第一成分v 1 v_1 v 1 ,并要求u 1 u_1 u 1 与v 1 v_1 v 1 相关程度达到最大。 然后建立因变量y 1 , … , y p y_1,\ldots,y_p y 1 ,…,y p 与u 1 u_1 u 1 的回归,重复这个过程直到提取到足够的指定的成分。
计算步骤
先将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 =⎣⎢⎡x 1 1 ⋮x n 1 ⋯⋯x 1 m ⋮x n m ⎦⎥⎤B =⎣⎢⎡y 1 1 ⋮y n 1 ⋯⋯y 1 m ⋮y n m ⎦⎥⎤
为了回归分析的需要,要求
- u 1 和 v 1 u_1和v_1 u 1 和v 1 各自尽可能多地提取所在变量组的变异信息
- u 1 和 v 1 u_1和v_1 u 1 和v 1 的相关程度达到最大
计算ρ 1 与 γ 1 \rho_1与\gamma_1 ρ1 与γ1
由两组变量集的标准化观察数据矩阵X 和 Y X和Y X 和Y,可以计算第一对成分的得分向量,记为u 1 ^ 和 v 1 ^ \hat{u_1}和\hat{v_1}u 1 ^和v 1 ^
u 1 ^ = A ρ 1 v 1 ^ = B γ 1 \hat{u_1} = A \rho_1 \ \hat{v_1} = B \gamma_1 \u 1 ^=A ρ1 v 1 ^=B γ1
重复上面的步骤,得到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 =u 1 ^σ1 T +⋯+u r ^σr T +A r B =u 1 ^τ1 T +⋯+u r ^τr T +B r
将u 1 = ρ 1 T X u_1 = \rho_1^T X u 1 =ρ1 T 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 =u 1 ^τ1 T +⋯+u r ^τr T ,即得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 y j =c j 1 x 1 +…+c j m x m ,j =1 ,2 ,…,p
应该提取多个个成分,可以使用交叉有效性检验
每次舍去第i i i个观察数据,对余下的n − 1 n-1 n −1个观测数据用偏最小二乘回归方法,并考虑抽取h ( h ≤ r ) h(h\leq r)h (h ≤r )个肠粉后拟合的回归式,然后把舍去的自变量组第j j j个观测数据代入所拟合的回归方程式,得到y j ( j = 1 , 2 , ⋯ , p ) y_j(j=1,2,\cdots,p)y j (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)y j (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 P R E S S j (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)P R E S S (h )=i =1 ∑p P R E S S j (h )
另外,再采用所有的样本点,拟合含h h h个成分的回归方程。这时,记第i i i个样本点的预测值为b ^ i j ( h ) \hat{b}{ij}(h)b ^i j (h ),则可以定义y j y_j y j 的误差平方和为
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 S S j (h )=i =1 ∑n (b i j −b ^i j (h ))2
定义 h h h成分的误差平方和
S S ( h ) = ∑ j = 1 p S S j ( h ) SS(h) = \sum{j=1}^p SS_j(h)S S (h )=j =1 ∑p S S j (h )
当P R E S S ( h ) PRESS(h)P R E S S (h )达到最小值时,对应的h h h即为所求的成分l l l个数。通常,总有P R E S S ( h ) > S S ( h ) PRESS(h) > SS(h)P R E S S (h )>S S (h ),而S S ( h ) < S S ( h − 1 ) SS(h) < SS(h-1)S S (h )<S S (h −1 )。因此在提取成分时,总是希望P R E S S ( h ) S S ( h − 1 ) \frac{PRESS(h)}{SS(h-1)}S S (h −1 )P R E S S (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 S S (h −1 )P R E S S (h )≤(1 −0 .0 5 )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)}Q h 2 =1 −S S (h −1 )P R E S S (h )
在每一步计算结束前,计算交叉有效性,在第h h h步有Q h 2 ^ < 1 − 0.9 5 2 \hat{Q_h^2} < 1 – 0.95^2 Q h 2 ^<1 −0 .9 5 2,则模型到达精度,可以停止提取成分
from sklearn.cross_decomposition import PLSRegression
pls = PLSRegression(n_compoents=k)
pls.fit(X,Y)
y_pred = pls.predict(X_test)
Original: https://blog.csdn.net/weixin_52185313/article/details/124002018
Author: PD我是你的真爱粉
Title: 偏最小二乘回归分析PLS
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/622963/
转载文章受原作者版权保护。转载请注明原作者出处!