Appearance
模型评估与指标选择
评估指标必须与任务、标签可用性、正类定义和错误代价匹配。本页统一整理回归、分类、聚类与代码生成评估,并强调指标的适用边界。
一、指标选择框架
判断一个方法属于哪种学习范式时,可以按以下顺序:
- 训练样本是否带有目标值或类别标签?
- 有:优先判断为监督学习;如果任务是利用类别信息降维,可考虑 LDA;
- 没有:继续判断是否在寻找结构、分布或低维表示。
- 如果没有标签,任务是在分组、降维还是估计分布?
- 分组:K-Means、GMM、DBSCAN、层次聚类、谱聚类;
- 降维:PCA;
- 概率密度或潜在成分:GMM。
- 是否同时使用少量标注样本和大量未标注样本?
- 是:半监督学习。
- 是否通过环境奖励评价动作?
- 是:强化学习。
- 是否在复用已有模型或已有任务知识?
- 是:迁移学习;
- 这描述的是训练策略,不取代监督/无监督的标签分类。
- 是否有多个任务共享一个主干网络?
- 是:多任务学习。
- 如果涉及推荐系统中的矩阵分解,先判断方法扮演的角色:
- PCA:特征降维和去噪;
- NMF、SVD 形式的矩阵分解:潜在因子建模;
- QR:训练过程中的最小二乘求解工具。
二、模型评估
模型评估指标必须结合任务类型、标签是否可用、正负类定义和错误代价来理解。回归任务关注预测值与真实值的偏差;无监督聚类在没有真实标签时主要考察簇内紧密性与簇间分离度;分类任务则通常先从混淆矩阵出发,再计算 Precision、Recall、Accuracy、F1、ROC-AUC 等指标。
2.1 回归任务评估指标
指标定义与方向
设真实值为
均方误差(Mean Squared Error,MSE)为:
MSE 越小越好。由于误差被平方,较大的误差会受到更重的惩罚,因此 MSE 更容易受到异常值影响。
均方根误差(Root Mean Squared Error,RMSE)为:
RMSE 越小越好,并且与目标变量具有相同单位,通常比 MSE 更容易结合业务尺度解释。
平均绝对误差(Mean Absolute Error,MAE)为:
MAE 越小越好。它相较于 MSE 和 RMSE 对异常值更稳健,但绝不是完全不受异常值影响。
决定系数(coefficient of determination)为:
其中残差平方和与总平方和分别为:
这里的
| 指标 | 越大越好? | 主要特点 |
|---|---|---|
| MSE | 否,越小越好 | 对大误差惩罚更重,异常值影响更明显 |
| RMSE | 否,越小越好 | 与目标变量同单位,较容易解释 |
| MAE | 否,越小越好 | 对异常值相对稳健,但并非完全不受影响 |
| 通常是,越大越好 | 衡量相对于均值基线的平方误差改进程度 |
回归指标速记
MSE、RMSE、MAE:越小越好;
误差分布与损失选择
这里关注的是训练损失为什么会与某种误差分布对应;MSE、MAE 与 Huber 的形状和异常值特性已在线性回归章节详细比较。设回归模型为
在这个假设下,负对数似然(忽略与模型参数
因此,固定
如果误差服从零位置的拉普拉斯分布,其密度的指数部分与
所以拉普拉斯误差通常对应绝对值损失、L1 损失和 MAE。这里的对应关系依赖独立同分布、尺度参数固定等假设;如果误差方差随样本变化,还应考虑加权平方损失或直接建模条件方差。
| 误差假设 | 负对数似然中的主要项 | 常用损失或指标 | 对应的典型点预测 |
|---|---|---|---|
| 高斯误差 | SSE、MSE、L2 | 条件均值 | |
| 拉普拉斯误差 | MAE、L1 | 条件中位数 |
不要把“拉普拉斯误差对应 MAE”与“中位数绝对误差”混为一谈:MAE 是所有绝对误差的平均值,是一种可用于拟合的损失;中位数绝对误差是对绝对误差取中位数,更偏向稳健地描述典型误差。最大绝对误差则只关注最差样本,适合检查极端个例或最坏情况约束,不是高斯误差假设下的最大似然损失。
误差分布与损失速记
高斯误差通常对应平方损失(MSE/L2);拉普拉斯误差通常对应绝对值损失(MAE/L1)。这是最大似然与损失函数之间的对应关系,不代表某一种指标在所有业务场景下都更好。
的含义与陷阱
:残差平方和为零,模型在相应评估集上完美拟合; :模型在平方误差意义下与始终预测均值的基线模型表现相当; :模型还不如均值基线,说明预测误差平方和超过了总平方和。
“
对于带截距的普通 OLS,在同一个训练集上进行拟合时,模型投影性质通常保证
不同数据集之间也不能只根据
训练集带截距的 OLS 常见
增加特征与调整后的
对于普通最小二乘回归,如果在同一个训练集上增加特征,新模型可以把新增特征的系数设为
同一训练集上的
这意味着:
- 增加无关特征不会使训练集普通
下降; - 普通
可能因为加入垃圾特征而上升; - 训练集
上升不代表泛化性能变好,新增特征可能只是拟合了噪声。
上述单调性是同一训练集上的普通 OLS 性质,不能直接推广到测试集,使用正则化或其他模型时也不能机械套用。
调整后的决定系数在
其中
普通
2.2 二分类混淆矩阵
设“正类”是任务重点关注的类别。预测结果与真实标签交叉后,可以得到四种情况:
| 预测结果 / 真实情况 | 实际正类 | 实际负类 |
|---|---|---|
| 预测为正类 | TP(真正例) | FP(假正例) |
| 预测为负类 | FN(假负例) | TN(真负例) |
- TP(True Positive):实际为正,预测也为正;
- FP(False Positive):实际为负,却预测为正,也叫误报;
- FN(False Negative):实际为正,却预测为负,也叫漏报;
- TN(True Negative):实际为负,预测也为负。
所有后续指标的分母都要先看清楚是在“预测结果”一侧,还是在“真实标签”一侧。
2.3 Precision 与 Recall
Precision(精确率、查准率)定义为:
它回答的问题是:
在所有被模型预测为正类的样本中,有多少确实是正类?
Recall(召回率、查全率)定义为:
它回答的问题是:
在所有实际为正类的样本中,有多少被模型成功找出来?
按分母的来源可以区分:
| 指标 | 分母 | 关注的问题 | 主要惩罚的错误 |
|---|---|---|---|
| Precision | 预测为正的样本中有多少真正为正 | FP,误报 | |
| Recall | 实际正类中有多少被识别出来 | FN,漏报 |
错误类型与指标的直接关系
在其他计数近似不变时,可以用下面的关系快速判断错误类型主要影响哪个指标:
| 错误情况 | 混淆矩阵项 | 主要影响 |
|---|---|---|
| 负样本被错判为正样本(误报) | ||
| 正样本被错判为负样本(漏报) |
错误与指标速记
- 误报多(
多)→ Precision 低。 - 漏报多(
多)→ Recall 低。
FP 和 FN 也会影响 Accuracy、F1 等其他指标;这里的“直接关系”是指从 Precision 和 Recall 的分母可以最直接地看出对应影响。
Precision 与 Recall 计算示例
实际有
这两个数值不同,是因为它们的分母不同:Precision 以“预测为正”为分母,Recall 以“实际为正”为分母。
2.4 Accuracy、Specificity 与 F1
为了完整描述分类性能,还可以使用:
其中 Specificity(特异度、真负率)衡量实际负类被正确识别的比例。Precision 和 Recall 的调和平均是 F1 分数:
记
F1 是 Precision 与 Recall 的调和平均,只有二者都较高时才会较高;如果其中一个指标很低,F1 也会受到明显影响。
Micro-F1、Macro-F1 与 Weighted-F1
在多分类任务中,可以把每个类别分别视为“一类对其余类别”的二分类问题。记第
这里的“普通 F1”通常指二分类中指定正类的 F1,或多分类中某一个类别的 F1。它只描述指定类别或当前类别的 Precision 与 Recall;在多分类任务中,单独写“F1”并不能说明是否做了跨类别聚合,必须明确 binary、micro、macro 或 weighted 等统计口径。
Micro-F1 会先把所有类别的
因此,Micro-F1 不是先算每个类别的 F1 再求平均,而是先汇总样本级的混淆矩阵统计量。样本数较多的类别通常会对结果产生更大影响,少数类表现很差时可能被多数类的良好表现掩盖。
Macro-F1 先计算每个类别的 F1,再做简单平均:
其中每个类别权重相同,因此 Macro-F1 更能反映少数类是否也获得了较好的识别效果。Weighted-F1 则按照每个类别在真实标签中的样本数加权:
其中
| 指标 | 计算方式 | 类别权重与典型含义 |
|---|---|---|
| 普通/单类 F1 | 对指定正类或某一个类别计算 Precision 与 Recall 的调和平均 | 只反映指定类别,需要明确正类定义 |
| Micro-F1 | 先汇总所有类别的 | 每个样本级决策贡献相同,大类别通常影响更大 |
| Macro-F1 | 先计算每个类别的 F1,再做算术平均 | 每个类别权重相同,更关注类别间是否均衡 |
| Weighted-F1 | 先计算每个类别的 F1,再按真实样本数加权平均 | 大类别权重更大,少数类影响可能被稀释 |
对于单标签多分类任务,如果所有类别都参与统计且每个样本只有一个真实类别和一个预测类别,则:
原因是每个样本只贡献一次预测为正和一次实际为正的计数,汇总后预测正类总数和实际正类总数都等于
类别不平衡下的 Micro-F1 与 Macro-F1 示例
类别 A 有
| 统计方式 | 结果示意 |
|---|---|
| Micro-F1 | 等于 Accuracy,即 |
| Macro-F1 | A 类 F1 约为 |
当某个类别没有真实正例或没有预测正例时,该类别的 Precision、Recall 或 F1 可能遇到分母为零;实际使用工具时还要确认 zero_division 等处理约定,并同时报告各类别的 support。
Micro-F1 与 Macro-F1 速记
Micro:先汇总再计算,大类或多数样本影响更大;Macro:先按类别计算再平均,每个类别权重相同;Weighted:按各类真实样本数加权。
当正负类分布严重不平衡时,Accuracy 可能被大量负类样本“抬高”,此时通常需要同时查看 Precision、Recall、F1、Specificity 或其他适合不平衡数据的指标。
基准率、后验概率与误报规模
在极端类别不平衡任务中,需要区分“事件本身有多常见”和“模型发出阳性预测后事件有多可能发生”。设
| 概率 | 含义 |
|---|---|
| 先验概率或基准率;观察模型结果前,样本属于正类的概率 | |
| 真正率 TPR/Recall;实际正类被预测为正类的比例 | |
| 假正率 FPR;实际负类被误判为正类的比例 | |
| 看到模型预测为正类后,样本真正为正类的后验概率,也就是正类 Precision/PPV |
正类预测后的可信度由贝叶斯公式决定:
因此,不能把
对总样本数为
这也给出了 FPR 的数量解释:如果有
极端不平衡下的数量示例
以正类基准率
| 项目 | 计算 | 结果 |
|---|---|---|
| 实际正类 | ||
| 实际负类 | ||
| 真正例 TP | ||
| 假正例 FP | ||
| 预测为正类 | ||
| Precision | 约 |
虽然 TPR 很高、FPR 只有
基准率速记
先看正类基准率,再用贝叶斯公式判断阳性预测的可信度;负类很多时,较小的 FPR 也可能产生大量 FP。
2.5 分类阈值与 Precision-Recall 权衡
概率分类器通常在阈值
降低阈值后,模型会把更多样本判为正类。通常会减少漏掉正类的情况,使 Recall 上升,但也可能增加误报,使 Precision 下降。提高阈值则通常使模型只保留更有把握的正类预测,Precision 可能上升,但 Recall 可能下降。
这种关系是实际调节阈值时常见的 trade-off,并不是对每一个数据集都严格保证一个指标上升、另一个指标必然下降。阈值应根据错误代价选择:
- 漏掉正类的代价很高时,通常更重视 Recall,例如疾病筛查、危险行为预警;
- 误报的代价很高时,通常更重视 Precision,例如人工审核资源有限的告警系统;
- 希望兼顾二者时,可以使用 F1 或在验证集上选择合适的工作点。
因此,Precision 和 Recall 不能只背公式,还要先明确“预测为正”与“实际为正”分别对应哪一侧:
Precision 与 Recall 速记
- Precision:预测为正的样本中,正的有多少。
- Recall:实际为正的样本中,找出的有多少。
2.6 ROC-AUC 与类别不平衡
ROC 曲线描述分类器在不同阈值下的真正率(TPR)和假正率(FPR):
其中 TPR 也就是 Recall,表示实际正类中被找出的比例;FPR 表示实际负类中被误判为正类的比例。不断改变分类阈值,就可以得到一系列
ROC-AUC(ROC 曲线下面积,通常简称 AUC)不固定在某一个阈值上,而是综合考察模型在各种阈值下区分正负样本的能力。它也可以理解为:随机抽取一个正样本和一个负样本时,模型给正样本的分数高于负样本的概率:
如果考虑分数相同的情况,平局通常按半个正确排序处理。一般可以这样解释:
| ROC-AUC 数值 | 常见含义 |
|---|---|
| 完美区分正负样本 | |
| 与随机排序接近 | |
| 小于 | 排序方向可能反了,反向使用分数可能优于当前结果 |
ROC-AUC 的 TPR 和 FPR 分别在真实正类和真实负类内部计算,因此改变正负样本的总体比例时,它通常不像 Accuracy 那样剧烈变化。
注意
ROC-AUC 对类别不平衡只是相对不敏感;极端不平衡时仍需结合 PR-AUC 和具体阈值指标。
类别不平衡下的 Accuracy 示例
数据中有
但异常类的召回率为:
模型一个异常样本都没有找出来,Accuracy 却看起来很高。这说明在类别严重不平衡时,Accuracy 很容易被多数类主导。
| 指标 | 类别不平衡下的典型表现 |
|---|---|
| Accuracy | 容易被多数类样本抬高,可能掩盖少数类完全失效 |
| Precision | 会受到正类基准比例影响,不能只看 ROC-AUC 代替 |
| Recall | 关注正类覆盖率,分母只包含实际正类 |
| ROC-AUC | 相对不依赖正负类总体比例,衡量整体排序区分能力 |
| PR-AUC | 在极端少数类问题中通常更关注正类识别质量,常需重点查看 |
需要注意,ROC-AUC 评价的是模型分数的整体排序能力,不保证某一个实际部署阈值下的 Precision 或 Recall 一定满足要求。对于欺诈检测、罕见疾病筛查等正类极少的任务,除了 ROC-AUC,还应重点查看 PR 曲线、PR-AUC、Precision、Recall 以及选定阈值下的混淆矩阵。此时 PR-AUC 往往比 ROC-AUC 更能反映模型对少数正类的识别质量。
类别不平衡速记
Accuracy 容易虚高;ROC-AUC 通常相对更稳健,极端不平衡时还要结合 PR-AUC。
但在极端不平衡场景中,不能只报告 AUC,应该结合 PR-AUC 和具体工作点指标。
2.7 无监督聚类评估
当数据没有真实类别标签时,不能直接使用 Accuracy 判断聚类是否正确,因为没有“真实类别”可以与聚类结果逐样本对照。此时通常使用聚类内部指标,从簇内紧密程度和簇间分离程度评价结果。内部指标不需要真实标签,但通常依赖距离度量和数据表示方式。
轮廓系数 Silhouette Coefficient
对样本
样本
整体轮廓系数通常取所有样本
- 接近
:样本与本簇更接近,与其他簇分离较好; - 接近
:样本位于簇边界附近,簇之间可能有重叠; - 小于
:样本可能更接近其他簇,聚类分配可能不合理。
轮廓系数越大通常越好,但它偏好形状较规则、分离较明显的簇,不能脱离距离度量和业务目标单独决定簇数。
Davies-Bouldin Index
Davies-Bouldin Index(DBI)比较簇内离散程度与簇间距离。记
DBI 对每个簇取与其他簇的最大相似度,再对所有簇求平均:
DBI 越小越好,理想情况下接近
Calinski-Harabasz Index
Calinski-Harabasz Index(CH)比较类间离散度与类内离散度。若
CH 越大越好,表示簇间差异相对更大、簇内离散程度相对更小。它和 Silhouette、DBI 一样,属于不依赖真实标签的内部评估指标。
| 聚类指标 | 主要衡量内容 | 趋势 |
|---|---|---|
| Silhouette(轮廓系数) | 簇内紧密性与最近其他簇之间的分离程度 | 越大越好,范围通常为 |
| Davies-Bouldin Index(DBI) | 簇内离散程度与簇间距离的相对关系 | 越小越好,理想情况下接近 |
| Calinski-Harabasz Index(CH) | 类间离散度与类内离散度之比 | 越大越好 |
| Accuracy | 预测类别与真实类别的一致程度 | 需要真实标签,不属于无标签聚类的内部指标 |
即使拥有真实标签,也不能直接把聚类编号与类别编号逐项比较,因为聚类标签的编号本身没有语义顺序;若要使用 Accuracy,至少需要先进行类别编号的最佳匹配。实际聚类评估还可以使用需要真实标签的外部指标,例如 ARI 或 NMI。
无监督聚类指标速记
没有真实标签时看内部指标:轮廓系数越大越好、CH 越大越好、DBI 越小越好;口诀是“轮廓大、CH 大、DB 小”。
2.8 代码生成评估:Pass@k
Pass@k(也写作 pass@k)衡量一道题生成
这里的
实际评测时,通常先为一道题生成
其中:
:为该题生成的候选总数; :其中通过测试的候选数; :评估时允许选取的候选数,通常要求 。
分式
表示随机选择
Pass@3 计算示例
当
这表示从 10 个候选中随机检查 3 个时,至少有一个通过测试的估计概率约为
因此 Pass@1 只允许检查一个候选,Pass@5 则允许检查五个完整候选;只要其中一个通过,当前题目在 Pass@5 下就算成功。
| 概念 | 发生在哪个阶段 | |
|---|---|---|
| Pass@k | 评估阶段,检查多个完整候选答案 | 每道题允许尝试的候选答案数量 |
| Top-k sampling | 解码阶段,生成每一个 token | 每一步从概率较高的 |
Pass@k 与 Top-k sampling 的
还要注意,Pass@k 中的“通过”受测试集覆盖范围影响:通过测试不等于在所有未测试场景下都绝对正确。报告该指标时,应同时说明题目集合、候选生成数量、评测测试用例和采样设置。
Pass@k 速记
Pass@k:每道题生成