如果对L1和L2正则化,最小二乘法不了解的,可以先看我写的下面两篇
线性回归很简单,用线性函数拟合数据,用 mean square error (mse) 计算损失(cost),然后用梯度下降法找到一组使 mse 最小的权重。
lasso 回归和岭回归(ridge regression)其实就是在标准线性回归的基础上分别加入 L1 和 L2 正则化(regularization)。L1正则化和L2正则化可以看做是 损失函数的惩罚项 。
本文的重点是解释为什么 L1 正则化会比 L2 正则化让线性回归的权重更加稀疏,即使得线性回归中很多权重为 0,而不是接近 0。或者说,为什么 L1 正则化(lasso)可以进行 feature selection,而 L2 正则化(ridge)不行
线性回归(linear regression),就是用线性函数 f ( x ) = w ⊤ x + b f(x)=w^⊤x+b f(x)=w⊤x+b去拟合一组数据
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) 并使得损失 J = 1 n ∑ i = 1 n ( f ( x i ) − y i ) 2 J=\frac{1}{n}\sum^{n}_{i=1}(f(x_i)−y_i)^2 J=n1∑i=1n(f(xi)−yi)2 最小。线性回归的目标就是找到一组 ( w ∗ , b ∗ ) (w^∗,b^∗) (w∗,b∗),使得损失 J 最小。
线性回归的拟合函数(或 hypothesis)为:
cost function (mse) 为:
实战的相关的例子可以看这个连接
[机器学习-原理及实现篇]线性回归-最小二乘法推导与实践代码
[机器学习-回归算法]Sklearn之线性回归实战
Lasso 回归和岭回归(ridge regression)都是在标准线性回归的基础上修改 cost function,即修改式(2),其它地方不变。
Lasso 的全称为 least absolute shrinkage and selection operator,又译最小绝对值收敛和选择算子、套索算法。
Lasso 回归对式(2)加入 L1 正则化,其 cost function 如下:
岭回归对式(2)加入 L2 正则化,其 cost function 如下:
加入 L1 或 L2 正则化,让权值尽可能小,最后构造一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。
可以设想一下对于一个线性回归方程,若参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够小,数据偏移得多一点也不会对结果造成什幺影响,一种流行的说法是『抗扰动能力强』。具体参见博客 。浅议过拟合现象(overfitting)以及正则化技术原理
式(5)和(6)可以理解为,在 w 限制的取值范围内,找一个点 w^ 使得 mean square error 最小,t 可以理解为正则化的力度,式(5)和(6)中的 t 越小,就意味着式(3)和(4)中 λ 越大,正则化的力度越大 。
以 x∈R2 为例,式(5)中对 w 的限制空间是方形,而式(6)中对 w 的限制空间是圆形。因为 lasso 对 w 的限制空间是有棱角的,因此
的解更容易切在 w 的某一个维为 0 的点。如下图所示:
Fig. 1 中的坐标系表示 w 的两维,一圈又一圈的椭圆表示函数
的等高线,椭圆越往外,J 的值越大, w ∗ w^∗ w∗ 表示使得损失 J 取得全局最优的值。使用 Gradient descent,也就是让 w 向着 w∗ 的位置走。如果没有 L1 或者 L2 正则化约束, w ∗ w^∗ w∗ 是可以被取到的。但是,由于有了约束 ∥ w ∥ 1 ≤ t ∥w∥_1≤t ∥w∥1≤t 或 ∥ w ∥ 2 2 ≤ t ∥w∥^2_2≤t ∥w∥22≤t,w 的取值只能限制在 Fig. 1 所示的灰色方形和圆形区域。当然调整 t 的值,我么能够扩大这两个区域。
等高线从低到高第一次和 w 的取值范围相切的点,即是 lasso 和 ridge 回归想要找的权重 w ^ \hat{w} w^。
lasso 限制了 w 的取值范围为有棱角的方形,而 ridge 限制了 w 的取值范围为圆形,等高线和方形区域的切点更有可能在坐标轴上,而等高线和圆形区域的切点在坐标轴上的概率很小。这就是为什么 lasso(L1 正则化)更容易使得部分权重取 0,使权重变稀疏;而 ridge(L2 正则化)只能使权重接近 0,很少等于 0。
正是由于 lasso 容易使得部分权重取 0,所以可以用其做 feature selection,lasso 的名字就指出了它是一个 selection operator。权重为 0 的 feature 对回归问题没有贡献,直接去掉权重为 0 的 feature,模型的输出值不变。
对于 ridge regression 进行 feature selection,你说它完全不可以吧也不是,weight 趋近于 0 的 feature 不要了不也可以,但是对模型的效果还是有损伤的,这个前提还得是 feature 进行了归一化。\
[1] https://flashgene.com/archives/11824.html