1. 引言:当你的模型开始“耍脾气”时
做机器学习的朋友们,尤其是刚入门的朋友,肯定都遇到过这种情况:你精心准备了一份数据,用线性回归模型一跑,训练集上的预测准得不得了,简直像开了天眼。结果呢,一拿到测试集上,预测结果就变得一塌糊涂,误差大得离谱。这种感觉,就像你背熟了题库去考试,结果老师出的全是新题,直接傻眼。这就是典型的过拟合——模型把训练数据里的“噪音”和偶然规律都当成了真理,学得太“死板”了,导致泛化能力极差。
那怎么办呢?一个很自然的想法是,给模型“立点规矩”,别让它太放飞自我。这个“规矩”在机器学习里就叫正则化。今天我们要聊的岭回归和LASSO回归,就是线性回归家族里两位最著名的“纪律委员”。它们俩的核心任务,就是通过给模型增加一个“惩罚项”,来防止模型学得太复杂,从而提升它在未知数据上的表现。
听起来有点抽象?我给你打个比方。想象一下,你要用一堆零件(特征)去预测一个结果。普通线性回归就像个“收集癖”,它觉得每个零件都有用,不管三七二十一全给用上,哪怕有些零件其实是生锈的、没用的。结果就是模型结构臃肿,还容易被没用的零件带偏。而岭回归和LASSO回归则像两个风格不同的“整理大师”。岭回归这位大师会说:“所有零件都可以用,但你们都得给我安分点,别太突出。” 它会把所有零件的“影响力”(系数)都往小了压,但不会彻底扔掉任何一个。而LASSO回归这位大师更“狠”一点,它会直接审视每一个零件,把那些看起来没啥用的、重复的,直接扔进垃圾桶(系数压缩为0),只留下最核心的几个。
接下来的内容,我会带你从最底层的数学原理开始,掰开揉碎了讲清楚这两位“大师”的工作方式到底有什么不同。然后,我们会用真实的代码和数据集,手把手让你看到它们在不同场景下的实际表现。最后,我会结合我这些年踩过的坑,告诉你什么时候该请岭大师,什么时候该请LASSO大师。放心,就算你数学底子一般,我也能用大白话和实际例子让你彻底搞懂。
2. 核心原理:L2与L1,两种截然不同的“惩罚”
要理解岭回归和LASSO,我们必须先搞懂它们施加的“惩罚”到底是什么。这个惩罚,就体现在损失函数里那个额外的项上。
2.1 岭回归:温和的“平均主义者”
我们先回顾一下普通线性回归在干嘛。它的目标是最小化残差平方和,也就是预测值和真实值之间差距的平方和。公式长这样: Loss = Σ(y_i - ŷ_i)² 其中 ŷ_i 是模型预测值。
岭回归觉得这样不行,太惯着模型了。于是它在损失函数后面加了个“尾巴”,变成了: Loss_ridge = Σ(y_i - ŷ_i)² + λ * Σ(β_j²)
看到后面多出来的 λ * Σ(β_j²) 了吗?这就是L2正则化项。这里面的 β_j 就是我们模型里每个特征对应的系数(权重),λ 是一个大于0的超参数,你可以把它理解为“惩罚力度”的调节旋钮。
这个惩罚项到底意味着什么? 它的意思是:模型你可以去拟合数据,但是你不能让任何一个特征的系数 β_j 变得特别大。因为 Σ(β_j²) 求的是所有系数平方的和,只要有一个系数试图变得很大,它的平方就会变得巨大,从而导致整个损失函数值飙升。模型为了最小化总的损失,就不得不“妥协”,把所有系数都控制在一个相对较小的范围内。
我实测下来的感受是,岭回归的这种惩罚非常“公平”和“温和”。它不会彻底干掉任何一个特征,而是让大家“有福同享,有难同当”,一起被缩小。这对于处理多重共线性问题特别有效。什么是多重共线性?就是你的特征之间彼此相关性很强,比如用“房间数量”和“房屋面积”来预测房价,这俩特征本身就有很强的关联。普通线性回归在这种情况下,系数的估计会非常不稳定,数据有一点点扰动,系数值就可能发生剧烈变化。而岭回归通过压制系数的大小,极大地增强了模型的稳定性。
2.2 LASSO回归:犀利的“特征选择器”
LASSO回归走了另一条路。它在损失函数后面加的“尾巴”是: Loss_lasso = Σ(y_i - ŷ_i)² + λ * Σ|β_j|
注意,这里惩罚项是 Σ|β_j|,也就是所有系数绝对值的和。这被称为L1正则化项。
别看只是从平方和变成了绝对值和,这带来的效果是天差地别的。绝对值函数在零点处有一个“尖角”,这个数学特性导致了一个神奇的现象:当惩罚力度 λ 足够大时,LASSO回归会直接把一部分不重要的特征的系数压缩到精确的零。
这意味着什么?意味着LASSO回归在训练模型的同时,自动帮你完成了特征选择!它像一个严厉的裁判,直接对那些贡献不大的特征亮出红牌:“你,出去!” 最终得到的模型是一个稀疏模型,只保留了最关键的一部分特征。
这个特性在实际项目中简直太有用了。尤其是当你面对成百上千个特征,而其中大部分可能是冗余或无关的时候。用LASSO跑一遍,你就能得到一个既简洁又易

9473

被折叠的 条评论
为什么被折叠?



