02 机器学习进阶本域第 5 篇
模型评估与交叉验证
准确率是最容易骗人的指标——评估方法错了,一切都白搭
定义
模型评估是用一套独立的、未参与训练的数据客观衡量模型真实表现的方法。它包含:选择恰当的指标(准确率、精确率、召回率、F1、ROC-AUC)、用交叉验证降低评估的随机性,以及警惕数据泄漏——任何在训练阶段“偷看”测试信息的行为,都会让评估结果虚高。
直观理解
这像用一套从没给学生做过的考卷来考试。若考卷恰是练过的原题,分数再高也说明不了水平。更隐蔽的陷阱是“泄题”:把答案不小心混进了复习资料。数据集划分、特征工程、预处理中的任何一次越界,都会让评估变成自欺欺人。
二分类混淆矩阵(1000 个样本,正例仅占 10%):准确率 94.5% 看似漂亮,但四个格子的分布才是真相
同一份不平衡数据上各分类器的 F1:准确率相近的模型,F1 可以相差很大
工作原理
- 01
严格划分数据
训练、验证、测试三份数据必须互相隔离。归一化、特征选择、超参数搜索都只能碰训练部分,否则信息会从测试集泄漏进训练。
- 02
用混淆矩阵看清四类结果
真正例、真负例、假正例、假负例。绝大多数指标都由这四个数组合而成,先把矩阵看清楚,指标才不会误读。
- 03
按代价选择指标
漏诊代价高就看召回率,误报代价高就看精确率,两者都要就取 F1 或看 PR 曲线。类别不平衡时,准确率几乎必然误导。
- 04
交叉验证与不确定性
把数据轮流切成 k 折,每次用 k−1 折训练、1 折验证,取平均。它用有限的样本给出更稳的估计,也顺带告诉你这个估计有多不确定。
关键公式
F1 = 2 · (P · R) / (P + R)应用场景
- 模型选型:在多个候选模型或超参数之间做公正比较
- 阈值调优:用 ROC/PR 曲线挑选兼顾精确率与召回率的分类阈值
- 上线前验收:用独立测试集或时间切分模拟真实部署表现
- 竞赛与基准:统一的评估协议让不同方法可比
常见误区
- 准确率陷阱:在正例仅占 1% 的极不平衡数据上,全部预测为负也能拿到 99% 准确率,却毫无用处。
- 数据泄漏:按时间顺序的数据若随机划分,未来信息会漏进训练;标准化使用全量均值方差也是常见泄漏源。
- 交叉验证误用:对时序数据用随机 k 折会高估性能;反复调参直到测试集好看,等同于把测试集当训练集用。
关键术语
- 混淆矩阵
- 真实类别与预测类别的交叉计数表
- 精确率与召回率
- 前者关心“报警里有多少是真的”,后者关心“真事里有多少被逮到”
- F1
- 精确率与召回率的调和平均
- ROC-AUC
- 曲线下面积,衡量模型在所有阈值下的排序能力