Scikit-Learn线性回归五:岭回归与Lasso回归
- 1、误差与模型复杂度
- 2、正则化
- 3、Scikit-Learn岭(Ridge)回归
- 4、Scikit-Learn Lasso回归
1、误差与模型复杂度
在第二篇文章 Scikit-Learn线性回归(二) 中,我们已经给出了过拟合与模型泛化的概念并使用案例进行了验证
在机器学习中,我们通常会将数据划分为两部分:一部分用来构建模型,然后另一部分用来检验模型的效果。构建模型所用的数据集称为训练集,而验证模型的数据集称为测试集。模型在训练集上的误差称为训练误差(或经验误差);在测试集上的误差称为泛化误差
泛化误差反映了模型对未知数据的预测能力,而我们采用最多的也就是通过泛化误差来评价模型的泛化能力。泛化误差刻画了模型算法的经验风险与期望风险之间的偏差和收敛速度
过拟合是指模型在训练集中表现良好,而在测试集中表现很差,即泛化误差大于经验误差,说明拟合过度,模型泛化能力降低,只能够适用于训练集,通用性不强;欠拟合则指的是模型在训练集中的表现就很差,即经验误差很大
如图所示,图一表示过拟合,可以看到拟合曲线完美的经过了每一个点,模型非常复杂,这种情况下,经验误差极小,但是预测值的方差(误差平方和)会很大。图二表示欠拟合,此时模型过于简单,在训练集上的误差就很大。图三则表示一个理想的拟合模型
欠拟合出现的原因是模型复杂度太低。可能是回归模型自变量(特征)较少或模型不合适。针对欠拟合,解决方案是增大模型复杂度,可以增加自变量(特征)或改变模型。例如,将一阶多元回归模型升级为多项式回归模型
过拟合出现的原因则是模型复杂度太高或训练集太少。可能是自变量(特征)过多或训练集数据量太少等。针对过拟合,除了增加训练集数据量外,还有多种优化算法可以处理。例如,正则化
一般情况下,误差与模型复杂度之间存在如下关系:
如上图所示,横坐标表示模型的复杂度,纵坐标表示模型的误差。其中,偏差(误差)表示真实值与预测值之间的差值;方差表示回归系数的方差,即误差平方(损失函数/误差平方和为所有样本的偏差平方之和)
从图中可得,随着模型复杂度的提升,方差会不断增大,偏差会逐渐减小,而泛化误差会受偏差和方差的影响,我们的目标是找到泛化误差的最小值,这可以通过平衡方差与偏差来实现
2、正则化
未完待续…
3、Scikit-Learn岭(Ridge)回归
4、Scikit-Learn Lasso回归
参考文章:
https://scikit-learn.org.cn/view/84.html#1.5.7%20%E6%95%B0%E5%AD%A6%E5%85%AC%E5%BC%8F
https://cloud.tencent.com/developer/article/1556213
https://blog.csdn.net/weixin_46302487/article/details/105637818
https://www.cnblogs.com/wang_yb/p/17910389.html
https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Ridge.html
https://blog.csdn.net/qq_45797116/article/details/112488498