简介
Lasso Regression也叫Ridge Regression(岭回归),其实这两个都是线性回归模型的变种。
当线性回归加L1正则就是Lasso Regression,当线性回归加L2正则就是Ridge Regression。
公式输入请参考:在线Latex公式
Why We Prefer Sparsity
·如果维度太高,计算量也变得很高,尤其是在特征维度D>样本个数N的时候,特别需要Lasso来去掉多余特征,否则容易出现过拟合现象。这个之前有提到L1 norm可以帮助过滤多余特征。
·在稀疏性条件下,计算量只依赖非0项的个数
·提高可解释性,当参数很多的时候,无法看出哪些参数对目标函数有帮助。
Sparsity例子:Housing Price Application
*Lot size
*Single Family
*Year built
*Last sold price
Last sale price/sqft
*Finished sqft
*Unfinished sqft
Finished basement sqft
*#floors
*Flooring types
Parking type
Parking amount
Cooling
*Heating
Exterior materials
Roof type
Structure stylex
Dishwasher
Garbage disposal
Microwave
Range /Oven
Refrigerator
Washer
Dryer
Laundry location
Heating type
Jetted Tub
Deck
Fenced Yard
Lawn
Garden
Sprinkler System
以上这么多预测房价的特征中,其中星号表示比较重要的特征,那如何选取这些重要的特征?下面来分别看看。
确定特征的方法
Option1:Exhaustive Search:“all subsets”
假如我有一个特征集合
A
=
{
f
1
,
f
2
,
f
3
,
f
4
}
A=\{f_1,f_2,f_3,f_4\}
A={f1,f2,f3,f4}
由于不知道哪个特征好,用简单粗暴的方式来排列组合特征,然后看谁的准确率(acc)高
这些个特征的组合我们给个名字叫:Power set。可以看到Power set的大小是
2
n
−
1
2^n-1
2n−1,n为特征的个数。明显,特征个数超过10个就太复杂了。
Option2:Greedy Approaches
假如我有一个特征集合
A
=
{
f
1
,
f
2
,
f
3
,
f
4
,
f
5
}
A=\{f_1,f_2,f_3,f_4,f_5\}
A={f1,f2,f3,f4,f5},5个特征
定义一个best_feature_set集合,并初始化为空
·Forward Stepwise
开始循环,第一个循环:
把找到的最好第二个特征
f
2
f_2
f2放入best_feature_set中
开始第二次循环,在A-best_feature_set中来循环:
这里找出来的
f
2
,
f
4
f_2,f_4
f2,f4具有最高的准确率,这里
f
2
,
f
4
f_2,f_4
f2,f4要比单个的
f
2
f_2
f2的准确度要高才行,不然就停止循环了。
以此类推。。。直到准确率没有新的最大值停止循环。
·Backward Stepwise
和上面的算法一样,只不过开始的best_feature_set集合初始化为A,然后依次去掉特征,每次选择产生准确最高那组的特征。
例如上图中去掉
f
2
f_2
f2,准确率最高,说明
f
2
f_2
f2不行,要去掉。
然后在循环,这个时候去掉
f
5
f_5
f5。
当新一轮循环的最大准确率比上一轮的低,就停止循环。
Option3:via Regularization: A Principled Way(正则的方法)
这种方法不像前面的方式通过枚举的方式来选取特征,而是通过一个目标函数构建特征组合。
开始之前,先看这个:
Ridge regression:L2 regularized regression
假设有样本:
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
n
,
y
n
)
}
D=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\}
D={(x1,y1),(x2,y2),...,(xn,yn)},则线性回归的损失函数为:
L
=
∣
∣
X
w
−
y
∣
∣
F
2
+
λ
∣
∣
w
∣
∣
2
2
L=||Xw-y||^2_F+\lambda||w||^2_2
L=∣∣Xw−y∣∣F2+λ∣∣w∣∣22
上面是矩阵的形式(X是矩阵,其他两个是向量),第一项写成最小二乘的形式是:
L
=
∏
i
=
1
n
(
w
T
x
i
−
y
i
)
2
+
λ
∣
∣
w
∣
∣
2
2
L=\prod_{i=1}^n(w^Tx_i-y_i)^2+\lambda||w||^2_2
L=i=1∏n(wTxi−yi)2+λ∣∣w∣∣22
以上线性回归加上L2的正则项就是岭回归。加了L2的正则项可以避免w很大
Lasso regression:L1 regularized regression
假设有样本:
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
n
,
y
n
)
}
D=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\}
D={(x1,y1),(x2,y2),...,(xn,yn)},则线性回归的损失函数为:
L
=
∣
∣
X
w
−
y
∣
∣
F
2
+
λ
∣
∣
w
∣
∣
1
L=||Xw-y||^2_F+\lambda||w||_1
L=∣∣Xw−y∣∣F2+λ∣∣w∣∣1
上面是矩阵的形式(X是矩阵,其他两个是向量),第一项写成最小二乘的形式是:
L
=
∏
i
=
1
n
(
w
T
x
i
−
y
i
)
2
+
λ
∣
∣
w
∣
∣
1
L=\prod_{i=1}^n(w^Tx_i-y_i)^2+\lambda||w||_1
L=i=1∏n(wTxi−yi)2+λ∣∣w∣∣1
上面是矩阵的形式,第一项写成最小二乘的形式是:
L
=
∏
i
=
1
n
(
w
T
x
i
−
y
i
)
2
+
λ
∣
∣
w
∣
∣
1
L=\prod_{i=1}^n(w^Tx_i-y_i)^2+\lambda||w||_1
L=i=1∏n(wTxi−yi)2+λ∣∣w∣∣1
如果我们对这个损失函数求偏导,先关注最后的正则项:
∣
w
∣
|w|
∣w∣对
w
w
w的梯度是多少。
∂
∣
∣
w
∣
∣
1
∂
w
j
=
∂
∣
w
j
∣
∂
w
j
\cfrac{\partial||w||_1}{\partial w_j}=\cfrac{\partial |w_j|}{\partial w_j}
∂wj∂∣∣w∣∣1=∂wj∂∣wj∣
当
w
j
w_j
wj为正数和负数的时候梯度结果分别是正负1,当其等于0的时候,这个时候梯度有很多个解,图像上看:
这种需要分情况讨论的梯度下降称为sub-gradient descent。
但是,对于Lasso,有另外一种优化算法:
Coordinate Descent
Goal: minimize some function g
g
(
w
)
=
g
(
w
1
,
w
2
,
.
.
.
,
w
D
)
g(w)=g(w_1,w_2,...,w_D)
g(w)=g(w1,w2,...,wD)
我的函数g有很多个维度,但是我每次寻求的最好的解是在某一个维度上的,这个时候可以把其他维度当作常数。
算法描述如下:
在t=1时刻,我们选定某一维度
w
1
w_1
w1,其他的看做是常数,那么
g
(
w
)
=
g
(
w
1
)
g(w)=g(w_1)
g(w)=g(w1)
求解最佳的
w
^
1
\hat w_1
w^1:
w
^
1
=
a
r
g
m
i
n
w
1
g
(
w
1
)
\hat w_1=arg\underset{w_1}{min}g(w_1)
w^1=argw1ming(w1)
在t=2时刻,我们选定某一维度
w
5
w_5
w5,其他的看做是常数,那么
g
(
w
)
=
g
(
w
5
)
g(w)=g(w_5)
g(w)=g(w5)
求解最佳的
w
^
5
\hat w_5
w^5:
w
^
5
=
a
r
g
min
w
5
g
(
w
5
)
\hat w_5=arg\underset{w_5}{\min}g(w_5)
w^5=argw5ming(w5)
一直循环,直到函数收敛,循环过程中,
w
w
w的选择可以按顺序,也可以随机选。
Coordinate Descent的特点
1、不需要设定step-size。
2、对于lasso objective,它会收敛。
3、维度选择方法可以依次选择或者随机选择。
Coordinate Descent for Lasso
把Lasso的损失函数抄下来:
L
=
∏
i
=
1
n
(
w
T
x
i
−
y
i
)
2
+
λ
∣
∣
w
∣
∣
1
L=\prod_{i=1}^n(w^Tx_i-y_i)^2+\lambda||w||_1
L=i=1∏n(wTxi−yi)2+λ∣∣w∣∣1
下面写出加了log后的Lasso的损失函数,连乘变连加(这里有点没看懂,log没看见,后面的推导也省略了):
L
=
∑
i
=
1
n
(
∑
j
=
1
d
w
j
x
i
j
+
b
−
y
i
)
2
+
λ
∑
j
=
1
d
∣
w
j
∣
L=\sum_{i=1}^n(\sum_{j=1}^dw_jx_{ij}+b-y_i)^2+\lambda\sum_{j=1}^d|w_j|
L=i=1∑n(j=1∑dwjxij+b−yi)2+λj=1∑d∣wj∣
其中
x
i
j
x_{ij}
xij代表第
i
i
i个样本的第
j
j
j个特征。
特征维度为
d
d
d。上式中第一项是最小二乘形式,第二项是L1正则项。
然后求损失函数L对某个特征维度
w
l
w_l
wl的偏导(下式中后面那项其他维度对第
l
l
l维度求导为0,第二行单独把
w
l
w_l
wl从求和里面拿出来,第三行把这项放到括号外):
∂
L
∂
w
l
=
2
∑
i
=
1
n
(
∑
j
=
1
d
w
j
x
i
j
+
b
−
y
i
)
⋅
x
i
l
+
λ
∂
∣
w
l
∣
∂
w
l
=
2
∑
i
=
1
n
(
∑
j
≠
l
d
w
j
x
i
j
+
b
−
y
i
+
w
l
x
i
l
)
⋅
x
i
l
+
λ
∂
∣
w
l
∣
∂
w
l
=
2
∑
i
=
1
n
(
∑
j
≠
l
d
w
j
x
i
j
+
b
−
y
i
)
⋅
x
i
l
+
2
∑
i
=
1
n
w
l
x
i
l
2
+
λ
∂
∣
w
l
∣
∂
w
l
=
2
∑
i
=
1
n
(
∑
j
≠
l
d
w
j
x
i
j
+
b
−
y
i
)
⋅
x
i
l
+
2
w
l
∑
i
=
1
n
x
i
l
2
+
λ
∂
∣
w
l
∣
∂
w
l
\begin{aligned} \cfrac{\partial L}{\partial w_l}&=2\sum_{i=1}^n(\sum_{j=1}^dw_jx_{ij}+b-y_i)\cdot x_{il}+\lambda\cfrac{\partial |w_l|}{\partial w_l}\\ &=2\sum_{i=1}^n(\sum_{j\ne l}^dw_jx_{ij}+b-y_i+w_lx_{il})\cdot x_{il}+\lambda\cfrac{\partial |w_l|}{\partial w_l}\\ &=2\sum_{i=1}^n(\sum_{j\ne l}^dw_jx_{ij}+b-y_i)\cdot x_{il}+2\sum_{i=1}^nw_lx_{il}^2+\lambda\cfrac{\partial |w_l|}{\partial w_l}\\ &=2\sum_{i=1}^n(\sum_{j\ne l}^dw_jx_{ij}+b-y_i)\cdot x_{il}+2w_l\sum_{i=1}^nx_{il}^2+\lambda\cfrac{\partial |w_l|}{\partial w_l} \end{aligned}
∂wl∂L=2i=1∑n(j=1∑dwjxij+b−yi)⋅xil+λ∂wl∂∣wl∣=2i=1∑n(j=l∑dwjxij+b−yi+wlxil)⋅xil+λ∂wl∂∣wl∣=2i=1∑n(j=l∑dwjxij+b−yi)⋅xil+2i=1∑nwlxil2+λ∂wl∂∣wl∣=2i=1∑n(j=l∑dwjxij+b−yi)⋅xil+2wli=1∑nxil2+λ∂wl∂∣wl∣
然后记:
c
l
=
2
∑
i
=
1
n
(
∑
j
≠
l
d
w
j
x
i
j
+
b
−
y
i
)
⋅
x
i
l
c_l=2\sum_{i=1}^n(\sum_{j\ne l}^dw_jx_{ij}+b-y_i)\cdot x_{il}
cl=2∑i=1n(∑j=ldwjxij+b−yi)⋅xil
a
l
=
2
∑
i
=
1
n
x
i
l
2
a_l=2\sum_{i=1}^nx_{il}^2
al=2∑i=1nxil2
上面的假设中
a
l
a_l
al必然大于0的(样本不可能都为0),整理一下就是下面这个样子:
∂
L
∂
w
l
=
c
l
+
w
l
⋅
a
l
+
λ
∂
∣
w
l
∣
∂
w
l
\cfrac{\partial L}{\partial w_l}=c_l+w_l\cdot a_l+\lambda\cfrac{\partial |w_l|}{\partial w_l}
∂wl∂L=cl+wl⋅al+λ∂wl∂∣wl∣
由于最后一项有绝对值,所以我们分三种情况讨论:
∂
L
∂
w
l
=
{
c
l
+
w
l
⋅
a
l
+
λ
, if
w
l
>
0
[
c
l
−
λ
,
c
l
+
λ
]
, if
w
l
=
0
c
l
+
w
l
⋅
a
l
−
λ
, if
w
l
<
0
\cfrac{\partial L}{\partial w_l}=\begin{cases} & c_l+w_l\cdot a_l+\lambda\text{, if } w_l>0 \\ &[c_l-\lambda,c_l+\lambda] \text{, if } w_l=0 \\ &c_l+w_l\cdot a_l-\lambda \text{, if } w_l<0 \end{cases}
∂wl∂L=⎩⎪⎨⎪⎧cl+wl⋅al+λ, if wl>0[cl−λ,cl+λ], if wl=0cl+wl⋅al−λ, if wl<0
对于第二种情况,
w
l
=
0
w_l=0
wl=0的时候,
w
l
⋅
a
l
=
0
w_l\cdot a_l=0
wl⋅al=0,
∂
∣
w
l
∣
∂
w
l
\cfrac{\partial |w_l|}{\partial w_l}
∂wl∂∣wl∣的范围是[-1,1]。
然后设置偏导
∂
L
∂
w
l
=
0
\cfrac{\partial L}{\partial w_l}=0
∂wl∂L=0来求极值。也分上面三种情况进行讨论。
- 先看
w
l
>
0
w_l>0
wl>0的情况:
c l + w l ⋅ a l + λ = 0 w l = − c l − λ a l > 0 c_l+w_l\cdot a_l+\lambda=0\\ w_l=\cfrac{-c_l-\lambda}{a_l}>0 cl+wl⋅al+λ=0wl=al−cl−λ>0
这里用到了上面 a l > 0 a_l>0 al>0的结论,分子也要大于0:
− c l − λ > 0 → c l < − λ -c_l-\lambda>0\rightarrow c_l<-\lambda −cl−λ>0→cl<−λ - 在看
w
l
<
0
w_l<0
wl<0的情况
c l + w l ⋅ a l − λ = 0 w l = − c l + λ a l < 0 c_l+w_l\cdot a_l-\lambda=0\\ w_l=\cfrac{-c_l+\lambda}{a_l}<0 cl+wl⋅al−λ=0wl=al−cl+λ<0
这里用到了上面 a l > 0 a_l>0 al>0的结论,分子也要小于0:
− c l + λ < 0 → c l > λ -c_l+\lambda<0\rightarrow c_l>\lambda −cl+λ<0→cl>λ - 在看
w
l
=
0
w_l=0
wl=0的情况
− λ ≤ c l ≤ λ , w l = 0 -\lambda\le c_l\le\lambda,w_l=0 −λ≤cl≤λ,wl=0
最后的结果整理如下,对于
w
^
l
\hat w_l
w^l的更新也分三种情况:
w
^
l
=
{
−
c
l
−
λ
a
l
, if
c
l
<
−
λ
0
, if
−
λ
≤
c
l
≤
λ
−
c
l
+
λ
a
l
, if
c
l
>
λ
(1)
\hat w_l=\begin{cases} & \cfrac{-c_l-\lambda}{a_l}\text{, if } c_l<-\lambda \\ &0 \text{, if } -\lambda\le c_l\le\lambda \\ &\cfrac{-c_l+\lambda}{a_l} \text{, if } c_l>\lambda \end{cases}\tag1
w^l=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧al−cl−λ, if cl<−λ0, if −λ≤cl≤λal−cl+λ, if cl>λ(1)
从上面可以看到当特征更新为0的条件是什么,这也是Lasso加L1正则会出现稀疏特征的原因。
整个LASSO算法可以描述为
循环进行更新直至收敛
选择某个维度l进行计算
按照公式1进行更新
后记
其他解决Lasso的算法:
Classically: Least angle regression(LARS)[ Efron et al.'04]
Then: Coordinate descent algorithm [ Fu '98, Friedman, Hastie,& Tibshirani’08](本节的算法)
Now: Parallel CD(e.g., Shotgun,[ Bradley et al.'11])
Other parallel learning approaches for linear models:
Parallel stochastic gradient descent(SGD)(e.g, Hogwild![ Niu et al.'11])
Parallel independent solutions then averaging [ Zhang et al.'12]
Alternating directions method of multipliers(ADMM)[ Boyd et al.'11]