返回
查看原链接原链接
Bilibili14分24秒 · 2026/9/2 07:50:20

线下模型评估详解

模型评估的核心价值在于提供优化的方向:仅有训练结果并不能得知误差来源与优化路径,而通过 MAE、MSE、RMSE、R² 四个回归指标与残差分析、交叉验证等手段,我们可以系统判断模型的不足并指明改进策略。

线下模型评估详解

模型评估的核心价值在于提供优化的方向:仅有训练结果并不能得知误差来源与优化路径,而通过 MAE、MSE、RMSE、R² 四个回归指标与残差分析、交叉验证等手段,我们可以系统判断模型的不足并指明改进策略。

核心要点

本文围绕线下模型评估展开。在掌握了线性回归、梯度下降以及数据预处理技巧之后,模型训练本身并不困难,机器学习真正困难之处在于对人工特征处理的熟练度。若模型结果不佳,我们此前只能看出"不准确",却不知原因与优化方向。模型评估就是为回答"该如何优化"而存在的工具。

评估之前需要建立可靠的起点:基线模型(Baseline)。基线模型的定义是"最开始快速实现的、相对简单的模型",它不强调准确度高,核心作用是建立后续优化工作的参考坐标系——后续所有优化都需基于此模型进行对比。

本文以加州房价数据集为例,系统说明回归模型的四个核心评估指标(MAE、MSE、RMSE、R²),再通过残差图与 K 折交叉验证,判断模型的稳定性、有无过拟合或欠拟合,为下一步优化提供依据。

详细解析

基线模型(Baseline)的建立

是什么:基线模型是机器学习实践的第一步——快速搭建一个简单可运行的模型。

为什么重要:它是后续优化工作的"参考系",没有基线模型就无法量化改进的效果。

依据/案例:使用加州房价数据集。该数据集在 sklearn 中有内置加载方法,且特征与标签已区分:

  • 特征约 2 万多条记录,包含 8 个特征;
  • 目标标签(target/label)为房价中位数,单位为 10 万美元;
  • 特征包括:家庭收入、房龄(房屋年龄)、房间数、卧室数量、街区对应人口、家庭人口数、经度、纬度等地理坐标信息。

训练步骤

  1. 对特征进行标准化——将数据变换为标准正态分布(数据处理中的常见技巧);
  2. 划分训练集与测试集——训练集约 1.6 万条,测试集约四千多条;
  3. 使用 sklearn 内置的 LinearRegression 方法进行训练与预测。

观察预测结果:真实值 0.4 多而预测值 0.7、0.41、1.7 等,有些靠谱有些不靠谱。若只看前十条数据,我们只能看到这个程度——看不出模型整体表现如何,从而引出模型评估的需要。

回归模型的四个核心评估指标

MAE(平均绝对误差)

  • 定义:将真实值与预测值做绝对差,然后求平均数。表达的是"平均预测偏离了多少"。
  • 优点:非常简单直观;对异常值相对不敏感——因为是求均值,不会过分放大极端错误。
  • 缺点:作为损失函数进行优化时不如加平方方便(不便于求导或在梯度下降中使用)。

MSE(均方误差)

  • 定义:相对于 MAE,将差值平方后再求平均值。
  • 原理机制:平方操作会放大误差的影响——若预测差距为 2,在 MAE 中是 2,在 MSE 中变为 4;若只差 0.1,一平方变成 0.01。这会放大不准确预测的惩罚、缩小准确预测的影响,对于调梯度帮助非常大。
  • 适用场景:在业务对较大偏差零容忍的场景(如医疗、自动驾驶),MSE 是非常好的指标。
  • 缺点:平方之后失去业务含义——可判断"越大越不好",但"这么大代表什么"无法说清。

RMSE(均方根误差)

  • 定义:对 MSE 求平方根(因为 MSE 在外面平方了,因此开根号回来)。
  • 核心价值:量纲(单位)与目标变量一致,因此业务上容易理解。

*示例*:RMSE = 3,说明预测房价大约与真实房价差 3 万美元(数据单位是 10 万美元,故差 30 万);RMSE = 0.1,则大约差 1 万美元左右。

  • 优点:同时具备 MSE 对大偏差敏感的特性(加了平方再开根号),因此在竞赛中默认的回归任务评估指标通常是 RMSE。

R²(决定系数)

  • 公式含义

R² = 1 − (标签真实值 − 预测值的平方和) / (真实值 − 真实值均值的平方和)

  • 核心含义:评估模型比"瞎猜"好多少。所谓"瞎猜"即直接用平均值进行预测。
  • 取值解读
  • R² = 1:分子为 0,预测值与真实值几乎一致,模型完美;
  • R² = 0:模型几乎在用均值预测,基本没学到特征,与瞎猜结果相同;
  • R² < 0:模型还不如瞎猜,说明数据或训练过程存在误导,模型必有严重 bug;
  • 越接近 1 越好。
  • 本文案例中:R² 越接近 1 说明模型解释方差的能力越强。

加州房价 Baseline 模型评估结果

在 sklearn 中可以直接调用标准评估方法,对上述 baseline 模型得到如下指标:

指标数值业务解读
MAE约 0.5平均预测差约 5 万美元
MSE约 0.5无直接业务含义,越大越差
RMSE约 0.746(七万四千六百美元左右)平均偏差约 7.46 万美元
0.57可以解释约 57% 的方差

结论解读

  • RMSE 大于 MAE,说明数据中存在偏差较大的样本,将 RMSE 拉高了;
  • R² 约为 0.57,意味着模型能预测对一半多一点;
  • 在仅有 8 个特征的情况下,这算一个合理的起点,但仍有明显提升空间。

残差分析(Residual Analysis)

残差的定义

是什么:真实值减去预测值的差值。公式为:残差 = 真实值 − 预测值。

背景:在后期的 Transformer 学习中也存在"残差连接",其本质就是同一个简单概念——真实值与预测值之间的差距。

三张诊断图解读

针对加州房价 baseline 模型,通过对预测值、真实值与残差绘制散点图与直方图(代码非常简单,可在训练后直接绘制),可得出以下观察:

图一:真实值与预测值的对比散点图

  • 理论上线(模型预测线)在大部分区间内基本预测准确;
  • 但在值到达 5 左右时,预测突然变得很不准确。这跟加州房价数据本身有关——该数据会把大于 5 的房价强行抹成 5,属于数据特性,应在做数据分析/特征分析时发现;
  • 通过此图可看出,用一条直线很难拟合加州房价数据,无论直线怎么画都难以将它们都预测准确。

图二:残差与预测值的散点图

  • 理想情况:所有点应该在 0 附近——预测值和真实值相同,即标准模型的残差为 0;
  • 实际观察:残差并非均匀地上下波动于 0 附近(均匀波动属于良好表现),而是分布明显有问题,且到后面(高预测值区域)偏差越来越大,说明模型对于较大的值的预测存在缺陷。

图三:残差的直方图

  • 理想情况:符合标准的正态分布;
  • 实际观察:明显右偏了——说明对大值的预测存在一定问题;
  • 但总体仍接近正态分布(只是右偏了一些),说明模型没有"错得非常离谱"。

残差分析得到的结论

  1. 模型倾向于低估高价的房产
  2. 随着预测值增大,残差的发散程度也在变大——模型在预测高房价时非常不稳定;
  3. 整体残差呈右偏分布——对高房价样本的预测存在严重问题。

K 折交叉验证(K-Fold Cross Validation)

解决什么问题

残差分析结论很可能引发一个疑问:会不会是拆分数据集时引入的随机性(运气成分)导致上述问题?K 折交叉验证就是为回答这个问题。

原理与流程

是什么:将数据分成 K 份,每一轮取其中 1 份作为测试集,剩下 K−1 份作为训练集。由于每轮都换不同的部分做测试,因此称为"交叉"验证。

流程

  1. 将数据分成 K 份(如 10 份);
  2. 执行 K 轮训练:每轮挑出 1 份做测试,其余 K−1 份做训练(原文中描述对验证集/测试集的使用比较模糊,可理解为交替作为验证集);
  3. 查看每轮结果的均值与标准差——若均值稳定、标准差很小,说明表现与数据集拆分(运气)关系不大。

代码实现要点(sklearn)

  • 使用 cross_val_score 方法:内部自动完成训练与预测,无需手工划分数据;
  • 传入的参数:特征、标签、折数(如 5 轮即拆 5 份)、评分指标;
  • 因线性回归默认指标是 R²(越大越好),而 RMSE 是越小越好,因此对 RMSE _score 取负值实现反转。

模型在加州房价上的交叉验证结果

每轮的 RMSE 约为 0.6、0.7、0.8、0.7 量级,整体为 0.74 ± 0.04。标准差非常小,因此确认评估结果不存在明显运气成分,模型稳定,与拆分数据集关系不大。

更全面的诊断:cross_validate

sklearn 的 cross_validate 方法与 cross_val_score 类似,但可以同时查看多个指标(RMSE、MAE、R²)。在加州房价模型上的结果如下:

  • RMSE:训练集与测试集差距不大(求了 5 轮平均),说明无明显的运气成分;
  • MAE:训练集与测试集也差距不大,二者的数值都约 5 万美元(不算好);
  • :训练集约 0.6,测试集上更低约 0.5,差距不算特别大。

核心判断:训练集与测试集表现非常接近 ⇒ 没有过拟合。但存在一定欠拟合——R² 正常约 0.6、测试集仅 0.5,模型没有充分挖掘到数据中的信息。

欠拟合与过拟合的初步认识

什么是欠拟合

  • 定义:模型太简单,连训练数据都没有学好。
  • 在图例中的表现:加州房价只有 8 个特征,可能就需要引入多项式特征来增强模型表达能力。
  • 这是下节课要重点解决的问题之一。

什么是过拟合

  • 定义:模型过于复杂,把数据中的噪声(训练集中的噪声)也学会了,相当于死记硬背了训练数据——好比偷看答案后遇到新试卷就不会做了。具体表现为在训练数据表现好,但在新的数据(测试数据)上表现糟糕。

方法框架:如何诊断并解决欠拟合/过拟合是下一节视频的内容,本文仅做预告。

方法与步骤

回归模型评估的完整流程

  1. 建立基线模型:快速搭建一个简单模型,作为优化参考系;
  2. 利用四个核心指标量化性能:MAE、MSE、RMSE、R² 分别从业务理解、梯度优化、量纲还原和相对均值优劣四个维度评估模型;
  3. 做残差分析:绘制(1)真实值 vs 预测值、(2)残差 vs 预测值、(3)残差直方图三个图,判断误差分布形态、是否存在右偏或系统性低估/高估;
  4. 做交叉验证:使用 K 折交叉验证判断结果是否依赖数据拆分(是否存在运气成分),关注均值和标准差;
  5. 综合所有结果,判断模型是否欠拟合或过拟合,并为下一步优化指明方向。

案例与数据

案例背景

  • 数据集:加州房价数据集(内置,单位:10 万美元);
  • 记录数:约 2 万多条;
  • 特征数:8 个;
  • 特征内容:家庭收入、房龄、房间数、卧室数量、街区人口、家庭人口、经度、纬度;
  • 训练集约 1.6 万条、测试集约四千多条。

Baseline 模型的初始预测示例

  • 真实值 0.4 多,预测值 0.7、0.41、1.7——可见预测有些准确有些不准确。

Baseline 模型指标汇总

评估指标数值业务含义
MAE≈0.5平均偏差约 5 万美元
MSE≈0.5无单位含义,越大越差
RMSE≈0.746平均偏差约 7.46 万美元
0.57可解释约 57% 的方差

交叉验证结果

指标数值/描述
RMSE(5 折)每轮约 0.6~0.8 之间,整体 0.74±0.04
R²(训练)≈0.6
R²(测试)≈0.5
MAE训练与测试接近(约 0.5,即 5 万美元)

残差分析

  • 模型倾向于低估高房价;
  • 残差随预测值增大而发散变大,在高房价区间不稳定;
  • 残差直方图呈右偏形态。

限制与待确认问题

  • 本文给出的 RMSE 数值(0.746)与交叉验证部分的描述(每轮约 0.6、0.7、0.8、0.7,整体 0.74 ± 0.04)在细节上并不完全一致,原文的视频讲解在此处存在可能的口误或不精确表述,需以实际实验输出为准。
  • 关于训练集与验证集的划分与描述,原文存在一定的模糊之处("剩下的 9 个当验证"与 sklearn 接口表述等),具体实现细节需参考 sklearn 文档为准。
  • R²=0.57 中"可以解释 57% 左右的方差",这一说法是原文的直接描述,对 R² 的解释属于统计学上的模型拟合优度表述,但原文未展开推导。
  • 欠拟合、过拟合的诊断方法、解决办法以及多项式特征等优化手段,原文仅预告将在下节视频中展开,未提供具体实现细节。
  • 原文提到"残差图中显示大于 5 被强行抹成 5"是加州房价数据的已知特性,但并未给出进一步验证方法,需要结合数据探索来确认。

总结

在机器学习实践中,模型评估是确立优化方向的核心环节。建立基线模型后,回归问题需从四个角度评估:MAE 关注平均绝对偏差且对异常值不敏感;MSE 因平方操作放大误差而有利于优化,但失去业务含义;RMSE 恢复量纲使结果可解释,并保留了对大偏差的敏感度;R² 则回答"模型比直接猜均值好多少"的问题。

在加州房价案例中,baseline 模型指标为 MAE≈0.5、RMSE≈0.746、R²≈0.57,整体尚可但不佳。残差分析发现模型倾向低估高房价,且高房价区间误差波动加大,说明直线模型不足以充分表达该数据规律。K 折交叉验证显示 RMSE 为 0.74±0.04,结果稳定,与运气无关;训练集与测试集差距不大,说明模型没有过拟合,但存在欠拟合。

综合来看,下一阶段的优化方向应聚焦于引入更复杂的模型结构或特征变换(如多项式拟合)来改善模型表达能力,同时需在后续学习中掌握欠拟合与过拟合的系统性诊断与解决方案。