高度不平衡数据的分类/评估指标

机器算法验证 分类 不平衡类 精确召回 科恩斯-卡帕 模型评估
2022-02-01 20:53:38

我处理欺诈检测(类似信用评分)问题。因此,欺诈性和非欺诈性观察之间存在高度不平衡的关系。

http://blog.revolutionanalytics.com/2016/03/com_class_eval_metrics_r.html很好地概述了不同的分类指标。Precision and Recallkappa两者似乎都是不错的选择:

证明此类分类器结果的一种方法是将它们与基线分类器的结果进行比较,并证明它们确实比随机机会预测更好。

据我了解,kappa这里可能是更好的选择,因为考虑了随机机会。科恩的简单英语中,我了解到kappa涉及信息增益的概念:

[...] 80% 的观察准确度与 75% 的预期准确度相比 50% [...]

因此,我的问题是:

  • 假设它kappa是更适合这个问题的分类指标是否正确?
  • 简单地使用是否可以kappa防止不平衡对分类算法的负面影响?是否仍然需要重新(向下/向上)采样或基于成本的学习(参见http://www.icmc.usp.br/~mcmonard/public/laptec2002.pdf)?
3个回答

是的,您对 Kappa 的假设似乎是正确的。Kappa 作为单一的标量指标主要是优于其他单一的标量指标(如准确性),这不会反映较小类的预测性能(被任何更大类的性能所掩盖)。正如您所指出的,Kappa 更优雅地解决了这个问题。

使用像 Kappa 这样的指标来衡量你的表现并不一定会增加你的模型对数据的拟合程度。您可以使用许多指标来衡量任何模型的性能,但是模型如何拟合数据是使用其他参数(例如超参数)来确定的。因此,您可以使用例如 Kappa 来为您非常不平衡的问题在多种选择中选择最适合的模型类型和超参数化 - 但仅计算 Kappa 本身不会改变您的模型如何适合您的不平衡数据。

对于不同的指标:除了 Kappa 和准确率/召回率,还要看一下真阳性率和真阴性率 TPR/TNR,以及 ROC 曲线和曲线下面积 AUC。其中哪些对您的问题有用将主要取决于您的目标的细节。例如,TPR/TNR 和精确度/召回率中反映的不同信息:您的目标是实际检测到高比例的欺诈行为,高比例的合法交易被检测到,和/或最小化比例所有警报中的误报(您自然会因此类问题“大量”出现)?

对于上/下采样:我认为“如果需要这些”没有规范的答案。它们更多是解决您的问题的一种方式。从技术上讲:是的,您可以使用它们,但要小心使用它们,尤其是上采样(您最终可能会在没有注意到的情况下创建不切实际的样本) - 并注意将这两个类别的样本频率更改为“在野外”不现实的东西" 也可能对预测性能产生负面影响。至少最终的、保留的测试集应该再次反映样本的真实频率。底线:我已经看到两种情况,做和不做上采样/下采样会导致更好的最终结果,所以这是你可能需要尝试的东西(但不要操纵你的测试集!) .

除了已经在其他答案中讨论过的 AUC 和 Kohonen 的 kappa 之外,我还想添加一些我发现对不平衡数据有用的指标。它们都与精度召回率有关。因为通过平均这些你得到一个公制的称重s 和两种类型的错误 (FFñ):

  • F1 分数,即准确率和召回率调和平均值
  • G-measure,即精度召回率几何平均值与 F1 相比,我发现它对于不平衡数据要好一些。
  • Jaccard 指数,您可以将其视为/(+F+Fñ). 这实际上是最适合我的指标。

注意:对于不平衡的数据集,最好让你的指标是宏观平均的

对于不平衡的数据集,Average Precision 指标有时是 AUROC 的更好替代方案。AP分数是精确召回曲线下的面积。

这是一些代码的讨论(Python)

这是一张

另请参阅 Peter Flach 的Precision-Recall-Gain 曲线,以及关于 AP 曲线缺点的讨论。