首页
学习
活动
专区
圈层
工具
发布

分类模型校准:ROC-AUC不够?用ECE/pMAD评估概率质量

如果一个项目的核心不是分类准确率,而是概率估计的质量。换句话说,需要的是一个校准良好的模型。这里校准的定义是:如果模型给一批样本都预测了25%的正例概率,那这批样本中实际的正例比例应该接近25%。这就是校准。

解决这个校准问题单看ROC-AUC不够,要用Brier score或者Log-loss来保证校准质量。

我们先介绍一下我们一般使用的的几个指标:

ROC-AUC衡量的是模型区分正负样本的排序能力,跟预测概率的绝对值无关。

Brier score本质上就是预测概率的均方误差:

brier_score=np.mean((y_proba-y_true) **2)

Log-loss则是从似然的角度评估概率质量:

log_loss=-np.mean(y_true*np.log(y_proba) + (1-y_true) *np.log(1-y_proba))

这里用PyCaret的Bank数据集做演示:随机抽取100组不同的特征子集,每组特征分别训练4种模型(Logistic Regression、Decision Tree、Random Forest、LightGBM),得到400个候选模型。所有指标都在独立的测试集上计算。

校准图的可视化逻辑

评估校准最直观的方式是画校准图。方法是把预测概率分成若干区间,每个区间内比较平均预测概率(x轴)和实际正例比例(y轴)。

随机挑一个模型,看看它的校准图长什么样。下面同时画出预测概率的分布直方图。

顶部:校准图。底部:预测概率直方图。

完美校准的模型,曲线应该贴着45度对角线。比如某个区间平均预测概率是25%,那这个区间里实际正例比例也该是25%。曲线偏离对角线越远说明校准越差。

ECE:从校准图衍生的量化指标

光看图不够还需要一个数值指标。Expected Calibration Error (ECE)正是从校准图直接推导出来的。

ECE衡量的就是校准曲线上各点偏离45度线的程度。

假设有这些量:

proba_means:各区间的平均预测概率

y_means:各区间的实际正例比例

counts:各区间的样本数

ECE的计算就是加权平均的绝对偏差:

ece=np.sum(np.abs((proba_means-y_means) *counts)) /np.sum(counts)

ECE的优点是概念清晰,可以直接测量校准误差。不像Brier score或Log-loss它们在评估校准的同时还混杂了其他因素。而且ECE没有对数没有平方,就是绝对误差的平均。

既然主要关心校准,那能不能直接用ECE来选模型,不看其他指标?

ECE的局限性

把400个模型按ECE排序,最小的那个ECE只有0.21%,看起来完美。但是看其他指标就不对了。ROC-AUC只有54%,这基本上是等于随机猜测。

这就很奇怪了,怎么会出现校准极好(ECE 0.21%)但排序能力极差(ROC-AUC 54%)的模型?

把这个模型(记为Model B)的校准图跟前面那个模型(Model A)对比一下。

Model B的校准接近完美,原因是它给几乎所有样本预测了相同的概率。实际上就是在重复数据集的基准率。

如果数据集10%是正例,一个永远预测10%的模型当然是完美校准的。但是这个模型没有卵用,因为它根本区分不了不同的样本。

所以问题清楚了,需要模型同时满足两点:

概率校准准确

概率有区分度

ECE能评估第一点,但会完全忽略了第二点,所以这时就需要补充一个衡量概率区分度的指标。

pMAD:概率多样性的度量

有用的模型必须输出多样化的概率。Mean Absolute Deviation (MAD)可以量化这种多样性,它是各样本预测概率相对均值的平均偏差:

mad=np.mean(np.abs(y_proba-np.mean(y_proba))

这个指标只依赖预测概率本身,跟真实标签无关所以记为pMAD

虽然也可以用标准差,但pMAD跟ECE在概念上更一致,因为都是基于绝对差异,便于对比。

现在用ECE和pMAD同时评估Model A和Model B:

Model A和Model B的校准图对比,包含ECE和pMA,这下就合理了。

Model B确实比Model A校准得更好,但代价是预测概率几乎没有区分度:pMAD只有1.4%,而Model A是9.5%。

两个模型各有问题:

Model A校准不足

Model B区分度不足

那如何在需要在校准和区分度之间找到平衡点呢?

ECE-pMAD二维评估空间

用散点图展示400个模型在ECE和pMAD两个维度上的分布。

理想的模型应该是低ECE、高pMAD,也就是图的右下角区域。

两个指标比一个好,但也带来新问题:更没法简单地给模型排序了。这时候就需要引入另外一个概念帕累托前沿。

帕累托最优前沿

最优前沿(optimal frontier)定义为:在这条线上的模型,不存在其他模型同时拥有更低的ECE和不低于它的pMAD。

400个模型中只有14个在前沿上,其余386个都被被其他支配了。

前沿模型的特征分析

我们在前沿上挑3个模型看看:

这里就发现了一个有个有意思的规律:特征数量越多,pMAD越高。这符合我们的理解,更多特征意味着更多区分样本的依据。但问题是pMAD增加往往伴随着ECE的上升,也就是校准变差。

看看这3个模型的校准图就能理解原因:

概率分布越分散,ECE就容易增大。但是其实这不代表模型校准真的很差,而是评估方式的问题。

ECE/pMAD比值:综合评估指标

既然目标是低ECE和高pMAD,一个非常自然的想法是看ECE/pMAD比值。这个比值可以理解为"每单位区分度付出的校准误差代价"。我们需要要最小化的应该是这个比值而不是原始ECE。

所以可以按以下三种策略各选一个最优模型:

"最佳ROC":ROC-AUC最高的模型

"最佳Brier":Brier score和Log-loss最低的模型(在本例中二者一致)

"最佳ECE/pMAD":ECE/pMAD比值最低的模型

三个模型的pMAD相近,但ECE差异明显。而且从12个特征增加到14个,ROC-AUC提升了,但校准变差了。

个人判断是牺牲少量特征换取更稳定的概率估计是值得的

对比ROC-AUC的话最佳校准模型(ECE/pMAD最优)达到90.5%,而ROC最优的也就92.5%。为了校准质量放弃这点ROC是完全可以接受的。

通过校准图一对比就很清楚了,ECE/pMAD最优的模型(第三个)校准质量明显更好。这里用ECE/pMAD比值来筛选,但不是所有情况都适用。另外一种思路是先设定pMAD的最低阈值(比如这个例子里可以定13%或14%),然后在满足阈值的模型里选ECE最小的。

总结

模型概率的可靠性在很多实际场景中至关重要,尤其是当预测结果会影响决策时。ROC-AUC只能评估排序能力,评估校准需要用ECE。但是单用ECE还不够,因为它无法区分"真校准"和"无区分度"。所以需要同时跟踪pMAD来评估概率的多样性。

最优模型应该在校准和区分度之间取得平衡。可以考虑用ECE/pMAD比值,或者先设定pMAD下限再优化ECE。具体用哪种策略,取决于业务场景对这两个维度的实际需求。

本文的完整代码:

https://github.com/smazzanti/post_it_took_me_6_years_to_find_the_best_metric_for_classification_models/blob/main/post_it_took_me_6_years_to_find_the_best_metric_for_classification_models.ipynb

作者:Samuele Mazzanti

点个在看你最好看!

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OvDYyfrSJXQoxJ-k-wJI-4Rg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。
领券