【机器学习】通透!L1和L2核心区别 !!


【机器学习】通透!L1和L2核心区别 !!

仅用于站内搜索,没有排版格式,具体信息请跳转上方微信公众号内链接

当我们用模型(比如线性回归)去拟合数据时,如果特征太多、数据太少,模型可能会过拟合。
L1和L2正则化就是在模型训练时“加个惩罚”,防止模型学得太复杂。
名称
比喻
本质
L1正则化
像“懒人整理行李”:宁愿丢掉不重要的东西
让一些系数变成0(特征选择)
L2正则化
像“压缩行李”:每样东西都压缩点
让所有系数都变小(防止过拟合)
L1会让一些特征的系数变成0→达到选择特征的效果。
L2会让所有特征的系数都缩小,但一般不会变成0→所有特征都参与建模,但影响力不同。
ElasticNet就是结合了L1和L2的“混合正则化”。
它既有L1的特征选择能力,又有L2的稳定性,特别适合下面这种情况:
高维数据(特征比样本还多)+特征之间高度相关(多重共线性)
我们先从普通的线性回归说起:
最小化损失:
加入L2惩罚项(平方和):
优点:解决共线性,解有闭式解,数值稳定。
缺点:不能做特征选择(系数不会为0)。
加入L1惩罚项(绝对值和):
优点:可将某些系数压成0,实现变量选择。
缺点:当特征数>>样本数或多重共线性严重时不稳定。
ElasticNet把两种正则化结合起来:
也常写为如下形式(α是调节比例):
当,就是纯Lasso;
当,就是纯Ridge;
其他情况则是弹性网络(ElasticNet)。
L2正则化仍可解,但不能变量选择。
L1会随机选取其中一部分非零变量→不稳定。
ElasticNet在这种场景下能选多个共线特征,而非像L1那样“二选一”。
Ridge(L2)会平衡多个高度相关的变量,使它们的系数都变小。
Lasso(L1)会偏向选择其中一个→结果不稳定。
ElasticNet会成组选择相关特征(groupingeffect),更稳定更可靠。
过拟合(Overfitting):模型在训练集上表现很好,但在新数据(测试集)上表现很差,说明它“记住”了训练集而不是“学到”规律。
泛化能力:模型对未见数据的预测能力。越强越好。
通常由于下面几种原因:
模型太复杂(比如参数太多、自由度太高)
特征太多,样本太少(高维问题)
特征相关性强(多重共线性)
正则项=给模型加一个“复杂度惩罚”,限制参数自由度,从而提升泛化能力。
我们来看两种正则化的作用:
惩罚项:
意思:不让参数变得太大,每个系数都要“温和”。
作用:防止模型参数无限增长(过拟合),尤其在特征多、共线时能稳定解。
泛化能力:平滑泛化,不裁剪变量。
惩罚项:
意思:强制让某些系数变成0,相当于删除无关特征。
作用:自动变量选择,提高模型解释性。
泛化能力:适合稀疏场景,但在特征高度相关时不稳定。
ElasticNet的惩罚:
L2部分:让模型更稳定(缓解共线性)
L1部分:让模型更稀疏(自动特征选择)
综合效果:提高泛化能力,尤其适用于高维共线性问题。
这个部分偏数学,但很关键,尤其有同学想深入理解算法实现(比如坐标下降、子梯度法等)。
光滑函数:梯度是连续的,比如L2:
非光滑函数:某点处不可导,比如L1:在处不可导
为什么在处没有导数,只有次梯度(subgradient)。
可视化来看,在原点处是个尖角,而是平滑曲线。
L1惩罚使得目标函数不再是光滑凸函数,而是非光滑凸函数
不能用标准的梯度下降(因为梯度不存在于某些点)
需要用专门的优化算法,如:
坐标下降
LARS-Lasso
子梯度下降法
近端梯度法
是平滑函数,容易求导→优化路径稳定
常用于大规模机器学习中的batch或SGD(随机梯度下降)
特性
L1正则(Lasso)
L2正则(Ridge)
ElasticNet
惩罚函数形式
$\sum_j
\beta_j
$
导数性质
非光滑(不可导于0点)
光滑(可导)
部分光滑
优化难度



是否能稀疏建模

不能
部分能
是否能缓解共线性
不稳定

效果更佳
泛化能力



图像1:Lasso正则路径图
横轴:,表示正则强度从强(左)到弱(右)
纵轴:每个特征的系数数值
每一条曲线:一个特征系数在正则化路径上的变化
这里想要表达的是:
当较大时,Lasso将大多数系数压缩为0,只保留最有影响力的几个变量。
系数逐渐被引入模型:从0跳跃到非零(稀疏性特性)
说明:Lasso具有变量选择能力,有助于解释模型,尤其在高维数据中很实用。
图像2:Lasso/Ridge/ElasticNet系数对比条形图(前20特征)
横轴是前20个特征编号(F1~F20)
每一组颜色代表一种模型估计的系数
蓝色:真实系数
橙色:Lasso
绿色:Ridge
紫色:ElasticNet
咱们可以直观看出哪个模型更接近真实参数,可以看到:
Lasso由于L1正则化,许多系数变成0,便于解释模型,效果稀疏明显。
Ridge不会将系数压缩为0,但分布更加平滑,有助于处理多重共线性。
ElasticNet在两者之间,既可以稀疏又能避免某些变量完全丢失,兼顾平稳性与解释性。
Lasso与ElasticNet对于稀疏数据建模尤其有效,Ridge更适合非稀疏但有共线性的场景。
图像3:三种模型的预测误差对比(MSE越低越好)
展示了Lasso、Ridge和ElasticNet在测试集上的预测误差(均方误差MSE)
柱状图顶部显示了具体的误差值,便于对比
这样,我们便于判断:
预测误差衡量模型的泛化能力(过拟合or欠拟合)
Ridge模型在本例中表现最稳健,因其避免过度稀疏,保留更多信息
Lasso更倾向于“选择少数变量”,有时在高维稀疏情况下更有优势
ElasticNet在两者之间,通常能在多重共线性和稀疏之间找到平衡,表现也很稳健
图四:ElasticNet中l1_ratio从0到1的变化对稀疏程度和系数的影响(热力图或线图)
横轴(x-axis):ElasticNet中的l1_ratio,范围从0到1。
l1_ratio=0:完全是Ridge(只用L2正则)
l1_ratio=1:完全是Lasso(只用L1正则)
之间的值表示L1和L2的加权组合
纵轴(y-axis):模型最终拟合出的系数中,非零系数的数量
即模型保留了多少个特征(变量)
当l1_ratio趋近于1,即Lasso权重增大,模型会更“激进”地将不重要的特征系数压缩为0。
越靠近Lasso,模型越稀疏,保留的变量越少,提升可解释性。
Ridge会收缩系数,但通常不会将它们变成0,所以在l1_ratio=0时,非零系数数量≈特征总数。
ElasticNet的强大之处在于:可调控地折中稀疏性与稳定性,l1_ratio提供了从“全选变量”到“严选变量”的连续控制器。


文章作者: ZejunCao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ZejunCao !
  目录