作者|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损失定义为:
-
在微平均法中,将系统中不同集合的真正例、假正例和假反例进行汇总,然后应用它们得到统计数据。
-
在宏平均法中,取不同集合上系统的精度和召回率的平均值
如果存在类别不平衡问题,则采用微平均法。
参考:
- https://classeval.wordpress.com/simulation-analysis/roc-and-precision-recall-with-imbalanced-datasets/
- https://en.wikipedia.org/wiki/Precision_and_recall
- https://www.sciencedirect.com/science/article/pii/S0306457309000259
- https://stats.stackexchange.com/questions/11859/what-is-the-difference-between-multiclass-and-multilabel-problem
- https://datascience.stackexchange.com/questions/15989/micro-average-vs-macro-average-performance-in-a-multiclass-classification-settin/16001
欢迎关注磐创AI博客站:
http://panchuang.net/
sklearn机器学习中文官方文档:
http://sklearn123.com/
欢迎关注磐创博客资源汇总站:
http://docs.panchuang.net/
原创文章,作者:磐石,如若转载,请注明出处:https://panchuang.net/2020/10/19/%e6%9c%ba%e5%99%a8%e5%ad%a6%e4%b9%a0%e6%a8%a1%e5%9e%8b%e7%9a%84%e5%ba%a6%e9%87%8f%e9%80%89%e6%8b%a9%e4%ba%8c/