跳到主要内容

模型评估与选择

问题

如何评估机器学习模型的好坏?混淆矩阵、ROC/AUC、交叉验证的原理是什么?如何进行模型选择和超参调优?

答案

模型评估的核心目标是衡量模型的泛化能力——在未见过的数据上表现如何。不同任务使用不同的评估指标,选择错误的指标会导致错误的模型选择。

一、分类评估指标体系

混淆矩阵(Confusion Matrix)

预测为正(Positive)预测为负(Negative)
实际为正TP(真正例)FN(假负例 / 漏报)
实际为负FP(假正例 / 误报)TN(真负例)

由混淆矩阵推导出的核心指标:

指标公式含义关注场景
AccuracyTP+TNTP+TN+FP+FN\frac{TP+TN}{TP+TN+FP+FN}整体正确率类别均衡
PrecisionTPTP+FP\frac{TP}{TP+FP}查准率误报代价高(垃圾邮件)
RecallTPTP+FN\frac{TP}{TP+FN}查全率漏报代价高(癌症筛查)
F12PRP+R\frac{2PR}{P+R}P 和 R 的调和平均需要平衡
SpecificityTNTN+FP\frac{TN}{TN+FP}真负率关注正确拒绝
Accuracy 的局限性

99% 的邮件是正常的,只有 1% 是垃圾邮件。一个永远预测"正常"的模型有 99% Accuracy,但完全没用。在不均衡数据上,Accuracy 几乎没有参考价值。

F-beta Score

Fβ=(1+β2)×Precision×Recallβ2×Precision+RecallF_\beta = (1 + \beta^2) \times \frac{Precision \times Recall}{\beta^2 \times Precision + Recall}
  • β=1\beta = 1:F1 Score,P 和 R 等权
  • β=2\beta = 2:F2 Score,更重视 Recall
  • β=0.5\beta = 0.5:F0.5 Score,更重视 Precision

ROC 曲线与 AUC

ROC 曲线:在不同分类阈值下,以 FPR 为横轴、TPR 为纵轴绘制的曲线。

  • AUC = 1.0:完美分类器
  • AUC = 0.5:随机猜测(对角线)
  • AUC < 0.5:比随机还差(通常是标签反了)

AUC 的直觉理解:随机取一个正样本和一个负样本,模型给正样本的分数高于负样本的概率。

ROC 的优势

ROC/AUC 在以下场景特别有用:

  1. 阈值不确定时——ROC 展示了所有阈值下的表现
  2. 类别不均衡时——不受类别比例影响(但也有人认为 PR 曲线在不均衡场景更好)
  3. 比较不同模型——AUC 是单一数值,方便对比

PR 曲线

以 Recall 为横轴、Precision 为纵轴的曲线。在正样本很少的场景(如欺诈检测),PR 曲线比 ROC 曲线更能体现模型差异。用 AP(Average Precision)AUPRC 作为汇总指标。

二、回归评估指标

指标公式特点
MSE1n(yy^)2\frac{1}{n}\sum(y-\hat{y})^2对大误差敏感
RMSEMSE\sqrt{MSE}与 y 同量纲,更直观
MAE1nyy^\frac{1}{n}\sum\|y-\hat{y}\|对异常值鲁棒
MAPE1nyy^y\frac{1}{n}\sum\|\frac{y-\hat{y}}{y}\|百分比误差,直观
R2R^21SSresSStot1 - \frac{SS_{res}}{SS_{tot}}解释方差比例,1 为完美

三、交叉验证

K-Fold Cross Validation

变体说明适用场景
K-Fold数据分 K 等份,轮流验证通用
Stratified K-Fold保持各 Fold 中类别比例一致分类任务、不均衡数据
Leave-One-OutK = 样本数,每次只留一个验证极小数据集
Time Series Split按时间顺序切分,不打乱时序数据
Group K-Fold同一组数据不跨 Fold有组结构的数据

四、超参调优

方法原理优缺点
Grid Search穷举所有参数组合全面但慢,参数多时不可用
Random Search随机采样参数组合比 Grid Search 更高效
Bayesian Optimization用概率模型指导参数搜索高效,适合昂贵的评估
Hyperband早期淘汰差的配置快速筛选
Optuna综合策略(TPE + 剪枝)工业常用

五、模型选择策略


常见面试问题

Q1: AUC 和准确率哪个更有用?

答案:取决于场景:

  • 类别均衡:Accuracy 直观且有意义
  • 类别不均衡:AUC 更可靠,因为 Accuracy 会被多数类主导
  • 需要比较不同模型:AUC 是阈值无关的,适合公平对比
  • 需要确定分类阈值:此时看 PR 曲线或特定阈值下的 F1 更实际

Q2: 多分类任务怎么计算 F1?

答案

方式含义
Macro F1对每个类别分别计算 F1,取平均(每类平等)
Micro F1先汇总所有类的 TP/FP/FN,再计算 F1(等价于 Accuracy)
Weighted F1按各类样本量加权平均 F1

样本不均衡时用 Macro F1(不受多数类影响)或 Weighted F1。

Q3: 如何避免模型评估中的数据泄露?

答案

  1. 先划分数据再做预处理(特征缩放、填充缺失值等用训练集统计量)
  2. 交叉验证的每一折内部独立做预处理
  3. 时序数据不能随机打乱——未来的数据不能用于训练
  4. 目标变量不能出现在特征中(如用"是否购买"去预测"是否点击",但"购买"发生在"点击"之后)

相关链接