从0开始学习机器学习-泛化与拟合

一句话概括:训练模型的目标从来不是"把练习册做到满分",而是"在没见过的考卷上依然考得好"。 拟合是学数据,泛化是用所学;两者的平衡是机器学习最核心的命题。


一、四个核心概念

概念 含义 考试类比
拟合 模型对训练数据的贴合程度 练习册做得多好
欠拟合 连训练数据都没学好 练习册都做不对
过拟合 训练数据背得滚瓜烂熟,但背的是"答案"不是"方法" 练习册满分,换新题就懵
泛化 在没见过的数据上的表现 考场上的真实分数

关键认知:训练分数只是及格线,训练分数与测试分数的差距才是泛化好坏的体温计。

  • 训练 99 分、测试 60 分 → 过拟合(背题了);
  • 训练 60 分、测试 58 分 → 欠拟合(题太难或学得太少);
  • 训练 85 分、测试 83 分 → 泛化良好(真正学会了方法)。

二、为什么会过拟合:规律 vs 噪声

训练数据里的信息分两种:

类型 例子 换个数据集还成立吗
真实规律 收入低 → 违约风险高 成立
噪声巧合 周三申请的客户恰好都违约了 不成立,纯属碰巧

模型学的东西里噪声占比越高,泛化越差。过拟合的数学指纹是:对应噪声的特征权重特别大、特别极端------噪声只在少数样本上成立,模型要强行拟合它,参数必须变得很激进。


三、模型复杂度:三档状态

模型越复杂(参数越多、越灵活),拟合能力越强,但背噪声的能力也越强: 测试误差的 U 形曲线是整个领域最重要的一张图:复杂度太低学不到规律,太高开始背噪声,谷底就是泛化最好的位置

偏差---方差分解(理解 U 形的理论工具)

模型的期望误差可以拆成三部分:
Error=Bias2+Variance+NoiseError = Bias^2 + Variance + Noise Error=Bias2+Variance+Noise

成分 含义 谁导致
偏差(Bias) 模型"天生看不准",系统性偏离真相 模型太简单 → 欠拟合
方差(Variance) 模型"太敏感",换一批数据就学出不同结果 模型太复杂 → 过拟合
噪声 数据本身的随机性 谁都消除不了

简单模型偏差高、方差低;复杂模型偏差低、方差高。调模型复杂度,本质是在偏差和方差之间找平衡点。


四、怎么测量泛化能力

4.1 训练集 / 测试集划分

erlang 复制代码
训练集(约 80%)→ 调参数,相当于练习册
测试集(约 20%)→ 全程不许碰,最后才用,相当于考卷

铁律:测试集一旦参与了任何决策(选特征、调参数),它就被"污染"了,测量结果会虚高

4.2 交叉验证(数据少时的标准做法)

把数据分成 K 份(常用 5 折),轮流让每一份当一次"考卷",其余当"练习册",考 K 次取平均分。

优点:每条数据都当过一次考卷,测量更可靠、不浪费数据。 代价:要训练 K 次,算力翻 K 倍。

4.3 看什么指标

  • 分类:AUC、F1、PR 曲线(类别不平衡时别看准确率);
  • 回归:MSE、MAE;
  • 共同原则:永远对比"训练分"和"验证分"两条线,只盯一条线没有意义。

五、怎么提高泛化:五大手段

所有手段的共同思想只有一条:限制模型"背题"的能力,逼它只能学真规律。

5.1 正则化(最常用,从模型内部下手)

在损失函数后追加"权重税":
Ltotal =L+λ⋅R(w) L_{total} = L + \lambda \cdot R(w) Ltotal=L+λ⋅R(w)

两种罚法:
L2:R(w)=∑jwj2L2:R(w) = \sum_j w_j^2 L2:R(w)=j∑wj2
L1:R(w)=∑j∣wj∣L1:R(w) = \sum_j |w_j| L1:R(w)=j∑∣wj∣

对比项 L2(Ridge) L1(Lasso)
惩罚方式 权重平方和 权重绝对值和
效果 全体压小、变平滑,不压到 0 把一批权重压成精确的 0
附带能力 自动特征选择
适用场景 特征都有点用、小数据集 特征海量但大部分没用
经典应用 风控评分卡 广告 CTR(亿级稀疏特征)

关键点:

  • λ 是税率旋钮:太小管不住(过拟合),太大连真规律都不敢学(欠拟合);
  • λ 不靠人估,靠交叉验证自动搜索(GridSearchCV / Optuna);
  • 正则化前必须做特征缩放,否则量纲大的特征会被误伤;
  • 偏置 b 一般不参与正则化。

正则化原理图

图 1:总损失的拔河------平衡点是怎么来的

拟合损失 L 希望模型使劲贴合数据(权重越大往往拟合越好),正则项 λR 希望权重保持低调。两者方向相反,总损失在中间某处取得最低点------这就是正则化后的最终解: 图 2:L1 vs L2 的几何差异------为什么 L1 能压出"恰好为 0"

把"权重不能太大"画成一块约束区域,把"拟合损失"画成一圈圈等高线。正则化的解 = 等高线第一次碰到约束区域的切点:

关键直觉:L1 菱形的尖角正好压在坐标轴上,等高线从各个方向"滚"过来,最容易先碰到尖角------而尖角处必然有一个坐标为 0。L2 的圆没有尖角,切点落在哪都不带"归零"属性。

图 3:λ 三档旋钮------权重分布对比 图 4:同一批数据、不同 λ 的拟合曲线

四张图串起来就是正则化的完整故事:图 1 说明"为什么要加惩罚"(拔河出平衡点),图 2 说明"L1 和 L2 差在哪"(尖角 vs 圆弧),图 3 说明"λ 怎么调"(三档旋钮),图 4 说明"调完长什么样"(拟合曲线的松紧变化)。

5.2 增加数据(治本之策)

样本越多,噪声巧合越难反复出现,真规律越突出。数据量是泛化的地基;数据增强(加噪声、裁剪、同义改写)是低成本扩数据的常用技巧。

5.3 减少特征 / 特征选择(从输入端下手)

把可疑变量删掉,模型想背也背不了。L1 正则化能自动完成这件事;风控里用 IV 值筛变量也是同一逻辑。

5.4 早停(从训练过程下手)

训练轮数太多,模型会开始把噪声学进去。监控验证集分数:验证分开始掉头向下时立即停止,"练到刚好会做就收手,别练到走火入魔"。

5.5 换用天生抗过拟合的模型

  • 逻辑回归是直线思维的简单模型,"笨有笨的好处",想背题都背不动,泛化天然稳;
  • 树模型有剪枝、最大深度等内建约束;
  • 神经网络容量巨大,必须靠正则化组合拳(Dropout、权重衰减、早停)约束。

手段分工总览

手段 下手位置 核心动作
正则化 模型内部 没收大权重的工具
增加数据 数据端 让噪声无处藏身
特征选择 输入端 删掉可疑变量
早停 训练过程 别让模型练过头
降复杂度 模型选型 换个背不动题的模型

六、在逻辑回归中的具体体现

学过的内容在这里全部接上:

  1. 评分卡分箱本身就是防过拟合设计:把连续值切成几箱,每箱一个权重,模型想死记"收入 8327.5 元的这个人违约了"都做不到------只能学"这个收入段整体风险如何"这种稳健规律;
  2. WOE + IV 筛选:IV 值低的变量(信息量不足)直接扔掉,防止模型从弱信号里硬挖噪声;
  3. 逐步回归 + 符号检查:p 值不显著的变量踢掉、符号违反业务逻辑的不上线------人工规则也是泛化防线;
  4. CTR 场景的 L1:上亿维稀疏特征里 99% 是只出现过一次的组合,不靠 L1 压稀疏,模型必然把一次性巧合背成"规律";
  5. KS 衰减监控:评分卡上线后按月回算 KS,掉到阈值以下说明模型"背的题"过期了,需要重训------这是泛化在时间维度上的失效。

七、行业演进:麻烦的自动化

泛化治理中"人工太麻烦"的部分,行业用三波演进解决:

阶段 特征工程 调参(含 λ)
手工时代(约 2010 前) 专家手工分箱、交叉 网格搜索
自动化时代(2010~2018) 特征平台沉淀 + Pipeline 流水线 随机搜索 + 贝叶斯优化(Optuna)
范式转移时代(2016 至今) 树模型/深度模型自动学特征 AutoML 全自动

三个关键结论:

  • 树模型(XGBoost/LightGBM)天然免疫大量预处理:不怕非线性、不怕量纲、自带缺失值处理,把"预处理重"的逻辑回归挤出很多场景;

  • 深度模型(Wide&Deep、DeepFM)用 Embedding 自动学特征交叉,淘汰了人工排列组合;

  • 正则化 λ 从来不是靠人估的------标准做法一直是候选值 + 交叉验证自动搜索,glmnet 的正则化路径还能一次训练算出所有 λ 的解。

    规律:行业的解法不是"把人干的事干得更快",而是"换成不需要人干的模型和流程"。但关键环节(风控分箱、医疗校准)依然保留人工把关------技术替代重复劳动,人负责规则和底线。


八、总结:五句话记住泛化与拟合

  1. 目标:模型的终极目标是测试集上的分数,不是训练集上的分数;

  2. 成因:过拟合 = 把数据里的噪声巧合当成了规律,指纹是极端的大权重;

  3. 测量:训练集/测试集严格隔离,交叉验证提升可靠性,盯"训练分与验证分的差距";

  4. 治理:正则化、加数据、减特征、早停、降复杂度------殊途同归,都是限制模型背题;

  5. 演进:行业靠树模型、深度模型、AutoML 层层自动化,但可解释场景仍需人工防线。

    完整因果链:

    数据含噪声 → 模型可能背噪声(过拟合)→ 泛化崩塌
    → 测量:训练/测试分离 + 交叉验证
    → 治理:正则化 / 加数据 / 减特征 / 早停 / 换模型
    → 工业落地:平台化、AutoML、范式转移

常见延伸方向:偏差---方差分解的数学推导、学习曲线诊断法、Dropout 与集成学习(随机森林、GBDT)的抗过拟合原理、数据增强实战、A/B 测试与线上泛化验证。

相关推荐
空堂与归1 小时前
如何解决数据预测问题?用线性回归建模实现精准预测
机器学习
watersink2 小时前
机器学习XGBoost
人工智能·机器学习
watersink3 小时前
机器学习极大似然估计与EM算法
人工智能·算法·机器学习
叠层归一研究院3 小时前
如何用程序搭建一个 AGI 种子系统(一):从向量种子到无限生长引擎
人工智能·python·算法·机器学习·agi
l1258653 小时前
# RAG重排序实战:硅基流动bge-reranker-v2-m3在线API vs 本地CrossEncoder,一篇讲透两种方案
数据库·人工智能·python·深度学习·算法·机器学习·langchain
薛定e的猫咪4 小时前
(ICLR2026)MORL‑FB:从无奖励强化学习视角重新审视多目标强化学习
人工智能·深度学习·机器学习
SomeB1oody4 小时前
【RustyML入门】5.0. 模型评估
开发语言·后端·机器学习·rust·教程
watersink5 小时前
机器学习关联分析
人工智能·算法·机器学习
脑海科技实验室5 小时前
CNS Neurosci. Ther.:亚临床抑郁症中凸显-默认模式网络动态变化:基于前聚类的共激活模式分析
机器学习·聚类·抑郁症