“好”分类器破坏了我的 Precision-Recall 曲线。发生了什么?

机器算法验证 分类 支持向量机 朴素贝叶斯 精确召回
2022-03-13 22:41:58

我正在处理不平衡的数据,其中每个 class=1 大约有 40 个 class=0 案例。我可以使用单个特征合理区分类别,并在 6 个特征和平衡数据上训练朴素贝叶斯和 SVM 分类器产生更好的区分(下面的 ROC 曲线)。

在此处输入图像描述

那很好,我认为我做得很好。然而,这个特定问题的惯例是在精度水平上预测命中,通常在 50% 到 90% 之间。例如“我们以 90% 的精度检测到一些命中。” 当我尝试这个时,我可以从分类器中获得的最大精度约为 25%(黑线,下方的 PR 曲线)。

我可以将其理解为类不平衡问题,因为 PR 曲线对不平衡很敏感,而 ROC 曲线则不敏感。但是,这种不平衡似乎不会影响单个特征:我可以使用单个特征(蓝色和青色)获得相当高的精度。

在此处输入图像描述

我不明白发生了什么事。如果公关领域的一切都表现不佳,我可以理解,因为毕竟数据非常不平衡。如果分类器在 ROCPR 空间中看起来很糟糕,我也可以理解——也许它们只是糟糕的分类器。但是,按照 ROC 的判断,如何使分类器变得更好,而按照 Precision-Recall 的判断,分类器变得更糟

编辑:我注意到在低 TPR/Recall 区域(TPR 介于 0 和 0.35 之间),各个特征在 RO​​C 和 PR 曲线中始终优于分类器。也许我的困惑是因为 ROC 曲线“强调”了高 TPR 区域(分类器做得很好),而 PR 曲线强调了低 TPR (分类器更差)。

编辑 2:对非平衡数据进行训练,即与原始数据具有相同的不平衡,使 PR 曲线恢复生机(见下文)。我猜我的问题是不正确地训练分类器,但我不完全理解发生了什么。 在此处输入图像描述

3个回答

我发现,当类中度不平衡(即不低于 100:1)与阈值不变度量(如 AUC)结合使用时,使用下采样/上采样并没有令人难以置信的好处。采样对 F1 分数和准确性等指标的影响最大,因为采样人为地将阈值移动到更接近 ROC 曲线上可能被视为“最佳”位置的位置。您可以在插入符号文档中看到一个示例

我不同意@Chris,因为拥有良好的 AUC 比精确更好,因为它与问题的背景完全相关。此外,当类不平衡时,具有良好的 AUC 并不一定转化为良好的 Precision-Recall 曲线。如果模型显示出良好的 AUC,但早期检索仍然很差,那么 Precision-Recall 曲线将有很多不足之处。您可以在这个对类似问题的回答中看到一个很好的例子。出于这个原因,Saito 等人。当您的类别不平衡时,建议使用 Precision-Recall 曲线下的面积而不是 AUC。

评估模型的最佳方法是查看它将如何在现实世界中使用并开发成本函数。

顺便说一句,例如,过分强调 r 平方,但许多人认为这是一个无用的统计数据。因此,不要挂断任何一项统计数据。

我怀疑您的回答是准确性悖论的一个例子。

https://en.m.wikipedia.org/wiki/Accuracy_paradox

召回率(也称为敏感性,也称为真阳性率)是检索到的相关实例的比例。

tpr = tp / (tp + fn )

精度(又名阳性预测值)是检索到的相关实例的比例。

ppv = tp / (tp + fp)

假设您有一组非常不平衡的 99 个正面和一个负面。

假设一个模型被训练,其中模型说一切都是积极的。

tp = 99 fp = 1 ppv 变为 0.99

尽管具有“良好”的阳性预测值,但显然是一个垃圾模型。

我建议通过过采样或欠采样来构建更平衡的训练集。建立模型后,使用保持原始不平衡的验证集并在此基础上构建性能图表。

我可以将其理解为类不平衡问题,因为 PR 曲线对不平衡很敏感,而 ROC 曲线则不敏感。但是,这种不平衡似乎不会影响单个特征:我可以使用单个特征(蓝色和青色)获得相当高的精度。

我可以指出,这实际上是相反的:ROC 对类不平衡很敏感,而 PR 在处理倾斜的类分布时更健壮。https://www.biostat.wisc.edu/~page/rocpr.pdf

他们还表明,“优化 ROC 曲线下面积的算法并不能保证优化 PR 曲线下面积。”