岭回归和Lasso回归

偏差和方差

机器学习算法针对特定数据所训练出来的模型并非是十全十美的,再加上数据本身的复杂性,误差不可避免。说到误差,就必须考虑其来源:模型误差 = 偏差(Bias)+ 方差(Variance)+ 数据本身的误差。其中数据本身的误差,可能由于记录过程中的一些不确定性因素等导致,这个我们无法避免,能做的只有不断优化模型参数来权衡偏差和方差,使得模型误差尽可能降到最低。
偏差:导致偏差的原因有多种,其中一个就是针对非线性问题使用线性方法求解,当模型欠拟合时,就会出现较大的偏差
方差:产生高方差的原因通常是由于模型过于复杂,即模型过拟合时,会出现较大的方差
通常情况下,我们降低了偏差就会相应地使得方差提高,降低了方差就会相应地提高了偏差,所以在机器学习的模型中,我们总是希望找到一组最优的参数,这些参数能权衡模型的偏差和方差,使得模型性能达到最优。我在知乎上找到这样一张图方便各位理解。
在这里插入图片描述


岭回归

针对高方差,即过拟合的模型,解决办法之一就是对模型进行正则化:限制参数大小(由于本篇博客所提到的岭回归和Lasso都是正则化的特征选择方法,所以对于其他解决过拟合的方法不多赘述)当线性回归过拟合时,权重系数wj就会非常的大,岭回归就是要解决这样的问题。岭回归(Ridge Regression)可以理解为在线性回归的损失函数的基础上,加,入一个L2正则项,来限制W不要过大。其中λ>0,通过确定λ的值可以使得模型在偏差和方差之间达到平衡,随着λ的增大,模型的方差减小,偏差增大。
在这里插入图片描述
我们可以像线性回归一样,利用最小二乘法求解岭回归模型的参数,对W求导,令倒数等于0,可求得W的解析解,其中I为m x m的单位矩阵,所以也可以说岭回归就是在矩阵X^TX上加一个λI使得矩阵非奇异,进而能对XTX+λI求逆:
在这里插入图片描述
为了可视化,我们还引用上篇博客的测试用例,使用Pipeline封装多项式特征,归一化,线性回归方法,为了说明问题并将PolynomialFeatures的参数degree调整到40,此时模型很明显得出现了过拟合,产生了高方差:

poly_reg = Pipeline([
        ("poly", PolynomialFeatures(degree=40)),
        ("std_scaler", StandardScaler()),
        ("lin_reg", LinearRegression())
    ])

在这里插入图片描述
使用sklearn封装的岭回归方法进行测试,详情请见

poly_reg = Pipeline([
        ("poly", PolynomialFeatures(degree=40)),
        ("std_scaler", StandardScaler()),
        ("ridge_reg", Ridge(alpha=0.01))
    ])

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对比图中红线可以看到,λ=0.01时,虽然多项式特征的degree=40,相较于直接使用线性回归,岭回归已经很好的解决高方差的问题,但λ不能过大,当λ=1000时明显的出现了欠拟合,相应的模型的偏差也增大了,我们的目的就是要权衡偏差和方差,使模型达到最优。


Lasso

Lasso回归和岭回归类似,不同的是,Lasso可以理解为在线性回归基础上加入一个L1正则项,同样来限制W不要过大。其中λ>0,通过确定λ的值可以使得模型在偏差和方差之间达到平衡,随着λ的增大,模型的方差减小,偏差增大。
在这里插入图片描述
Lasso趋向于使得一部分w值变为0,所以可以作为特征选择用,因为这里的L1正则项并不是处处可导的,所以并不能直接使用基于梯度的方法优化损失函数,若要从底层实现,可以使用拟牛顿法的BFGS算法,逐步向前回归,我这里直接用sklearn封装的Lasso,请参见
在这里插入图片描述
任然使用Pipeline封装

poly_reg = Pipeline([
        ("poly", PolynomialFeatures(degree=40)),
        ("std_scaler", StandardScaler()),
        ("ridge_reg", Lasso(alpha=0.01))
    ])

在这里插入图片描述
在这里插入图片描述
可以看到,Lasso的收敛速度要比岭回归要快的,当λ=10的时候红线就已经近乎和坐标轴平行了,产生了很大的偏差。


总结

Lasso由于使用L1正则项,所以具有一定的特征选择功能,因为L1正则倾向于产生稀疏稀疏,它可以将一些“对标签没有用处”的特征对应的系数压缩为0,进而将对结果有较大影响的特征突显出来,而岭回归中L2正则项不具备这个功能,它只会讲一些无关特征的系数降到一个较小的值,但不会降为0。并且L2正则有解析解,L1没有,所以还有一种对岭回归和Lasso折中的方法------弹性网络(Elastic Net)
在这里插入图片描述

  • 22
    点赞
  • 169
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值