推导
坐标轴下降法的思路就是每次选择一个维度,固定其他维度,然后使选择的这个维度达到最优,然后反复的这么做直到收敛。
比如有一个函数
g
(
x
1
,
x
2
,
.
.
.
,
x
n
)
g(x_1, x_2, ..., x_n)
g(x1,x2,...,xn),我们想用坐标轴下降的对其进行优化。
那么就有:
第一步,先固定一个维度,比如说固定
x
2
x_2
x2,此时除了
x
2
x_2
x2以外,其它的数字都是常量。
第二步,我们对
x
2
x_2
x2求导,然后令导数等于零求出一个极大值。
第三步,如果没有收敛就重复1,2步,否则收敛结束算法。
接下来我们使用坐标轴下降法来求解LASSO。
设有n个样本
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
n
,
y
n
)
}
\{(x_1, y_1), (x_2, y_2), ..., (x_n, y_n)\}
{(x1,y1),(x2,y2),...,(xn,yn)},我们使用简单线性模型+L1正则。
其中每个样本
x
i
x_i
xi有m个特征。
得到
L
(
W
,
b
)
=
∑
i
=
1
n
[
(
∑
j
=
1
m
x
i
j
w
j
+
b
)
−
y
i
]
2
+
λ
∑
i
=
1
m
∣
w
i
∣
L(W,b) = \sum_{i = 1}^n[(\sum_{j = 1}^mx_{ij}w_j + b) - y_i]^2 + \lambda \sum_{i = 1}^m|w_i|
L(W,b)=i=1∑n[(j=1∑mxijwj+b)−yi]2+λi=1∑m∣wi∣
其中w为权重,b为偏置,
λ
\lambda
λ为惩罚系数。
我们首先固定某个维度
w
l
w_l
wl,然后进行求导
d
L
(
W
,
b
)
d
w
l
=
2
∑
i
=
1
n
[
(
∑
j
=
1
m
x
i
j
w
j
+
b
)
−
y
i
]
x
i
l
+
d
(
λ
∑
i
=
1
m
∣
w
i
∣
)
d
w
l
\frac{dL(W,b) }{dw_l}=2\sum_{i = 1}^n[(\sum_{j = 1}^mx_{ij}w_j + b) - y_i]x_{il} + \frac{d(\lambda \sum_{i = 1}^m|w_i|)}{dw_l}
dwldL(W,b)=2i=1∑n[(j=1∑mxijwj+b)−yi]xil+dwld(λ∑i=1m∣wi∣)
我们对式子进行整理。把所有的
w
l
w_l
wl 项进行合并。
d
L
(
W
,
b
)
d
w
l
=
2
∑
i
=
1
n
[
(
∑
j
≠
l
m
x
i
j
w
j
+
b
)
+
x
i
l
w
l
−
y
i
]
x
i
l
+
d
(
λ
∑
i
=
1
m
∣
w
i
∣
)
d
w
l
\frac{dL(W,b) }{dw_l}=2\sum_{i = 1}^n[(\sum_{j \ne l}^mx_{ij}w_j + b)+x_{il}w_l - y_i]x_{il} + \frac{d(\lambda \sum_{i = 1}^m|w_i|)}{dw_l}
dwldL(W,b)=2i=1∑n[(j=l∑mxijwj+b)+xilwl−yi]xil+dwld(λ∑i=1m∣wi∣)
进一步合并
d
L
(
W
,
b
)
d
w
l
=
2
∑
i
=
1
n
[
(
∑
j
≠
l
m
x
i
j
w
j
+
b
)
−
y
i
]
+
2
w
l
∑
i
=
1
n
x
i
l
2
+
d
(
λ
∑
i
=
1
m
∣
w
i
∣
)
d
w
l
\frac{dL(W,b) }{dw_l}=2\sum_{i = 1}^n[(\sum_{j \ne l}^mx_{ij}w_j + b) - y_i] + 2w_l\sum_{i = 1}^nx_{il}^2 + \frac{d(\lambda \sum_{i = 1}^m|w_i|)}{dw_l}
dwldL(W,b)=2i=1∑n[(j=l∑mxijwj+b)−yi]+2wli=1∑nxil2+dwld(λ∑i=1m∣wi∣)
然后可以发现,前两项中,有两个常数,我们设
2
∑
i
=
1
n
[
(
∑
j
≠
l
m
x
i
j
w
j
+
b
)
−
y
i
]
=
a
2
∑
i
=
1
n
x
i
l
2
=
b
2\sum_{i = 1}^n[(\sum_{j \ne l}^mx_{ij}w_j + b) - y_i]=a\\ 2\sum_{i = 1}^nx_{il}^2=b
2i=1∑n[(j=l∑mxijwj+b)−yi]=a2i=1∑nxil2=b
就有
d
L
(
W
,
b
)
d
w
l
=
a
+
w
l
b
+
d
(
λ
∑
i
=
1
m
∣
w
i
∣
)
d
w
l
\frac{dL(W,b) }{dw_l}=a + w_lb + \frac{d(\lambda \sum_{i = 1}^m|w_i|)}{dw_l}
dwldL(W,b)=a+wlb+dwld(λ∑i=1m∣wi∣)
此时就需要分情况讨论
- 当
w
l
>
0
w_l > 0
wl>0时
d L ( W , b ) d w l = a + w l b + λ \frac{dL(W,b) }{dw_l}=a+w_lb+\lambda dwldL(W,b)=a+wlb+λ - 当
w
l
<
0
w_l < 0
wl<0
d L ( W , b ) d w l = a + w l b − λ \frac{dL(W,b) }{dw_l}=a + w_lb-\lambda dwldL(W,b)=a+wlb−λ - 当
w
l
=
0
w_l = 0
wl=0,此时不可导,我们认为结果应该介于上两者之间
a + w l b − λ ≤ d L ( W , b ) d w l ≤ a + w l b + λ a + w_lb-\lambda \leq \frac{dL(W,b) }{dw_l}\leq a+w_lb+\lambda a+wlb−λ≤dwldL(W,b)≤a+wlb+λ
我们令
d
L
(
W
,
b
)
d
w
l
=
0
\frac{dL(W,b) }{dw_l}=0
dwldL(W,b)=0得
w
l
=
−
a
−
d
(
λ
∑
i
=
1
m
∣
w
i
∣
)
d
w
l
b
w_l=\frac{-a-\frac{d(\lambda \sum_{i = 1}^m|w_i|)}{dw_l}}{b}
wl=b−a−dwld(λ∑i=1m∣wi∣)
-
当 w l > 0 w_l>0 wl>0此时 − a − λ b > 0 \frac{-a-\lambda}{b} >0 b−a−λ>0,由于 b > 0 b >0 b>0所以此时 λ + a < 0 \lambda+ a<0 λ+a<0
有 w l = − a − λ b w_l=\frac{-a-\lambda}{b} wl=b−a−λ -
当 w l < 0 w_l<0 wl<0此时,由于 b > 0 b >0 b>0所以此时 a − λ > 0 a - \lambda>0 a−λ>0
有 w l = − a + λ b w_l=\frac{-a+\lambda}{b} wl=b−a+λ -
当 w l = 0 w_l=0 wl=0时,此时 − λ ≤ a ≤ λ -\lambda \leq a\leq \lambda −λ≤a≤λ
w l = 0 w_l=0 wl=0
然后就可以更新
w
l
w_l
wl了,反复的迭代下去直到收敛。
从上式也可以看出,当a落到了某个区间时
w
l
w_l
wl就会被赋值为0,从而达到了稀疏的效果。