线下模型评估详解
模型评估的核心价值在于提供优化的方向:仅有训练结果并不能得知误差来源与优化路径,而通过 MAE、MSE、RMSE、R² 四个回归指标与残差分析、交叉验证等手段,我们可以系统判断模型的不足并指明改进策略。
核心要点
本文围绕线下模型评估展开。在掌握了线性回归、梯度下降以及数据预处理技巧之后,模型训练本身并不困难,机器学习真正困难之处在于对人工特征处理的熟练度。若模型结果不佳,我们此前只能看出"不准确",却不知原因与优化方向。模型评估就是为回答"该如何优化"而存在的工具。
评估之前需要建立可靠的起点:基线模型(Baseline)。基线模型的定义是"最开始快速实现的、相对简单的模型",它不强调准确度高,核心作用是建立后续优化工作的参考坐标系——后续所有优化都需基于此模型进行对比。
本文以加州房价数据集为例,系统说明回归模型的四个核心评估指标(MAE、MSE、RMSE、R²),再通过残差图与 K 折交叉验证,判断模型的稳定性、有无过拟合或欠拟合,为下一步优化提供依据。
详细解析
基线模型(Baseline)的建立
是什么:基线模型是机器学习实践的第一步——快速搭建一个简单可运行的模型。
为什么重要:它是后续优化工作的"参考系",没有基线模型就无法量化改进的效果。
依据/案例:使用加州房价数据集。该数据集在 sklearn 中有内置加载方法,且特征与标签已区分:
- 特征约 2 万多条记录,包含 8 个特征;
- 目标标签(target/label)为房价中位数,单位为 10 万美元;
- 特征包括:家庭收入、房龄(房屋年龄)、房间数、卧室数量、街区对应人口、家庭人口数、经度、纬度等地理坐标信息。
训练步骤:
- 对特征进行标准化——将数据变换为标准正态分布(数据处理中的常见技巧);
- 划分训练集与测试集——训练集约 1.6 万条,测试集约四千多条;
- 使用 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 万美元 |
| R² | 0.57 | 可以解释约 57% 的方差 |
结论解读:
- RMSE 大于 MAE,说明数据中存在偏差较大的样本,将 RMSE 拉高了;
- R² 约为 0.57,意味着模型能预测对一半多一点;
- 在仅有 8 个特征的情况下,这算一个合理的起点,但仍有明显提升空间。
残差分析(Residual Analysis)
残差的定义
是什么:真实值减去预测值的差值。公式为:残差 = 真实值 − 预测值。
背景:在后期的 Transformer 学习中也存在"残差连接",其本质就是同一个简单概念——真实值与预测值之间的差距。
三张诊断图解读
针对加州房价 baseline 模型,通过对预测值、真实值与残差绘制散点图与直方图(代码非常简单,可在训练后直接绘制),可得出以下观察:
图一:真实值与预测值的对比散点图
- 理论上线(模型预测线)在大部分区间内基本预测准确;
- 但在值到达 5 左右时,预测突然变得很不准确。这跟加州房价数据本身有关——该数据会把大于 5 的房价强行抹成 5,属于数据特性,应在做数据分析/特征分析时发现;
- 通过此图可看出,用一条直线很难拟合加州房价数据,无论直线怎么画都难以将它们都预测准确。
图二:残差与预测值的散点图
- 理想情况:所有点应该在 0 附近——预测值和真实值相同,即标准模型的残差为 0;
- 实际观察:残差并非均匀地上下波动于 0 附近(均匀波动属于良好表现),而是分布明显有问题,且到后面(高预测值区域)偏差越来越大,说明模型对于较大的值的预测存在缺陷。
图三:残差的直方图
- 理想情况:符合标准的正态分布;
- 实际观察:明显右偏了——说明对大值的预测存在一定问题;
- 但总体仍接近正态分布(只是右偏了一些),说明模型没有"错得非常离谱"。
残差分析得到的结论
- 模型倾向于低估高价的房产;
- 随着预测值增大,残差的发散程度也在变大——模型在预测高房价时非常不稳定;
- 整体残差呈右偏分布——对高房价样本的预测存在严重问题。
K 折交叉验证(K-Fold Cross Validation)
解决什么问题
残差分析结论很可能引发一个疑问:会不会是拆分数据集时引入的随机性(运气成分)导致上述问题?K 折交叉验证就是为回答这个问题。
原理与流程
是什么:将数据分成 K 份,每一轮取其中 1 份作为测试集,剩下 K−1 份作为训练集。由于每轮都换不同的部分做测试,因此称为"交叉"验证。
流程:
- 将数据分成 K 份(如 10 份);
- 执行 K 轮训练:每轮挑出 1 份做测试,其余 K−1 份做训练(原文中描述对验证集/测试集的使用比较模糊,可理解为交替作为验证集);
- 查看每轮结果的均值与标准差——若均值稳定、标准差很小,说明表现与数据集拆分(运气)关系不大。
代码实现要点(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 万美元(不算好);
- R²:训练集约 0.6,测试集上更低约 0.5,差距不算特别大。
核心判断:训练集与测试集表现非常接近 ⇒ 没有过拟合。但存在一定欠拟合——R² 正常约 0.6、测试集仅 0.5,模型没有充分挖掘到数据中的信息。
欠拟合与过拟合的初步认识
什么是欠拟合
- 定义:模型太简单,连训练数据都没有学好。
- 在图例中的表现:加州房价只有 8 个特征,可能就需要引入多项式特征来增强模型表达能力。
- 这是下节课要重点解决的问题之一。
什么是过拟合
- 定义:模型过于复杂,把数据中的噪声(训练集中的噪声)也学会了,相当于死记硬背了训练数据——好比偷看答案后遇到新试卷就不会做了。具体表现为在训练数据表现好,但在新的数据(测试数据)上表现糟糕。
方法框架:如何诊断并解决欠拟合/过拟合是下一节视频的内容,本文仅做预告。
方法与步骤
回归模型评估的完整流程
- 建立基线模型:快速搭建一个简单模型,作为优化参考系;
- 利用四个核心指标量化性能:MAE、MSE、RMSE、R² 分别从业务理解、梯度优化、量纲还原和相对均值优劣四个维度评估模型;
- 做残差分析:绘制(1)真实值 vs 预测值、(2)残差 vs 预测值、(3)残差直方图三个图,判断误差分布形态、是否存在右偏或系统性低估/高估;
- 做交叉验证:使用 K 折交叉验证判断结果是否依赖数据拆分(是否存在运气成分),关注均值和标准差;
- 综合所有结果,判断模型是否欠拟合或过拟合,并为下一步优化指明方向。
案例与数据
案例背景
- 数据集:加州房价数据集(内置,单位: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 万美元 |
| R² | 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,结果稳定,与运气无关;训练集与测试集差距不大,说明模型没有过拟合,但存在欠拟合。
综合来看,下一阶段的优化方向应聚焦于引入更复杂的模型结构或特征变换(如多项式拟合)来改善模型表达能力,同时需在后续学习中掌握欠拟合与过拟合的系统性诊断与解决方案。