跳至内容
模型评估与过拟合

模型评估与过拟合

模型在训练集上 99% 准确,上线却惨不忍睹——这是新手最常踩的坑。这篇讲清楚怎么科学地评估模型、什么是过拟合,以及常用的应对手段。

为什么要划分数据集

如果用同一批数据既训练又评估,相当于「拿复习过的原题考试」,分数虚高、没有参考价值。标准做法是把数据切成三份:

  • 训练集(Train):用来拟合模型参数,一般占 60%~80%。
  • 验证集(Validation):调超参数、选模型时看它的表现,避免污染测试集。
  • 测试集(Test)只在最后用一次,模拟真实上线效果,期间绝不能拿来调参。
测试集一旦被用来反复调参,它就「泄露」了,评估结果不再可信。把它当成只能拆封一次的密封信封。

数据量小时,用**交叉验证(K-Fold Cross Validation)**更稳:把训练数据切成 K 份,轮流用其中 1 份当验证、其余训练,取 K 次结果的平均,能更充分地利用数据、降低偶然性。

过拟合与欠拟合

这是评估里最核心的一对概念:

  • 欠拟合(Underfitting):模型太简单,连训练集都学不好。训练误差和验证误差都高。
  • 过拟合(Overfitting):模型太复杂,把训练集的噪声也背了下来。训练误差很低,但验证误差高——一到新数据就露馅。
误差
 │  \                         欠拟合区 | 最佳 | 过拟合区
 │   \  验证误差              ─────────┼──────┼─────────
 │    \____                            ↑
 │         ‾‾‾___                   泛化最好
 │   训练误差   ‾‾‾‾———————____
 └──────────────────────────────►  模型复杂度

理想状态是在训练误差和验证误差的差距开始拉大之前停下,这个点泛化最好。背后是「偏差—方差权衡」:模型越简单偏差越大(欠拟合),越复杂方差越大(过拟合),要找平衡点。

常见的应对手段

针对过拟合,按性价比从高到低:

  • 加数据:最有效但最贵。数据增强(图像翻转、裁剪等)是低成本的扩充方式。
  • 正则化(Regularization):在损失函数里加惩罚项,限制参数过大,如 L1/L2 正则、神经网络的 Dropout。
  • 简化模型:减少特征、降低树深度或网络层数。
  • 早停(Early Stopping):训练时盯着验证误差,一旦不再下降就停。

针对欠拟合则相反:加特征、换更强的模型、训练更久。

评估指标怎么选

指标必须匹配业务目标,准确率不是万能的

分类任务,尤其类别不均衡时(如 99% 正常、1% 欺诈),看这几个:

指标含义适用场景
准确率 Accuracy预测对的比例类别均衡时才有意义
精确率 Precision预测为正的里面,真正为正的比例误报代价高(如把正常邮件判为垃圾)
召回率 Recall真正为正的里面,被找出来的比例漏报代价高(如漏诊、漏判欺诈)
F1精确率与召回率的调和平均两者都要兼顾

回归任务常用 MAE(平均绝对误差)RMSE(均方根误差),后者对大误差更敏感。

先问「这个场景里,误报和漏报哪个更可怕」,再选指标。风控漏掉欺诈损失巨大,应优先保召回率;垃圾邮件误杀正常邮件很烦人,应优先保精确率。

一句话小结

评估的本质是「用没见过的数据检验泛化能力」。划好测试集别偷看、盯住过拟合、用匹配业务的指标——做到这三点,模型才靠谱。

最后更新于