概述
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⎦⎥⎤
第一步
- 分别提取两组(
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=ρ1TXv1=γ1TY
为了回归分析的需要,要求
- 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
-
最大化协方差,使得 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^>=ρ1TABγ1s.t.{ρ1Tρ1=1γ1Tγ1=1 -
采用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
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ρ1v1^=Bγ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是残差阵 -
回归系数向量 σ 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^ -
用残差阵 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+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 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∑pPRESSj(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∑pSSj(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 least squares regression 偏最小二乘回归–潘登同学的Machine Learning笔记什么时候用PLS基本原理交叉有效性检验python实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复