Chap 3 Linear Methods for Regression
Introduction
- 线性回归是假设 E ( Y ∣ X ) E(Y|X) E(Y∣X)是关于X的线性组合
- 线性模型的可解释性强,在数据量少、信噪比低或稀疏的数据上往往可以得到比非线性模型更好的结果
- 通过对X进行变换,很容易达到非线性拟合的效果,这种衍生方法有时也被称作basis-function methods(基函数方法)
Linear Regression Models and Least Squres
从多个角度理解OLSE
- 在不加任何分布假设,只是假设
Y
=
f
θ
(
X
)
+
ϵ
Y=f_\theta(X)+\epsilon
Y=fθ(X)+ϵ下进行。在多元线性回归模型中,解为:
β ^ = ( X T X ) − 1 X T Y \hat \beta=(X^TX)^{-1}X^TY β^=(XTX)−1XTY - 在高斯-马尔可夫假设下,OLSE是BLUE的,即对于任何 α ∈ ℜ p × 1 \alpha \in \Re^{p\times1} α∈ℜp×1,在 α T β \alpha^T \beta αTβ的所有关于Y的线性无偏估计中, α T β ^ \alpha^T \hat \beta αTβ^是方差最小的; V ^ = V a r ( β ^ ) \hat V=Var(\hat \beta) V^=Var(β^), V ~ = V a r ( β ~ ) \tilde V=Var(\tilde \beta) V~=Var(β~),其中 β ~ \tilde \beta β~是 β \beta β的任一无偏线性估计,则有 V ^ ⪯ V ~ . \hat{\mathbf{V}}\preceq\tilde{\mathbf{V}}. V^⪯V~.,即 V ~ − V ^ \tilde V-\hat V V~−V^是半正定的。
【注】:在证明中使用 e e e与 β ^ \hat \beta β^独立即可
- Y ^ = X β ^ \hat Y=X\hat{\beta} Y^=Xβ^实际上是将Y投影到X组成的超平面,残差e与 Y ^ \hat Y Y^正交
Gram-Schmidt procedure for multiple regression
该方法从另一个角度去理解多元线性回归模型的系数估计,并且提供了一种新的数值估计的方法。
首先需要明确的是,如果X输入变量之间是正交的,那么多元线性模型系数估计的值和单变量模型估计的值得到的值是一样的。
【注】:但是由于估计的方差是不一样的,所以检验是不一样的
由于正交的设计矩阵在计算上有很好的方便,因此一种很自然的想法是希望调整X使得是正交的,也就是接下来介绍的Gam-Schimidt算法。首先只看一维的情况来获得一个直观的认识。假如
X
∈
ℜ
N
×
2
=
[
1
,
X
1
]
X\in \Re^{N\times 2}=[\mathrm{1},X_1]
X∈ℜN×2=[1,X1],那么估计:
β
^
1
=
⟨
x
−
x
ˉ
1
,
y
⟩
⟨
x
−
x
ˉ
1
,
x
−
x
ˉ
1
⟩
,
\hat{\beta}_1=\frac{\langle\mathbf{x}-\bar{x}\mathbf{1},\mathbf{y}\rangle}{\langle\mathbf{x}-\bar{x}\mathbf{1},\mathbf{x}-\bar{x}\mathbf{1}\rangle},
β^1=⟨x−xˉ1,x−xˉ1⟩⟨x−xˉ1,y⟩,
其中
1
\mathrm{1}
1可以认为是
X
0
X_0
X0,上述过程可以认为是以下步骤:
- 使用 X 0 X_0 X0对 X 1 X_1 X1进行线性回归,得到残差 z = X 1 − x ˉ 1 z=X_1-\bar x\mathrm{1} z=X1−xˉ1,易知残差均值为0
- 使用残差 z z z对Y进行线性回归,系数估计值恰好为 β ^ 1 \hat \beta_1 β^1
延续这个想法,我们可以得到下面的Gam-Schimidt算法:
从这个算法可以看出:
- x j x_j xj是 z 0 , . . . , z j z_0,...,z_{j} z0,...,zj的线性组合
事实上我们有:
X
=
Z
Γ
=
Z
D
−
1
D
Γ
=
Q
R
\begin{aligned} X=&Z\Gamma\\ =&ZD^{-1}D\Gamma\\ =&QR \end{aligned}
X===ZΓZD−1DΓQR
其中
Γ
\Gamma
Γ是一个上三角阵,
D
D
D是一个对角阵,且
D
j
j
=
∣
∣
z
j
∣
∣
2
D_{jj}=||z_j||_2
Djj=∣∣zj∣∣2。X=QR是X的一个QR分解,
Q
∈
ℜ
N
×
(
p
+
1
)
Q\in \Re^{N\times (p+1)}
Q∈ℜN×(p+1)是正交的
Q
T
Q
=
I
Q^TQ=I
QTQ=I,R是上三角阵
R
∈
ℜ
(
p
+
1
)
×
(
p
+
1
)
R\in \Re^{(p+1)\times (p+1)}
R∈ℜ(p+1)×(p+1),从而有
β
^
=
R
−
1
Q
T
Y
,
Y
^
=
Q
Q
T
Y
\hat \beta=R^{-1}Q^TY,\hat{Y}=QQ^TY
β^=R−1QTY,Y^=QQTY
- 基于 Z Z Z进行系数估计得到的 β ^ \hat \beta β^项中,只有 β ^ p \hat \beta_p β^p是和 x p x_p xp有关的
所以综合来说基于Z估计得到的 β p ^ \hat{\beta_p} βp^就是基于X估计得到的 β p ^ \hat{\beta_p} βp^。 Gram-Schmidt方法实际上就是在此基础上进行的。
【注】:这个算法中由于 z j z_j zj是 x j x_j xj与 z 0 , . . . , z j − 1 z_0,...,z_{j-1} z0,...,zj−1做回归得到的残差,所以 z j z_j zj与 z 0 , . . . , z j − 1 z_0,...,z_{j-1} z0,...,zj−1是正交的,最终做回归的那个 Z Z Z也会是一个列正交的矩阵,所以对整个Z进行系数估计就等价于分别进行,使用一元线性回归,有利于计算。
多变量多元线性回归
相较于原始的单变量多元线性回归,多变量多元线性回归只是在原始的基础上对Y进行了拓展:
Y
∈
ℜ
N
×
1
→
Y
∈
ℜ
N
×
K
ϵ
∈
ℜ
N
×
1
→
E
∈
ℜ
N
×
K
Y
=
X
β
+
ϵ
→
Y
=
X
B
+
E
\begin{aligned} &Y\in \Re^{N\times 1} \to Y\in \Re^{N\times K} \\ &\epsilon \in \Re^{N\times 1}\to E\in \Re^{N\times K}\\ &Y=X\beta+\epsilon\to Y=XB+E \end{aligned}
Y∈ℜN×1→Y∈ℜN×Kϵ∈ℜN×1→E∈ℜN×KY=Xβ+ϵ→Y=XB+E
损失函数可以是原始的RSS:
R
S
S
(
B
)
=
∑
k
=
1
K
∑
i
=
1
N
(
y
i
k
−
f
k
(
x
i
)
)
2
=
t
r
[
(
Y
−
X
B
)
T
(
Y
−
X
B
)
]
\begin{aligned} RSS(B)=&\sum_{k=1}^K\sum_{i=1}^N(y_{ik}-f_k(x_i))^2\\ =&tr[(Y-XB)^T(Y-XB)] \end{aligned}
RSS(B)==k=1∑Ki=1∑N(yik−fk(xi))2tr[(Y−XB)T(Y−XB)]
易知系数估计为:
B
^
=
(
X
T
X
)
−
1
X
T
Y
\begin{aligned} \hat B=(X^TX)^{-1}X^TY \end{aligned}
B^=(XTX)−1XTY
但是对于
E
E
E不是对角阵的情况,基于GM假设,最大化似然函数,使用加权的RSS是更常见的情况,也就是:
R
S
S
(
B
,
Σ
)
=
∑
i
=
1
N
(
y
i
−
f
(
x
i
)
)
T
Σ
−
1
(
y
i
−
f
(
x
i
)
)
\begin{aligned} RSS(B,\Sigma)=\sum_{i=1}^N(y_i-f(x_i))^T\Sigma^{-1}(y_i-f(x_i)) \end{aligned}
RSS(B,Σ)=i=1∑N(yi−f(xi))TΣ−1(yi−f(xi))
但实际上,不论中间的矩阵是什么,只要是二次型的损失函数,系数估计的结果都不变。
# 证明:
记OLSE所得系数估计为
B
^
\hat B
B^,对其余估计
B
,
f
(
x
i
)
=
B
T
x
i
B,f(x_i)=B^Tx_i
B,f(xi)=BTxi有:
R
S
S
(
B
,
Σ
)
=
∑
i
=
1
N
(
y
i
−
f
(
x
i
)
)
T
Σ
−
1
(
y
i
−
f
(
x
i
)
)
=
∑
i
=
1
N
(
y
i
−
B
T
x
i
+
B
^
T
x
i
−
B
^
T
x
i
)
T
Σ
−
1
(
y
i
−
B
T
x
i
+
B
^
T
x
i
−
B
^
T
x
i
)
=
∑
i
=
1
N
(
y
i
−
B
^
T
x
i
)
T
Σ
−
1
(
y
i
−
B
^
T
x
i
)
(
∗
)
+
∑
i
=
1
N
(
B
^
T
x
i
−
B
T
x
i
)
T
Σ
−
1
(
B
^
T
x
i
−
B
T
x
i
)
(
∗
∗
)
+
2
∑
i
=
1
N
(
y
i
−
B
^
T
x
i
)
T
Σ
−
1
(
B
^
T
x
i
−
B
T
x
i
)
(
∗
∗
∗
)
\begin{aligned} RSS(B,\Sigma)=&\sum_{i=1}^N(y_i-f(x_i))^T\Sigma^{-1}(y_i-f(x_i))\\ =&\sum_{i=1}^N(y_i-B^Tx_i+\hat B^Tx_i-\hat B^T x_i)^T\Sigma^{-1}(y_i-B^Tx_i+\hat B^Tx_i-\hat B^T x_i)\\ =&\sum_{i=1}^N(y_i-\hat B^Tx_i)^T\Sigma^{-1}(y_i-\hat B^Tx_i)(*)\\ &+\sum_{i=1}^N(\hat B^T x_i-B^Tx_i)^T\Sigma^{-1}(\hat B^T x_i-B^Tx_i)(**)\\ &+2\sum_{i=1}^N(y_i-\hat B^Tx_i)^T\Sigma^{-1}(\hat B^T x_i-B^Tx_i)(***) \end{aligned}
RSS(B,Σ)===i=1∑N(yi−f(xi))TΣ−1(yi−f(xi))i=1∑N(yi−BTxi+B^Txi−B^Txi)TΣ−1(yi−BTxi+B^Txi−B^Txi)i=1∑N(yi−B^Txi)TΣ−1(yi−B^Txi)(∗)+i=1∑N(B^Txi−BTxi)TΣ−1(B^Txi−BTxi)(∗∗)+2i=1∑N(yi−B^Txi)TΣ−1(B^Txi−BTxi)(∗∗∗)
其中 ( ∗ ) = R S S ( B ^ , Σ ) , ( ∗ ∗ ) ≥ 0 (*)=RSS(\hat B,\Sigma),(**)\ge 0 (∗)=RSS(B^,Σ),(∗∗)≥0,现在证明 ( ∗ ∗ ∗ ) = 0 (***)=0 (∗∗∗)=0.
若记
α
i
=
[
0
,
.
.
.
,
1
,
0...
,
0
]
T
\alpha_i=[0,...,1,0...,0]^T
αi=[0,...,1,0...,0]T则:
y
i
T
=
α
i
T
Y
x
i
T
=
α
i
T
X
\begin{aligned} y_i^T=\alpha_i^TY\\ x_i^T=\alpha_i^TX \end{aligned}
yiT=αiTYxiT=αiTX
从而
(
∗
∗
∗
)
=
∑
i
=
1
N
(
y
i
−
B
^
T
x
i
)
T
Σ
−
1
(
B
^
T
x
i
−
B
T
x
i
)
=
∑
i
=
1
N
α
i
T
(
I
N
−
H
)
Y
Σ
−
1
(
B
^
−
B
)
T
X
T
α
i
:
=
∑
i
=
1
N
α
i
Γ
α
i
T
=
t
r
a
c
e
(
Γ
)
=
t
r
a
c
e
(
(
I
N
−
H
)
Y
Σ
−
1
(
B
^
−
B
)
T
X
T
)
=
t
r
a
c
e
(
X
T
(
I
N
−
H
)
Y
Σ
−
1
(
B
^
−
B
)
T
)
=
0
\begin{aligned} (***)=&\sum_{i=1}^N(y_i-\hat B^Tx_i)^T\Sigma^{-1}(\hat B^T x_i-B^Tx_i)\\ &=\sum_{i=1}^N\alpha_i^T(I_N-H)Y\Sigma^{-1}(\hat{B}-B)^TX^T\alpha_i\\ &:=\sum_{i=1}^N\alpha_i\Gamma\alpha_i^T\\ &=trace(\Gamma)\\ &=trace((I_N-H)Y\Sigma^{-1}(\hat{B}-B)^TX^T)\\ &=trace(X^T(I_N-H)Y\Sigma^{-1}(\hat{B}-B)^T)\\ &=0 \end{aligned}
(∗∗∗)=i=1∑N(yi−B^Txi)TΣ−1(B^Txi−BTxi)=i=1∑NαiT(IN−H)YΣ−1(B^−B)TXTαi:=i=1∑NαiΓαiT=trace(Γ)=trace((IN−H)YΣ−1(B^−B)TXT)=trace(XT(IN−H)YΣ−1(B^−B)T)=0
从而原命题成立.#
补充
- 对 β ^ i \hat \beta_i β^i进行区间估计的时候,就算高斯-马尔可夫假设不成立,在 N → + ∞ N\to +\infty N→+∞时原始区间估计仍然有近似区间成立
- 在GM假设下,预测新点 x 0 x_0 x0有:
- E ( Y 0 − f ^ ( x 0 ) ) 2 = σ 2 + E ( x 0 T β ^ − f ( x 0 ) ) 2 = σ 2 + M S E ( f ^ ( x 0 ) ) \begin{aligned} E(Y_0-\hat f(x_0))^2=&\sigma^2+E(x_0^T\hat \beta-f(x_0))^2\\ =&\sigma ^2+MSE(\hat f(x_0)) \end{aligned} E(Y0−f^(x0))2==σ2+E(x0Tβ^−f(x0))2σ2+MSE(f^(x0))
Subset Selection
全模型OLSE存在的问题:
- 虽然是无偏的,但是方差大;
- 过多变量不利于解释
因此需要使用选模型,方法有forward-stepwise selection, backward-step wise selection,forward- and backward-stepwise selection。这里补充一个新的方法:forward-stagewise selection。这个方法相对来说低效,但是在高维的时候有很好的效果。
Forward-stagewise regression (FS):
- 初始化:X中心化,使用 1 \mathrm{1} 1对Y进行回归得到 Y ^ = Y ˉ \hat Y=\bar Y Y^=Yˉ,得到残差 R 0 = Y − Y ˉ R_0=Y-\bar Y R0=Y−Yˉ
- 循环迭代:第k步都有基于前k-1步得到的残差 R k − 1 R_{k-1} Rk−1,找到X中与 R k − 1 R_{k-1} Rk−1最相关的变量进行单变量回归系数 β ^ k \hat \beta_k β^k,并在不改变先前变量的系数估计条件下加入模型,得到残差 R k R_k Rk
- 直到没有变量与当前残差相关(相关性高于某个阈值)停止迭代
与stepwise方法最不相同之处在于stagewise每引入一个新的变量,不会改变之前引入变量的系数估计,针对残差进行一元线性回归。也因此,stagewise可能会进行大于p步的迭代,这样的slow fitting在解决高维问题很有优势。
Shrinkage Methods
变量子集选择相对来说是一个离散的过程,自变量要么纳入回归要么完全不考虑,这可能会导致高方差的问题,而Shrinkage Methods则是用一种连续的方式来对变量进行“选择”。
Ridge Regression
β ^ r i d g e = arg min β { ∑ i = 1 N ( y i − β 0 − ∑ j = 1 p x i j β j ) 2 + λ ∑ j = 1 p β j 2 } \hat{\beta}^{ridge}=\mathop{\arg\min}\limits_{\beta}\left\{ \sum_{i=1}^N(y_i-\beta_0-\sum_{j=1}^px_{ij}\beta_j)^2+\lambda \sum_{j=1}^p \beta_j^2\right\} β^ridge=βargmin{i=1∑N(yi−β0−j=1∑pxijβj)2+λj=1∑pβj2}
【注】:在神经网络中引入这样的惩罚项也称作weight decay
以上也等价于:
β
^
r
i
d
g
e
=
arg
min
β
∑
i
=
1
N
(
y
i
−
β
0
−
∑
j
=
1
p
x
i
j
β
j
)
s
.
t
.
∑
j
=
1
p
β
j
2
≤
t
\begin{aligned} &\hat{\beta}^{ridge}=\mathop{\arg\min}\limits_{\beta}\sum_{i=1}^N(y_i-\beta_0-\sum_{j=1}^px_{ij}\beta_j)\\ & s.t. \sum_{j=1}^p\beta_j^2\le t \end{aligned}
β^ridge=βargmini=1∑N(yi−β0−j=1∑pxijβj)s.t.j=1∑pβj2≤t
需要注意的是:
- 惩罚项中并没有对 β 0 \beta_0 β0进行处理!最后对 β 0 \beta_0 β0的估计只需要 β ^ 0 = ∑ i = 1 N ( y i − ∑ j = 1 p x i j β j ) \hat \beta_0=\sum_{i=1}^N(y_i-\sum_{j=1}^px_{ij}\beta_j) β^0=∑i=1N(yi−∑j=1pxijβj)
- 需要先进行数据的标准化!
求解得到估计为:
β ^ r i d g e = ( X T X + λ I ) − 1 X T Y \hat \beta^{ridge}=(X^TX+\lambda I)^{-1}X^TY β^ridge=(XTX+λI)−1XTY
由此可见:
- 使用岭回归可以有效缓解多重共线性( X T X + λ I X^TX+\lambda I XTX+λI是可逆的)
- 这等价于系数 β \beta β先验分布为 N ( 0 , τ 2 ) N(0,\tau^2) N(0,τ2)并且是相互独立的,在此情况下的后验均值,所以实际上和贝叶斯统计得到的解是一样的
接下来从另一个角度来理解岭回归:SVD分解+PCA
首先来介绍一下SVD分解:
X ∈ ℜ N × p : X = U D V T X\in \Re^{N\times p}:X=UDV^T X∈ℜN×p:X=UDVT
其中, U ∈ ℜ N × p , V ∈ ℜ p × p U\in \Re^{N\times p},V\in \Re^{p\times p} U∈ℜN×p,V∈ℜp×p是正交的,D是 p × p p\times p p×p的对角阵,并且对角元素递减: d 1 ≥ d 2 ≥ . . . ≥ d p ≥ 0 d_1\ge d_2\ge...\ge d_p\ge 0 d1≥d2≥...≥dp≥0
那么此时用SVD分解代替表示X有:
X
β
^
O
L
S
=
U
U
T
Y
X\hat \beta^{OLS}=UU^TY
Xβ^OLS=UUTY
X
β
^
r
i
d
g
e
=
U
D
(
D
2
+
λ
I
)
−
1
D
U
T
Y
=
∑
j
=
1
p
u
j
d
j
2
d
j
2
+
λ
u
j
T
Y
X\hat \beta^{ridge}=UD(D^2+\lambda I)^{-1}DU^TY=\sum_{j=1}^pu_j\frac{d_j^2}{d_j^2+\lambda}u_j^TY
Xβ^ridge=UD(D2+λI)−1DUTY=j=1∑pujdj2+λdj2ujTY
可以看到,估计
Y
^
\hat Y
Y^实际上都是Y的投影,但是相对来说,岭回归的估计值在原始的
∑
j
=
1
u
j
u
j
T
Y
\sum_{j=1}u_ju_j^TY
∑j=1ujujTY的基础上还进行了一个加权
d
j
2
d
j
2
+
λ
,
λ
≤
0
\frac{d_j^2}{d_j^2+\lambda},\lambda \le 0
dj2+λdj2,λ≤0,也就是说会相对来说缩减为原始的
d
j
2
d
j
2
+
λ
\frac{d_j^2}{d_j^2+\lambda}
dj2+λdj2。接下来结合PCA对这个缩减系数进行解释。事实上,对X进行SVD分解
X
=
U
D
V
T
X=UDV^T
X=UDVT,假设X已经中心化,那么主成分Z为
U
D
UD
UD,所以:
Y
^
r
i
d
g
e
=
Z
(
D
2
λ
I
)
(
−
1
)
=
∑
j
=
1
p
1
d
j
2
+
λ
z
j
z
j
T
Y
\hat Y^{ridge}=Z(D^2\lambda I)^{(-1)}=\sum_{j=1}^p\frac{1}{d_j^2+\lambda}z_jz_j^TY
Y^ridge=Z(D2λI)(−1)=j=1∑pdj2+λ1zjzjTY
相当于是在Z(未标准化标准差)的方向上投影再加权。
在对X进行标准化之后,实际上有:
S
=
X
T
X
/
N
=
V
D
2
V
T
/
N
S=X^TX/N=VD^2V^T/N
S=XTX/N=VD2VT/N
又注意到V是正交的,
D
2
D^2
D2是对角阵并且元素是递减的,因此可以认为
D
2
/
N
D^2/N
D2/N就是PCA中那个对角阵
Λ
\Lambda
Λ!
z
j
=
X
v
j
=
u
j
d
j
z_j=Xv_j=u_jd_j
zj=Xvj=ujdj,并且对于标准化后的X
v
a
r
(
z
j
)
=
d
j
2
/
N
var(z_j)=d_j^2/N
var(zj)=dj2/N,因此
u
j
u_j
uj可以看成是标准化后的
z
j
z_j
zj。因此
u
j
u
j
T
Y
u_ju_j^TY
ujujTY可以看成是在第j个主成分上的投影,
d
j
2
d_j^2
dj2越大实际上说明对应的主成分承载的信息越多,方差越大,那么
d
j
2
d
j
2
+
λ
\frac{d_j^2}{d_j^2+\lambda}
dj2+λdj2越大,所以可以解释为在承载信息更多的主成分方向上投影的越多。
进一步的,相对于OLSE可以定义岭回归的自变量自由度:
d
f
(
λ
)
=
t
r
(
X
(
X
T
X
+
λ
I
)
−
1
X
T
)
=
t
r
(
H
λ
)
=
∑
j
=
1
p
d
j
2
d
j
2
+
λ
\begin{aligned} df(\lambda)=&tr(X(X^TX+\lambda I)^{-1}X^T)\\ =&tr(H_\lambda)\\ =&\sum_{j=1}^p\frac{d_j^2}{d_j^2+\lambda}\\ \end{aligned}
df(λ)===tr(X(XTX+λI)−1XT)tr(Hλ)j=1∑pdj2+λdj2
易知, λ → 0 , d f ( λ ) → p ; λ → ∞ , d f ( λ ) → 0 \lambda \to 0,df(\lambda)\to p;\lambda \to \infty,df(\lambda)\to 0 λ→0,df(λ)→p;λ→∞,df(λ)→0。
岭回归的结果也可以理解为对X和Y分别进行增广。
X
~
=
[
X
λ
α
I
P
]
,
Y
~
=
[
Y
0
P
]
\tilde X=\begin{bmatrix} X \\ \sqrt{\lambda\alpha}I_P \end{bmatrix},\tilde Y=\begin{bmatrix} Y \\ 0_P \end{bmatrix}
X~=[XλαIP],Y~=[Y0P]
并使用OLSE得到
β
^
\hat \beta
β^不难验证就是岭回归得到的系数估计值,从直观上也不难理解会将
β
\beta
β向0压缩。elastic net也可以使用增广去理解,相当于增广+Lasso。
Lasso
β ^ l a s s o = arg min β ∑ i = 1 N ( y i − β 0 − ∑ j = 1 p x i j β j ) 2 + λ ∑ j = 1 p ∣ β j ∣ \hat \beta^{lasso}=\mathop{\arg\min}\limits_{\beta}\sum_{i=1}^N(y_i-\beta_0-\sum_{j=1}^px_{ij}\beta_j)^2+\lambda\sum_{j=1}^p|\beta_j| β^lasso=βargmini=1∑N(yi−β0−j=1∑pxijβj)2+λj=1∑p∣βj∣
也等价于:
β
^
l
a
s
s
o
=
arg
min
β
∑
i
=
1
N
(
y
i
−
β
0
−
∑
j
=
1
p
x
i
j
β
j
)
2
s
.
t
.
∑
j
=
1
p
∣
β
j
∣
≥
t
\begin{aligned} &\hat \beta^{lasso}=\mathop{\arg\min}\limits_{\beta}\sum_{i=1}^N(y_i-\beta_0-\sum_{j=1}^px_{ij}\beta_j)^2\\ &s.t. \sum_{j=1}^p|\beta_j|\ge t \end{aligned}
β^lasso=βargmini=1∑N(yi−β0−j=1∑pxijβj)2s.t.j=1∑p∣βj∣≥t
相较于岭回归,lasso不同的唯一点在于惩罚项由L2变成了L1。这在计算上并不利于求解,因为在0不可导;但是在解释上更好理解,当(30)式中的t等于OLSE对应的
∣
∣
β
^
O
L
S
∣
∣
1
||\hat \beta^{OLS}||_1
∣∣β^OLS∣∣1则lasso的解和OLSE相同,而如果将t缩减为原始的1/2,则可以近似认为系数估计的值平均来说缩减为原始的1/2。
对比子集选择、岭回归、Lasso
对比子集选择、岭回归、lasso,三者对于变量选择都有一定的作用:
- 如果X标准化并且是正交的,那么以上三种方法都有显式解:
Estimator | Formula |
---|---|
Best subset(size M) | $\hat\beta_j I( |
Ridge | β ^ j / ( 1 + λ ) \hat \beta_j/(1+\lambda) β^j/(1+λ) |
Lasso | $sign(\hat \beta_j)( |
- 相对来说,Lasso可以真正的将某一个变量的系数估计变成0,做到变量选择,但是岭回归不能
- 将惩罚项进行拓展, p e n a t y ( λ , q ) = λ ∑ j = 1 p ∣ β j ∣ q penaty(\lambda,q)=\lambda\sum_{j=1}^p|\beta_j|^q penaty(λ,q)=λ∑j=1p∣βj∣q,当q小于1的时候,会在轴向上有更多的空间:
- 在p=1的时候,0是不可导的,这个特性比较特殊,所以引入一种新的正则方法:elastic penalty,对应的penalty为 λ L 2 + ( 1 − λ ) L 1 \lambda L_2+(1-\lambda)L_1 λL2+(1−λ)L1
Least Angle Regression
这个网站写的比较清楚:https://keson96.github.io/2016/10/26/2016-10-26-Least-Angle-Regression/
LAR算法的过程大致如下(X,Y已经标准化):
每一轮迭代的时候做的事情就是沿着多元OLS系数估计的角平分线方向进行小步幅的移动,这样会得到在相应移动之后的残差,由于并没有完全到达OLSE,所以此时的残差和“回归”变量之间并不是不相关的。一直移动直到开始出现另一个自变量与该残差的相关性与当前所有自变量与该残差的相关程度 ∣ ρ ∣ |\rho| ∣ρ∣相同,并开始进行下一轮的新迭代。
【注】:从直观的角度去理解,shrinkage methods都是基于原始估计值在“缩减”,LAR就是不停地在OLSE方向上移动小步幅,直到所有active set中的自变量和残差的相关程度相同。
具体来说,在每一轮更新系数估计的时候,在第k轮,
A
k
\mathcal{A}_k
Ak为当前的k-1个变量,
β
A
k
\beta_{\mathcal{A}_k}
βAk为当前还没有引入第k个变量时的系数估计,残差
r
k
=
y
−
X
A
k
β
A
k
r_k=y-X_{\mathcal{A}_k}\beta_{\mathcal{A}_k}
rk=y−XAkβAk,那么下一步的更新方向即为:
δ
k
=
(
X
A
k
T
X
A
k
)
−
1
X
A
k
T
r
k
\delta_k=(X_{\mathcal{A}_k}^TX_{\mathcal{A}_k})^{-1}X_{\mathcal{A}_k}^Tr_k
δk=(XAkTXAk)−1XAkTrk
更新系数为:
β
A
k
(
α
)
=
β
A
k
+
α
δ
k
\beta_{\mathcal{A}_k}(\alpha)=\beta_{\mathcal{A}_k}+\alpha\delta_k
βAk(α)=βAk+αδk
其中
α
\alpha
α是一个很小的数。一直调整系数估计
β
A
k
\beta_{\mathcal{A}_k}
βAk至有一个新的变量和当前变量的回归残差的相关程度达到某一个阈值要求,就引入这个新的变量,并重复上述更新过程。所以实际上在第k步,如果实现已经进行了标准化,用inner product计算相关系数有:
x
j
T
(
Y
−
X
β
)
=
γ
s
j
,
∀
x
j
∈
A
k
x_j^T(Y-X\beta)=\gamma s_j,\forall x_j\in \mathcal{A}_k
xjT(Y−Xβ)=γsj,∀xj∈Ak
其中
γ
\gamma
γ是相关系数的绝对值,
s
i
=
s
i
g
n
(
x
i
T
∗
(
Y
−
X
β
)
)
s_i=sign(x_i^T*(Y-X\beta))
si=sign(xiT∗(Y−Xβ)),也就是说当前
A
k
\mathcal{A}_k
Ak中所有变量和当前残差的相关程度是相同的。具体的这幅图可以很好地反映。
我们可以对比随着LAR迭代 ∣ ∣ β ^ ∣ ∣ 1 ||\hat \beta||_1 ∣∣β^∣∣1增加,各系数的变化路径,和Lasso随着 λ \lambda λ减小各系数的变化路径,可以看到二者唯一不同的地方在于某一个系数变为0之后,Lasso会直接将其踢出当前回归器,而LAR会接着朝某一方向移动。因此参照Lasso进行调整。
**LAR和Lasso结合的方法:当系数调整时等于0,则舍去改变量,提出当前active set A k \mathcal{A}_k Ak!**这个方法和Lasso的结果相近,并且计算很高效,尤其是 p > > N p>>N p>>N;只需要p步就行,而lasso往往需要大于p步。
**LAR和Lasso为什么在效果上这么相似?**我们从数学推导更严谨的角度上,直接关注最终active set的结果。假设都已经标准化,使用inner-product来度量相关程度。
对于LAR,假设最终的active set是
A
\mathcal{A}
A,那么有:
x
j
T
(
Y
−
X
β
)
=
γ
s
j
,
∀
x
j
∈
A
,
s
j
=
s
i
g
n
(
x
j
T
(
Y
−
X
β
)
)
x_j^T(Y-X\beta)=\gamma s_j,\forall x_j\in \mathcal{A},s_j=sign(x_j^T(Y-X\beta))
xjT(Y−Xβ)=γsj,∀xj∈A,sj=sign(xjT(Y−Xβ))
∣
x
j
T
(
Y
−
X
β
)
∣
≤
γ
,
∀
x
j
∉
A
|x_j^T(Y-X\beta)|\le \gamma ,\forall x_j\notin \mathcal{A}
∣xjT(Y−Xβ)∣≤γ,∀xj∈/A
其中
γ
\gamma
γ就是那个共同的相关程度。
而对于Lasso,如果是真正的active set
B
\mathcal{B}
B,有
β
j
≠
0
\beta_j\ne 0
βj=0,所以对于active set中的变量进行系数估计:
R
(
β
)
=
1
/
2
∣
∣
Y
−
X
β
∣
∣
2
2
+
λ
∣
∣
β
∣
∣
1
R(\beta)=1/2||Y-X\beta||^2_2+\lambda ||\beta||_1
R(β)=1/2∣∣Y−Xβ∣∣22+λ∣∣β∣∣1
实际上是可导的,并且导数等于零有:
x
j
T
(
Y
−
X
β
)
=
λ
s
i
g
n
(
β
j
)
,
∀
j
∈
B
x_j^T(Y-X\beta)=\lambda sign(\beta_j),\forall j\in \mathcal{B}
xjT(Y−Xβ)=λsign(βj),∀j∈B
而对于non-active变量自然会有
x
j
T
(
Y
−
X
β
)
≤
λ
,
∀
j
∉
B
x_j^T(Y-X\beta)\le \lambda,\forall j \notin \mathcal{B}
xjT(Y−Xβ)≤λ,∀j∈/B。
自由度的定义:LAR & Lasso
重新定义自由度:对于N个观测
Y
∈
ℜ
N
×
1
Y\in \Re^{N\times 1}
Y∈ℜN×1,根据模型得到估计
Y
^
=
(
y
^
1
,
.
.
.
,
y
^
N
)
\hat Y=(\hat y_1,...,\hat y_N)
Y^=(y^1,...,y^N),并定义模型自由度为,
d
f
(
y
^
)
=
1
σ
2
∑
i
=
1
N
C
o
v
(
y
^
i
,
y
i
)
df(\hat y)=\frac{1}{\sigma^2}\sum_{i=1}^NCov(\hat y_i,y_i)
df(y^)=σ21i=1∑NCov(y^i,yi)
- 容易验证,在此定义下,全模型的自由度为p+1;岭回归的自由度为 t r ( H λ ) tr(H_\lambda) tr(Hλ)
- 规定选模型选择k个自变量,使用随机模拟容易验证df会大于k
- 对于LAR,第k步的时候,自由度为k
- 对lasso+LAR,自由度近似为最终active set的变量个数
Methods Using Derived Input Directions
在很多时候可能会出现多重共线性,有一种解决方法是对原始输入 X j X_j Xj做线性组合提取 z 1 , . . . , z M z_1,...,z_M z1,...,zM,并使用 Z Z Z代替X进行回归,最后再变换回X。
PCR
PCR:主成分分析+回归。与岭回归进行对比,从之前的铺垫(X的SVD分解)可以知道,岭回归是一种shrinkage methods,对于方差较小的主成分,会做一些缩减,而对比来说,PCR则是对于方差很小的主成分直接缩减到0,较大的主成分则不做任何缩减,如图。
偏最小二乘回归
偏最小二乘回归和PCR相同点在于都是对X进行线性组合得到主成分Z,再使用Z进行回归,最后还原回使用X的回归。\textbf{不同点在于PCR得到主成分实际上只考虑了X,而偏最小二乘回归还考虑到了主成分Z和Y之间的相关性},并且适用于多对多的建模问题。当两组变量的个数很多,并且都存在多重共线性,而观测数据的数量又较少的时候可以使用。
现在考虑 Y 2 , . . . Y p Y_2,...Y_p Y2,...Yp与自变量 X 1 , . . . , X m X_1,...,X_m X1,...,Xm的建模问题。偏最小二乘回归的基本做法是:
-
首先在自变量集中提取第一成分 T 1 T_1 T1, T 1 T_1 T1是X的线性组合,并且能够尽可能多地提取X的变异信息;
-
同时在因变量集Y中提取第一成分 U 1 U_1 U1,并且要求 T 1 T_1 T1与 U 1 U_1 U1相关程度达到最大,建立因变量与 T 1 T_1 T1的回归,如果回归的精度已经达到要求则停止,否则继续;
-
如果精度不符合要求,则构建 X X X与 T 1 , . . . , T k T_1,...,T_k T1,...,Tk的回归方程,得到残差 E k E_{k} Ek,将 E k E_k Ek作为自变量集;构建 Y Y Y与 T 1 , . . . , T k T_1,...,T_k T1,...,Tk的回归方程,得到残差 F k F_{k} Fk,将 F k F_k Fk作为因变量集,提取第k+1个成分 T k + 1 T_{k+1} Tk+1;
t 1 = X w 1 t_1=Xw_1 t1=Xw1
u 1 = Y v 1 u_1=Yv_1 u1=Yv1
假设X和Y都已经标准化,现要求同时最大化 T 1 T_1 T1的方差, U 1 U_1 U1的方差和 T 1 T_1 T1与 U 1 U_1 U1的相关程度。
max w 1 , v 1 V a r ( T 1 ) V a r ( U 1 ) ρ ( T 1 , U 1 ) = max w 1 , v 1 C o v ( T 1 , U 1 ) = w 1 T X T Y v 1 \max_{w_1,v_1}\sqrt{Var(T_1)Var(U_1)}\rho(T_1,U_1)=\max_{w_1,v_1}Cov(T_1,U_1)=w_1^TX^TYv_1 w1,v1maxVar(T1)Var(U1)ρ(T1,U1)=w1,v1maxCov(T1,U1)=w1TXTYv1
使得:
∣ ∣ w 1 ∣ ∣ 2 = 1 , ∣ ∣ v 1 ∣ ∣ 2 = 1 ||w_1||_2=1,||v_1||^2=1 ∣∣w1∣∣2=1,∣∣v1∣∣2=1
解得, w 1 w_1 w1是 X 0 T Y 0 Y 0 T X 0 X_0^TY_0Y_0^TX_0 X0TY0Y0TX0最大特征根对应的特征向量, v 1 v_1 v1是 Y 0 T X 0 X 0 T Y 0 Y_0^TX_0X_0^TY_0 Y0TX0X0TY0最大特征根对应的特征向量。 -
若最终得到对自变量集提取的r个主成分 T 1 , . . . , T r T_1,...,T_r T1,...,Tr,偏最小二乘回归建立 T 1 , . . . , T r T_1,...,T_r T1,...,Tr对 Y 1 , . . . , Y p Y_1,...,Y_p Y1,...,Yp的回归,再重新表示为原始自变量与Y的回归即可
Discussion:A Comparison of Selection and Shrinkage Methods
- 岭回归效果最好的那一个。它对于所有主成分的方向都会做缩减,但是尤其在低方差的方向缩减,并且是一个相对连续光滑的shrinkage
- 偏最小二乘回归在低方差方向做缩减,同时在高方差方向可能做膨胀,这使得PLS有一点不稳定
实际上就是,PLS、子集选择、PCA都是离散化的shrinkage过程,而岭回归、Lasso则是连续的。
Multiple Outcome Shrinkage and Selection
对于有多个输出的 Y ∈ ℜ N × K Y\in\Re^{N\times K} Y∈ℜN×K中,如何使用shrinkage。一种想法是分开 Y 1 , Y 2 , . . . , Y K Y_1,Y_2,...,Y_K Y1,Y2,...,YK,分别使用相同超参数或不同超参数下的Lasso或岭回归。另一种想法则是延续PCA方法的canonical correlation analysis(CCA),本节介绍CCA。
CCA希望能够找到一组X的线性组合
X
v
m
,
m
=
1
,
2...
M
Xv_m,m=1,2...M
Xvm,m=1,2...M和相应的Y的线性组合
Y
u
m
,
m
=
1
,
2...
M
Yu_m,m=1,2...M
Yum,m=1,2...M使得:
C
o
r
r
2
(
Y
u
m
,
X
v
m
)
\mathrm{Corr}^2(\mathbf{Y}u_m,\mathbf{X}v_m)
Corr2(Yum,Xvm)
最大。注意M至多取min(K,p).
CCA的解:假设X,Y均已中心化
最大化:
C
o
r
r
2
(
Y
u
m
,
X
v
m
)
\mathrm{Corr}^2(\mathbf{Y}u_m,\mathbf{X}v_m)
Corr2(Yum,Xvm)
等价于:
max
u
T
(
Y
T
Y
)
u
=
1
v
T
(
X
T
X
)
v
=
1
u
T
(
Y
T
X
)
v
,
\max_{\begin{array}{c}u^T(\mathbf{Y}^T\mathbf{Y})u=1\\v^T(\mathbf{X}^T\mathbf{X})v=1\end{array}}u^T(\mathbf{Y}^T\mathbf{X})v,
uT(YTY)u=1vT(XTX)v=1maxuT(YTX)v,
如果先对
Y
Y
Y做“标准化”,使得变量之间是不相关且等方差的,即
Y
~
=
Y
(
Y
T
Y
)
−
1
/
2
\tilde Y=Y(Y^TY)^{-1/2}
Y~=Y(YTY)−1/2,对X同理得到
X
~
=
X
(
X
T
X
)
(
−
1
/
2
)
\tilde X=X(X^TX)^{(-1/2)}
X~=X(XTX)(−1/2);并令
u
~
=
(
(
Y
T
Y
)
1
/
2
)
u
,
v
~
=
(
(
Y
T
Y
)
1
/
2
)
v
\tilde u=((Y^TY)^{1/2})u,\tilde v=((Y^TY)^{1/2})v
u~=((YTY)1/2)u,v~=((YTY)1/2)v。那么上述问题等价于:
max
u
~
T
u
~
=
1
v
~
T
v
~
=
1
u
~
T
(
Y
T
~
X
~
)
v
~
,
\max_{\begin{aligned}\tilde u^T\tilde u=1\\ \tilde v^T\tilde v=1\end{aligned}}\tilde u^T(\tilde{ \mathbf{Y}^T}\tilde{\mathbf{X}})\tilde v,
u~Tu~=1v~Tv~=1maxu~T(YT~X~)v~,
使用拉格朗日乘子法,可以得到:
M
v
~
1
=
λ
u
~
1
,
M
T
u
~
1
=
λ
v
~
1
.
\begin{aligned}M\tilde v_1&=\lambda \tilde u_1,\\M^T\tilde u_1&=\lambda \tilde v_1.\end{aligned}
Mv~1MTu~1=λu~1,=λv~1.
其中
M
=
Y
~
T
X
~
M=\tilde Y^T\tilde X
M=Y~TX~。对M使用SVD分解:
M
=
(
Y
T
Y
)
−
1
2
(
Y
T
X
)
(
X
T
X
)
−
1
2
=
U
~
D
V
~
T
M=(\mathbf{Y}^T\mathbf{Y})^{-\frac12}(\mathbf{Y}^T\mathbf{X})(\mathbf{X}^T\mathbf{X})^{-\frac12}=\tilde UD\tilde V^T
M=(YTY)−21(YTX)(XTX)−21=U~DV~T
\textbf{使用代数相关知识},可以得到
u
~
1
\tilde u_1
u~1是
U
~
\tilde U
U~的第一列,
v
~
1
\tilde v_1
v~1是
V
~
\tilde V
V~的第一列。那么
u
=
u
~
(
(
Y
T
Y
)
−
1
/
2
)
,
v
=
v
~
(
(
X
T
X
)
−
1
/
2
)
u=\tilde u((Y^TY)^{-1/2}),v=\tilde v((X^TX)^{-1/2})
u=u~((YTY)−1/2),v=v~((XTX)−1/2).
后续的成分提取,和PCA一致,需要与前面的成分不相关,即:
max
u
T
(
Y
T
Y
)
u
=
1
v
T
(
X
T
X
)
v
=
1
u
T
u
j
=
0
,
∀
j
<
k
v
T
v
j
=
0
,
∀
j
<
k
u
T
(
Y
T
X
)
v
,
\max_{\begin{array}{c}u^T(\mathbf{Y}^T\mathbf{Y})u=1\\v^T(\mathbf{X}^T\mathbf{X})v=1\\ u^Tu_j=0,\forall j<k\\ v^Tv_j=0,\forall j<k\end{array}}u^T(\mathbf{Y}^T\mathbf{X})v,
uT(YTY)u=1vT(XTX)v=1uTuj=0,∀j<kvTvj=0,∀j<kmaxuT(YTX)v,
不难证明得到:\textbf{对
M
=
(
Y
T
Y
)
−
1
2
(
Y
T
X
)
(
X
T
X
)
−
1
2
=
U
~
D
V
~
T
M=(\mathbf{Y}^T\mathbf{Y})^{-\frac12}(\mathbf{Y}^T\mathbf{X})(\mathbf{X}^T\mathbf{X})^{-\frac12}=\tilde UD\tilde V^T
M=(YTY)−21(YTX)(XTX)−21=U~DV~T进行SVD分解,
u
=
u
~
(
(
Y
T
Y
)
−
1
/
2
)
,
v
=
v
~
(
(
X
T
X
)
−
1
/
2
)
u=\tilde u((Y^TY)^{-1/2}),v=\tilde v((X^TX)^{-1/2})
u=u~((YTY)−1/2),v=v~((XTX)−1/2),即可得到相应线性变化的解。}
此外,对于Reduced-rank regression,假设
V
a
r
(
ϵ
)
=
Σ
Var(\epsilon)=\Sigma
Var(ϵ)=Σ,那么希望解决:
B
^
rr
(
m
)
=
argmin
rank(B)
=
m
∑
i
=
1
N
(
y
i
−
B
T
x
i
)
T
Σ
−
1
(
y
i
−
B
T
x
i
)
.
\hat{\mathbf{B}}^{\text{rr}} ( m ) = \underset {\text{rank(B)}=m}{\text{argmin}} \sum _ { i = 1}^{N}(y_i-\mathbf{B}^Tx_i)^T\boldsymbol{\Sigma}^{-1}(y_i-\mathbf{B}^Tx_i).
B^rr(m)=rank(B)=margmini=1∑N(yi−BTxi)TΣ−1(yi−BTxi).
如果
Σ
=
Y
T
Y
/
N
\Sigma=Y^TY/N
Σ=YTY/N,那么可以使用CCA给出解:
B
^
r
r
(
m
)
=
B
^
U
m
U
m
−
,
\hat{\mathbf{B}}^{\mathrm{rr}}(m)=\hat{\mathbf{B}}\mathbf{U}_m\mathbf{U}_m^-,
B^rr(m)=B^UmUm−,
其中
B
^
\hat B
B^是最小二乘下得到的系数估计,
U
m
=
[
u
1
,
.
.
.
u
m
]
U_m=[u_1,...u_m]
Um=[u1,...um],
U
m
−
=
Σ
−
1
/
2
U
~
m
U_m^-=\Sigma^{-1/2}\tilde U_m
Um−=Σ−1/2U~m。由此:
B
^
r
r
(
M
)
=
(
X
T
X
)
−
1
X
T
(
Y
U
m
)
U
m
,
\hat{\mathbf{B}}^{\mathrm{rr}}(M)=(\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T(\mathbf{Y}\mathbf{U}_m)\mathbf{U}_m,
B^rr(M)=(XTX)−1XT(YUm)Um,
可以理解为是使用X对
Y
U
m
YU_m
YUm进行回归,再使用
U
m
−
U_m^-
Um−回到原本的系数上。
预测:
Y
^
r
r
(
m
)
=
X
(
X
T
X
)
−
1
X
T
Y
U
m
U
m
−
=
H
Y
P
m
,
\begin{aligned}\hat{\mathbf{Y}}^{\mathrm{rr}}(m)&=\mathbf{X}(\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{Y}\mathbf{U}_m\mathbf{U}_m^-\\&=\mathbf{H}\mathbf{Y}\mathbf{P}_m,\end{aligned}
Y^rr(m)=X(XTX)−1XTYUmUm−=HYPm,
其中H是OLSE的帽子矩阵,
P
m
P_m
Pm是基于CCA得到的秩为m的矩阵。此外由于在证明过程中并没有对
Σ
\Sigma
Σ做限制,所以以上形式是通用的。
基于reduced rank regression的一种shrinkage为:
B
c
+
w
^
=
B
U
Λ
U
−
1
^
,
\hat{\mathbf{B^{c+w}}}=\hat{\mathbf{BU\Lambda U^{-1}}},
Bc+w^=BUΛU−1^,
其中
Λ
\Lambda
Λ是一个对角阵,可以使用CV方法得到。由此,预测为:
Y
c
+
w
^
=
H
Y
S
c
+
w
,
\hat{\mathrm{Y^{c+w}}}=\mathrm{HYS^{c+w}},
Yc+w^=HYSc+w,
更一般的,加上岭回归:
Y
r
i
d
g
e
,
c
+
w
^
=
A
λ
Y
S
c
+
w
,
\hat{\mathbf{Y}^{\mathrm{ridge,c+w}}}=\mathbf{A_\lambda YS^{c+w}},
Yridge,c+w^=AλYSc+w,
A
λ
=
X
(
X
T
X
+
λ
I
)
−
1
X
T
\mathbf{A}_\lambda=\mathbf{X}(\mathbf{X}^T\mathbf{X}+\lambda\mathbf{I})^{-1}\mathbf{X}^T
Aλ=X(XTX+λI)−1XT
More on the Lasso and Related Path Algorithms
Incremental Forward Stagewise Regression
首先回顾一下Lasso和LAR。从前面的推导我们可以发现,对于最终的active set中的变量,Lasso的解需要满足:
x
j
T
(
Y
−
X
β
)
=
λ
s
i
g
n
(
β
j
)
,
∀
j
∈
B
x_j^T(Y-X\beta)=\lambda sign(\beta_j),\forall j\in \mathcal{B}
xjT(Y−Xβ)=λsign(βj),∀j∈B
而对于non-active变量自然会有
x
j
T
(
Y
−
X
β
)
≤
λ
,
∀
j
∉
B
x_j^T(Y-X\beta)\le \lambda,\forall j \notin \mathcal{B}
xjT(Y−Xβ)≤λ,∀j∈/B。所以就会发现,此时残差与active set中的变量的相关程度是一致的! 这也和LAR的想法是一样的,所以才可以使用LAR作为Lasso的一个近似求解。
现在想讨论的是,使用类似这种迭代算法(例如LAR)进行求解,达到shrinkage的目的,还有什么可以改进的,以及使用这种迭代算法,迭代的路径是什么。
本节首先介绍一个新的方法:incremental forward stagewise regression—— F S ϵ FS_\epsilon FSϵ,并且和之前提到的stagewise regression进行对比
我们将它和LAR以及stagewise regression进行对比:
与LAR对比,直接关注到迭代过程,可以看到:
-
LAR实际上每一次迭代是对当前active set中的所有系数估计进行迭代,迭代的方向是当前残差和active set中自变量的系数(针对多元线性模型)估计值方向,以使得残差和自变量越来越不相关,直到non-active set中出现和这些变量相关程度一样的新变量引入active set;
-
而FS算法则是不会更新active set中已有的变量,而是平等地对所有变量进行考察,对与当前残差最相关的变量 x j x_j xj移动,移动的方向与一元线性模型估计得到的系数估计方向一致(这就和LAR不一样了)
-
与stagewise regression对比,一般的stagewise regression与 F S ϵ FS_\epsilon FSϵ唯一不同的在于,更新的步幅并不是实现指定好的 ϵ \epsilon ϵ,而是 < x j , r > <x_j,r> <xj,r>
简单来说,LAR每一次是缓慢移动所有的变量系数估计,而FS则是只动一个;stagewise每一次把 β i \beta_i βi移动拉满,而FS则只是移动一小步。
从LAR与FS的对比可以看到,LAR在迭代系数的时候,由于考虑的是一个多元线性模型的系数估计方向,所以可能和单独的一元线性回归的系数估计方向相反,于是可以做出以下的调整,以强制使得和一元线性回归估计的系数方向一致:
LAR、lasso、 F S 0 m o d i f i c a t i o n FS_0 modification FS0modification都可以使用LAR进行迭代计算,他们的路径都是分段线性的:
- 对于 ϵ → 0 \epsilon\to0 ϵ→0的情况 F S 0 FS_0 FS0,它和Lasso不同但都是分段线性的路径,书中提到它实际上也是在做一个优化:" F S 0 FS_0 FS0 is optimal per unit increase in L1 arc-length traveled along the coefficient path.Hence its coefficient path is discouraged from changing directions too often."在 p > > N p>>N p>>N的时候相对于lasso,使用 F S 0 FS_0 FS0会更加smooth,效果更好;
- 当LAR每次迭代的时候都是单调的,三者都将是一致的;当不是单调的,但是不跨过0,LAR和lasso是一致的
Piecewise-Linear Path Algorithms
对于正则化的问题,都可以使用类似LAR的算法进行求解,都会有一个迭代路径,这样的算法称作"path algorithms"。现在关注这些正则条件对应的迭代路径。
β
^
(
λ
)
=
a
r
g
m
i
n
β
[
R
(
β
)
+
λ
J
(
β
)
]
\hat \beta (\lambda)=argmin_\beta[R(\beta)+\lambda J(\beta)]
β^(λ)=argminβ[R(β)+λJ(β)]
R
(
β
)
=
∑
i
=
1
N
L
(
y
i
,
β
0
+
∑
j
=
1
p
x
j
β
j
)
R(\beta)=\sum_{i=1}^NL(y_i,\beta_0+\sum_{j=1}^px_j\beta_j)
R(β)=i=1∑NL(yi,β0+j=1∑pxjβj)
其中L和J都是凸函数,则当:
- R是二次或分段二次的
- J是分段线性的
则以上迭代路径是分段线性的。
所以显然, L 1 , L ∞ L_1,L_\infty L1,L∞作为penalty在MSE下的迭代路径都是分段线性的。
The Dantzig Selector
min
β
∣
∣
X
T
(
Y
−
X
β
)
∣
∣
∞
s
.
t
.
∣
∣
β
∣
∣
1
≤
t
\min_\beta ||X^T(Y-X\beta)||_\infty\ s.t.\ ||\beta||_1\le t
βmin∣∣XT(Y−Xβ)∣∣∞ s.t. ∣∣β∣∣1≤t
可以看到他是想让MSE的各方向梯度的最大值充分小,同时加上L1正则项。DS最终求解转化为一个线性规划问题。
不难理解这很像lasso:
- 在p<N,t充分大的时候,二者的解都会是OSLE;在p>N的时候,他们都会在L1正则项下得到一个解,而如果t较小,DS的解路径和Lasso不一样;
- Lasso是想让残差和active set中的所有变量相关程度相同,并且大于non-active set;DS则是想让最大的那一个相关程度最小,控制的是upper bound,但是这就有可能导致active set中的变量的相关程度有可能小于non-active set中的变量,这显然是不合的,所以DS有的时候并不准确
The Grouped Lasso
有的时候需要对一批变量同时进行正则,例如虚拟变量,于是出现the grouped lasso。
min
β
∈
ℜ
p
(
∣
∣
Y
−
β
1
−
∑
l
=
1
L
X
l
β
l
∣
∣
2
+
λ
∑
l
=
1
L
p
l
∣
∣
β
)
l
∣
∣
2
)
\min_{\beta \in \Re^p}(||Y-\beta \mathbf{1}-\sum_{l=1}^LX_l\beta_l ||_2+\lambda \sum_{l=1}^L\sqrt{p_l}||\beta)l||_2)
β∈ℜpmin(∣∣Y−β1−l=1∑LXlβl∣∣2+λl=1∑Lpl∣∣β)l∣∣2)
其中
p
l
\sqrt{p_l}
pl表示第l组变量的变量个数。
Further Properties of the Lasso
对于Lasso来说,active set中的变量系数也会被shrink,一般来说并不是相合估计。一种减轻这种情况的方法是,在针对所有的变量使用Lasso筛选得到非零系数变量集之后,再针对Y使用一般的线性回归不用Lasso;另一种方法则是,在筛选得到非零系数变量集之后,重新使用CV得到 λ ′ < λ \lambda'<\lambda λ′<λ,由此正则化的程度减轻,这种方法更加常用,被称作relaxed lasso.
另一种方法则是直接改变正则化的函数:
d
J
a
(
β
,
λ
)
d
β
=
λ
⋅
sign
(
β
)
[
I
(
∣
β
∣
≤
λ
)
+
(
a
λ
−
∣
β
∣
)
+
(
a
−
1
)
λ
I
(
∣
β
∣
>
λ
)
]
\frac{dJ_a(\beta,\lambda)}{d\beta}=\lambda\cdot\operatorname{sign}(\beta)\Big[I(|\beta|\leq\lambda)+\frac{(a\lambda-|\beta|)_+}{(a-1)\lambda}I(|\beta|>\lambda)\Big]
dβdJa(β,λ)=λ⋅sign(β)[I(∣β∣≤λ)+(a−1)λ(aλ−∣β∣)+I(∣β∣>λ)]
相对Lasso来说,这个正则函数会对
∣
β
∣
|\beta|
∣β∣较大的时候惩罚力度轻一些,但是并不是凸函数,计算上不方便。一种改进的想法(adaptive lasso)则是使用:
∑
j
=
1
p
w
j
∣
β
j
∣
w
h
e
r
e
w
j
=
1
/
∣
β
^
j
∣
ν
,
\sum_{j=1}^{\boldsymbol{p}}w_{j}|\beta_{j}|\mathrm{~where~}w_{j}=1/|\hat{\beta}_{j}|^{\nu},
j=1∑pwj∣βj∣ where wj=1/∣β^j∣ν,
其中
β
^
j
\hat \beta_j
β^j是使用OLSE得到的,
ν
>
0
\nu>0
ν>0。adaptive lasso得到的系数估计具有相合性,并且保留凸性。
Pathwise Coordinate Optimization
另一种得到Lasso解的方法是simple coordinate descent.该方法的思想就是,每一次迭代的时候,轮流固定其他系数估计不变,针对某一个变量更新。假设所有X都标准化了,那么:
R
(
β
~
(
λ
)
,
β
j
)
=
1
2
∑
i
=
1
N
(
y
i
−
∑
k
≠
j
x
i
k
β
~
k
(
λ
)
−
x
i
j
β
j
)
2
+
λ
∑
k
≠
j
∣
β
~
k
(
λ
)
∣
+
λ
∣
β
j
∣
,
R(\tilde{\beta}(\lambda),\beta_j)=\frac12\sum_{i=1}^N\left(y_i-\sum_{k\neq j}x_{ik}\tilde{\beta}_k(\lambda)-x_{ij}\beta_j\right)^2+\lambda\sum_{k\neq j}|\tilde{\beta}_k(\lambda)|+\lambda|\beta_j|,
R(β~(λ),βj)=21i=1∑N
yi−k=j∑xikβ~k(λ)−xijβj
2+λk=j∑∣β~k(λ)∣+λ∣βj∣,
更新:
β
~
j
(
λ
)
←
S
(
∑
i
=
1
N
x
i
j
(
y
i
−
y
~
i
(
j
)
)
,
λ
)
.
\tilde{\beta}_j(\lambda)\leftarrow S\biggl(\sum_{i=1}^Nx_{ij}(y_i-\tilde{y}_i^{(j)}),\lambda\biggr).
β~j(λ)←S(i=1∑Nxij(yi−y~i(j)),λ).
其中
S
(
t
,
λ
)
=
sign
(
t
)
(
∣
t
∣
−
λ
)
+
S(t,\lambda)=\text{sign}(t)(|t|-\lambda)_+
S(t,λ)=sign(t)(∣t∣−λ)+.此处S的前一项恰好是
x
j
x_j
xj对
Y
−
Y
~
(
j
)
Y-\tilde Y^{(j)}
Y−Y~(j)进行回归得到的系数。对
j
=
1
,
2...
p
j=1,2...p
j=1,2...p重复上述迭代过程,直到收敛,从而得到
β
^
(
λ
)
\hat \beta(\lambda)
β^(λ)。
同样可以使用以上算法针对不同的进行。从最大的 λ m a x \lambda_{max} λmax, β ^ ( λ m a x ) = 0 \hat \beta(\lambda_{max})=0 β^(λmax)=0,每一次都减小一点点得到 λ k \lambda_k λk,使用上述算法得到 β ^ ( λ k ) \hat \beta(\lambda_k) β^(λk),并使用上一个得到的 β ^ ( λ k − 1 ) \hat \beta(\lambda_{k-1}) β^(λk−1)作为初始值。这会比LARS更快,因为每一轮都是进行一元线性回归,计算会快很多。