模型评估与选择
问题
如何评估机器学习模型的好坏?混淆矩阵、ROC/AUC、交叉验证的原理是什么?如何进行模型选择和超参调优?
答案
模型评估的核心目标是衡量模型的泛化能力——在未见过的数据上表现如何。不同任务使用不同的评估指标,选择错误的指标会导致错误的模型选择。
一、分类评估指标体系
混淆矩阵(Confusion Matrix)
| 预测为正(Positive) | 预测为负(Negative) | |
|---|---|---|
| 实际为正 | TP(真正例) | FN(假负例 / 漏报) |
| 实际为负 | FP(假正例 / 误报) | TN(真负例) |
由混淆矩阵推导出的核心指标:
| 指标 | 公式 | 含义 | 关注场景 |
|---|---|---|---|
| Accuracy | 整体正确率 | 类别均衡 | |
| Precision | 查准率 | 误报代价高(垃圾邮件) | |
| Recall | 查全率 | 漏报代价高(癌症筛查) | |
| F1 | P 和 R 的调和平均 | 需要平衡 | |
| Specificity | 真负率 | 关注正确拒绝 |
Accuracy 的局限性
99% 的邮件是正常的,只有 1% 是垃圾邮件。一个永远预测"正常"的模型有 99% Accuracy,但完全没用。在不均衡数据上,Accuracy 几乎没有参考价值。
F-beta Score
- :F1 Score,P 和 R 等权
- :F2 Score,更重视 Recall
- :F0.5 Score,更重视 Precision
ROC 曲线与 AUC
ROC 曲线:在不同分类阈值下,以 FPR 为横轴、TPR 为纵轴绘制的曲线。
- AUC = 1.0:完美分类器
- AUC = 0.5:随机猜测(对角线)
- AUC < 0.5:比随机还差(通常是标签反了)
AUC 的直觉理解:随机取一个正样本和一个负样本,模型给正样本的分数高于负样本的概率。
ROC 的优势
ROC/AUC 在以下场景特别有用:
- 阈值不确定时——ROC 展示了所有阈值下的表现
- 类别不均衡时——不受类别比例影响(但也有人认为 PR 曲线在不均衡场景更好)
- 比较不同模型——AUC 是单一数值,方便对比
PR 曲线
以 Recall 为横轴、Precision 为纵轴的曲线。在正样本很少的场景(如欺诈检测),PR 曲线比 ROC 曲线更能体现模型差异。用 AP(Average Precision) 或 AUPRC 作为汇总指标。
二、回归评估指标
| 指标 | 公式 | 特点 |
|---|---|---|
| MSE | 对大误差敏感 | |
| RMSE | 与 y 同量纲,更直观 | |
| MAE | 对异常值鲁棒 | |
| MAPE | 百分比误差,直观 | |
| 解释方差比例,1 为完美 |
三、交叉验证
K-Fold Cross Validation
| 变体 | 说明 | 适用场景 |
|---|---|---|
| K-Fold | 数据分 K 等份,轮流验证 | 通用 |
| Stratified K-Fold | 保持各 Fold 中类别比例一致 | 分类任务、不均衡数据 |
| Leave-One-Out | K = 样本数,每次只留一个验证 | 极小数据集 |
| 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: 如何避免模型评估中的数据泄露?
答案:
- 先划分数据再做预处理(特征缩放、填充缺失值等用训练集统计量)
- 交叉验证的每一折内部独立做预处理
- 时序数据不能随机打乱——未来的数据不能用于训练
- 目标变量不能出现在特征中(如用"是否购买"去预测"是否点击",但"购买"发生在"点击"之后)