机器学习模型的度量选择二

·  阅读 71

作者|Alvira Swalin 编译|VK 来源|Medium

本系列的第二部分主要讨论分类度量

在第一篇中,我们讨论了回归中使用的一些重要指标、它们的优缺点以及用例。这一部分将集中讨论分类中常用的度量,以及在具体的背景中应该选择哪种。

定义

在讨论每种方法的优缺点之前,我们先了解一下分类问题中使用的基本术语。如果你已经熟悉这个术语,可以跳过这个部分。

  • 召回率或TPR(真正例率):所有正例中正确识别为正例的项目数=TP/(TP+FN)
  • 特异性或TNR(真反例率):所有反例中正确识别为反例的项目数=TN/(TN+FP)
  • 精确度:在确定为正例的项目中,正确确定为正例的项目数=TP/(TP+FP)
  • 假正例率或I型错误:所有反例中被错误识别为正例的项目数=FP/(FP+TN)
  • 假反例率或II型错误:所有正例中被错误识别为反例的项目数=FN/(FN+TP)

  • 混淆矩阵

  • F1度量:精确性和召回率的调和平均值。F1 = 2*Precision*Recall/(Precision + Recall)
  • 准确率:正确分类的项目总数百分比 (TP+TN)/(N+P)

ROC-AUC评分

ROC-AUC得分的概率解释是,如果随机选择一个正案例和一个负案例,根据分类器,正案例高于负案例的概率由AUC给出。

从数学上讲,它是由灵敏度曲线(TPR)下的面积计算的。

FPR(1-特异性)。理想情况下,我们希望具有高灵敏度和高特异度,但在实际情况下,敏感性和特异度之间始终存在权衡。

ROC-AUC的一些重要特征是

  • 该值的范围可以是0到1。然而,平衡数据的随机分类器的auc得分是0.5

  • ROC-AUC评分与分类阈值集无关。F1分数不一样,在概率输出的情况下,F1分数需要一个阈值确定

Log损失

对数损失是一种精度测量,它结合了以下二进制类表达式给出的概率置信度的概念:

它考虑了你的预测的不确定性,基于它与实际标签的差异。在最坏的情况下,假设你预测的概率都是0.5。因此,对数损失将变成-log(0.5)=0.69。

因此,我们可以说,考虑到实际的概率,任何高于0.6的都是一个非常糟糕的模型。

案例1

Log损失与ROC和F1度量的比较

以案例1为例,模型1在预测绝对概率方面做得更好,而模型2预测的概率值是有序递增的。让我们用实际分数来验证一下:

如果考虑到log丢失,模型2给出的log损失最高,因为绝对概率与实际标签有很大差异。但这与F1和AUC评分完全不一致,根据该评分模型2具有100%的精确率。

此外,你可以注意,对于不同的阈值,F1得分会变化,在默认阈值为0.5时,F1更喜欢模型1而不是模型2。

从上述示例得出的推论:

  • 如果你关心绝对概率差,就用对数损失

  • 如果你只关心某一个类的预测,而不想调整阈值,那么使用AUC score

  • F1分数对阈值敏感,在比较模型之前,你需要先调整它

案例2

他们如何处理类别不平衡的情况?

这两个模型的唯一不同之处是它们对观测13和14的预测。模型1在对观测值13(标签0)进行分类方面做得更好,而模型2在对观测值14(标签1)进行分类方面做得更好。

我们的目标是看哪个模型能更好地捕捉到不平衡类分类的差异(标签1数据量少)。在欺诈检测/垃圾邮件检测这样的问题中,正例的标签总是很少,我们希望我们的模型能够正确地预测正例,因此我们有时会更喜欢那些能够对这些正例进行正确分类的模型

显然,在这种情况下,log损失是失败的,因为根据log丢失,两个模型的性能是相同的。这是因为log损失函数是对称的,并且不区分类。

F1度量和ROC-AUC评分在选择模型2方面均优于模型1。所以我们可以使用这两种方法来处理类不平衡。但我们必须进一步挖掘,看看他们对待类别不平衡的方式有哪些不同。

在第一个例子中,我们看到很少有正标签。在第二个例子中,几乎没有负标签。让我们看看F1度量和ROC-AUC如何区分这两种情况。

ROC-AUC评分处理少数负标签的情况与处理少数正标签的情况相同。这里需要注意的一件有趣的事情是,F1的分数在模型3和模型4中几乎是一样的,因为正标签的数量很大,它只关心正标签的错误分类。

从以上例子得出的推论:

  • 如果你关心的是一个数量较少的类,并且不需要管它是正是负的,那么选择ROC-AUC分数。

你什么时候会选择F1度量而不是ROC-AUC?

当你有一个数量小的正类,那么F1的得分更有意义。这是欺诈检测中的常见问题,因为正标签很少。我们可以通过下面的例子来理解这个陈述。

例如,在大小为10K的数据集中,模型(1)预测100个真正例数据中有5个正例数据,而另一个模型(2)预测100个真正例数据中的90个正例数据。显然,在这种情况下,模型(2)比模型(1)做得更好。让我们看看F1得分和ROC-AUC得分是否都能捕捉到这种差异

  • 模型(1)的F1得分=2*(1)*(0.1)/1.1 = 0.095

  • 模型(2)的F1得分= 2*(1)*(0.9)/1.9 = 0.947

是的,F1成绩的差异反映了模型的表现。

  • 模型(1)的ROC-AUC=0.5

  • 模型(2)的ROC-AUC=0.93

ROC-AUC也给模型1打了一个不错的分数,这并不是一个很好的性能指标。因此,对于不平衡的数据集,在选择roc-auc时要小心。

你应该使用哪种度量来进行多重分类?

我们还有三种类型的非二分类:

  • 多类:具有两个以上类的分类任务。示例:将一组水果图像分为以下任一类别:苹果、香蕉和桔子。
  • 多标签:将样本分类为一组目标标签。示例:将博客标记为一个或多个主题,如技术、宗教、政治等。标签是独立的,它们之间的关系并不重要。
  • 层次结构:每个类别都可以与类似的类别组合在一起,从而创建元类,这些元类又可以再次组合,直到我们到达根级别(包含所有数据的集合)。例子包括文本分类和物种分类。

在这个博客里,我们只讨论第一类。

正如你在上表中看到的,我们有两种类型的指标-微平均和宏平均,我们将讨论每种指标的利弊。多个类最常用的度量是F1度量、平均精度、log损失。目前还没有成熟的ROC-AUC多类评分。

多类的log损失定义为:

  • 在微平均法中,将系统中不同集合的真正例、假正例和假反例进行汇总,然后应用它们得到统计数据。

  • 在宏平均法中,取不同集合上系统的精度和召回率的平均值

如果存在类别不平衡问题,则采用微平均法。


参考:

  1. classeval.wordpress.com/simulation-…
  2. en.wikipedia.org/wiki/Precis…
  3. www.sciencedirect.com/science/art…
  4. stats.stackexchange.com/questions/1…
  5. datascience.stackexchange.com/questions/1…

原文链接:medium.com/usf-msds/ch…

欢迎关注磐创AI博客站: panchuang.net/

sklearn机器学习中文官方文档: sklearn123.com/

欢迎关注磐创博客资源汇总站: docs.panchuang.net/