经典的NIPALS流程如下
for a=1:A,a=1: A, \quada=1:A, (A-the number of components to be extracted)
- va=Xa−1ty\mathbf{v}_{a}=\mathbf{X}_{a-1}^{t} \mathbf{y}va=Xa−1ty
- wa=va/∥va∥\mathbf{w}_{a}=\mathbf{v}_{a} /\left\|\mathbf{v}_{a}\right\|wa=va/∥va∥
- τa=Xa−1wa\boldsymbol{\tau}_{a}=\mathbf{X}_{a-1} \mathbf{w}_{a}τa=Xa−1wa
- ta=τa/∥τa∥\mathbf{t}_{a}=\boldsymbol{\tau}_{a} /\left\|\boldsymbol{\tau}_{a}\right\|ta=τa/∥τa∥
- pa=Xa−1tta\mathbf{p}_{a}=\mathbf{X}_{a-1}^{t} \mathbf{t}_{a}pa=Xa−1tta
- xa=Xa−1−tapat\mathbf{x}_{a}=\mathbf{X}_{a-1}-\mathbf{t}_{a} \mathbf{p}_{a}^{t}xa=Xa−1−tapat (the deflation step)
- qa=tatyq_{a}=\mathbf{t}_{a}^{t} \mathbf{y}qa=taty
end
T=[t1t2…tA]\mathbf{T}=\left[\mathbf{t}_{1} \mathbf{t}_{2} \ldots \mathbf{t}_{A}\right]T=[t1t2…tA] (the orthonormal scores)
W=[w1w2…wA]\mathbf{W}=\left[\mathbf{w}_{1} \mathbf{w}_{2} \ldots \mathbf{w}_{A}\right]W=[w1w2…wA] (the orthonormal weights)
P=[p1p2…pA]\mathbf{P}=\left[\mathbf{p}_{1} \mathbf{p}_{2} \ldots \mathbf{p}_{A}\right]P=[p1p2…pA] (the matrix of X\mathbf{X}X -loadings)
qt=[q1q2…qA]\mathbf{q}^{t}=\left[q_{1} q_{2} \ldots q_{A}\right]qt=[q1q2…qA] (the vector of y\mathbf{y}y -loadings)
PLS1的系数计算
y=Tqy = Tqy=Tq我们希望得到T如何用X0X_0X0表达
假设有T=X0W∗T = X_0W^*T=X0W∗,显然,wa∗w_a^*wa∗可以和w1,⋯ ,wa−1{w_1,\cdots,w_{a-1}}w1,⋯,wa−1关于X0TX0X_0^TX_0X0TX0共轭得到
观察以下常用的计算公式
βPLS=W(PtW)−1q\boldsymbol{\beta}_{PLS}=\mathbf{W}\left(\mathbf{P}^{t} \mathbf{W}\right)^{-1} \mathbf{q}βPLS=W(PtW)−1q
可以得出
W∗=W(PtW)−1\mathbf{W^*}=\mathbf{W}\left(\mathbf{P}^{t} \mathbf{W}\right)^{-1}W∗=W(PtW)−1
v\mathbf{v}v或者w\mathbf{w}w两两正交,但并非关于X0TX0\mathbf{X_0^TX_0}X0TX0共轭,即X0wi\mathbf{X_0w_i}X0wi之间并不存在正交关系。
令τa∗=X0wa\boldsymbol{\tau}_{a}^*=\mathbf{X}_{0} \mathbf{w}_{a}τa∗=X0wa,τa∗\boldsymbol{\tau}_{a}^*τa∗ 需要与span{t1,⋯ ,ta−1}span\{t_1,\cdots,t_{a-1}\}span{t1,⋯,ta−1}经过一个 Gram–Schmidt 正交化得到 tat_{a}ta
yTXa=yTXa−1−yTtapaT→va+1T=vaT−vaTwapaT/∣∣τa∣∣→\mathbf{y^TX}_a =\mathbf{y^TX}_{a-1}-\mathbf{y^Tt}_a\mathbf{p}_a^T\rightarrow \mathbf{v}_{a+1}^T =\mathbf{v}_{a}^T-\mathbf{v}_{a}^Tw_ap_a^T/||\boldsymbol{\tau}_{a}|| \rightarrowyTXa=yTXa−1−yTtapaT→va+1T=vaT−vaTwapaT/∣∣τa∣∣→
va+1=va−∣∣va∣∣∣∣τa∣∣pav_{a+1} =v_{a} -\frac{||v_a||}{||\tau_a||}p_ava+1=va−∣∣τa∣∣∣∣va∣∣pa
我们可以发现,不用再去计算残差,只需要去迭代就能计算出权值
做一些简单的变换可以得到
pa=∥τa∥(wa−∥va+1∥∥va∥wa+1),a=1,…,A<m
\mathbf{p}_{a}=\left\|\boldsymbol{\tau}_{a}\right\|\left(\mathbf{w}_{a}-\frac{\left\|\mathbf{v}_{a+1}\right\|}{\left\|\mathbf{v}_{a}\right\|} \mathbf{w}_{a+1}\right), a=1, \ldots, A<m
pa=∥τa∥(wa−∥va∥∥va+1∥wa+1),a=1,…,A<m
P=W+B2
\mathbf{P}=\mathbf{W}_{+} \mathbf{B}_{2}
P=W+B2
W+=[Wwa+1]W_{+} = [W w_{a+1}]W+=[Wwa+1]
W∗(PTW)=WW^*(P^TW) = WW∗(PTW)=W
由此,得到W∗→WW^*\rightarrow WW∗→W,是基于双对角的lanczos正交化方法
参考: The geometry of PLS1 explained properly