4. 线性模型家族:从回归到分类的进化之路
线性模型,说白了就是机器学习世界里最朴素的武器。你想想看,很多复杂算法本质上都是在它基础上加料。今天咱们就把线性回归、逻辑回归、正则化这三兄弟一次性讲透。
4.1 线性回归:最小二乘法与梯度下降
线性回归解决什么问题?就是找一条直线,让所有数据点到这条线的距离之和最小。我刚开始做预测模型时,第一反应就是拿Excel画个散点图,然后加趋势线——嗯,那就是最小二乘法。
4.1.1 最小二乘法
最小二乘法的核心思想特别直观:让预测值和真实值的平方误差之和最小。数学上就是求这个损失函数的最小值:
J(w) = Σ(yi - w·xi)²
为什么用平方而不是绝对值?我个人习惯用平方,因为它在数学上可导,求导后能得到解析解。直接上公式:
w = (XᵀX)⁻¹Xᵀy
我在项目中遇到过一个问题:当特征数量超过样本数量时,XᵀX 这个矩阵不可逆。这时候最小二乘法就失效了。怎么办?后面讲的正则化就是解决方案之一。
4.1.2 梯度下降
当数据量大了,或者特征多了,最小二乘法的矩阵求逆就变得很慢。这时候梯度下降就派上用场了。
梯度下降的思路特别像下山:你站在山顶,想最快到山脚,那就每次都沿着最陡的方向走一步。数学上就是沿着负梯度方向更新参数:
w = w - α · ∇J(w)
其中 α 是学习率,∇J(w) 是梯度。这里有个坑——我曾经调参时把学习率设得太大,结果损失函数直接发散,数值变成了NaN。嗯,后来我学乖了,先用0.01试试,不行再调小。
三种常见的梯度下降变体:
| 方法 | 每次更新用多少数据 | 特点 |
|---|---|---|
| 批量梯度下降 | 全部样本 | 稳定但慢,适合小数据集 |
| 随机梯度下降 | 1个样本 | 快但震荡,适合大数据 |
| 小批量梯度下降 | 32/64/128个样本 | 折中方案,工程中最常用 |
4.2 逻辑回归:从回归到分类的跃迁
逻辑回归名字里带「回归」,干的却是分类的活。为什么会这样?因为它在线性回归外面套了一层Sigmoid函数,把输出压缩到0到1之间,变成了概率。
4.2.1 Sigmoid函数
Sigmoid函数长这样:
σ(z) = 1 / (1 + e⁻ᶻ)
它的输出范围是(0, 1),z=0时输出0.5。你想想看,这不就是天然的概率吗?
我记得第一次用逻辑回归做二分类时,直接设阈值0.5:大于0.5判为正类,小于判为负类。后来发现,有些场景下阈值需要调整。比如欺诈检测,宁可错杀一千不可放过一个,阈值就得设低一点。
4.2.2 交叉熵损失
为什么逻辑回归不用均方误差?因为用均方误差的话,损失函数是非凸的,梯度下降容易陷入局部最优。交叉熵损失是凸函数,优化起来舒服多了。
交叉熵损失公式:
J(w) = -[y·log(ŷ) + (1-y)·log(1-ŷ)]
这个公式看着复杂,其实道理很简单:真实标签是1时,我们希望预测值ŷ尽量接近1;真实标签是0时,希望ŷ尽量接近0。log函数会放大误差,让模型更敏感。
4.3 正则化:L1与L2
正则化是干嘛的?说白了就是给损失函数加个惩罚项,防止模型过拟合。我刚开始做模型时,总想把训练集上的误差降到0,结果测试集上一塌糊涂——这就是过拟合的典型症状。
4.3.1 L2正则化(岭回归)
L2正则化在损失函数后面加一个权重平方和:
J(w) = 原始损失 + λ·Σwⱼ²
λ是正则化强度,越大惩罚越狠。L2的效果是让权重均匀地变小,但不会变成0。我在做房价预测时,特征有几十个,用L2正则化后,模型泛化能力明显提升。
4.3.2 L1正则化(Lasso)
L1正则化加的是权重绝对值之和:
J(w) = 原始损失 + λ·Σ|wⱼ|
L1有个神奇的特性:它会让一些权重直接变成0。这就相当于在做特征选择。我做过一个用户画像项目,特征有200多个,用L1正则化后,只剩30多个非零权重,模型解释性大大增强。
| 对比项 | L1正则化 | L2正则化 |
|---|---|---|
| 惩罚形式 | 绝对值之和 | 平方和 |
| 权重效果 | 产生稀疏解(部分权重为0) | 权重均匀缩小 |
| 适用场景 | 特征选择、高维数据 | 防止过拟合、特征间相关性强 |
| 优化难度 | 不可导点处理麻烦 | 处处可导,优化简单 |
4.4 知识体系总览
下面这张图把线性模型家族的核心脉络梳理清楚了。你看,从线性回归出发,加上Sigmoid变成逻辑回归,加上正则化变成岭回归/Lasso,整个体系就完整了。
线性模型家族虽然基础,但它是理解更复杂算法的基石。我个人觉得,把这三个东西吃透了,后面学SVM、神经网络都会轻松很多。嗯,今天就到这里,下次咱们聊聊决策树和集成方法。
可可精品资料库