准确率&&精确率&&召回率&&ROC

分类

逻辑回归返回的是概率。您可以“原样”使用返回的概率(例如,用户点击此广告的概率为 0.00023),也可以将返回的概率转换成二元值(例如,这封电子邮件是垃圾邮件)。为了将逻辑回归值映射到二元类别,您必须指定分类阈值(也称为判定阈值)。如果值高于该阈值,则表示“垃圾邮件”;如果值低于该阈值,则表示“非垃圾邮件”。人们往往会认为分类阈值应始终为 0.5,但阈值取决于具体问题,因此您必须对其进行调整

选定分类阈值之后, 如何评估相应模型的质量呢?,我们需要一些新指标,回归指标并不够用。

让我们来试着计算一下以下模型的准确率,该模型将 100 个肿瘤分为恶性 (正类别)或良性(负类别):

《准确率&&精确率&&召回率&&ROC》

准确率

准确率是指我们的模型预测正确的结果所占的比例

《准确率&&精确率&&召回率&&ROC》

准确率为 0.91,即 91%(总共 100 个样本中有 91 个预测正确)。这表示我们的肿瘤分类器在识别恶性肿瘤方面表现得非常出色,对吧?

实际上,只要我们仔细分析一下正类别和负类别,就可以更好地了解我们模型的效果。

在 100 个肿瘤样本中,91 个为良性(90 个 TN 和 1 个 FP),9 个为恶性(1 个 TP 和 8 个 FN)。

在 91 个良性肿瘤中,该模型将 90 个正确识别为良性。这很好。不过,在 9 个恶性肿瘤中,该模型仅将 1 个正确识别为恶性。这是多么可怕的结果!9 个恶性肿瘤中有 8 个未被诊断出来!

虽然 91% 的准确率可能乍一看还不错,但如果另一个肿瘤分类器模型总是预测良性,那么这个模型使用我们的样本进行预测也会实现相同的准确率(100 个中有 91 个预测正确)。换言之,我们的模型与那些没有预测能力来区分恶性肿瘤和良性肿瘤的模型差不多。

当您使用分类不平衡的数据集(比如正类别标签和负类别标签的数量之间存在明显差异)时,单单准确率一项并不能反映全面情况,准确率指标的效果就会大打折扣。假设有一个用于预测展示广告的广告点击率的模型, 我们要尝试使用准确率指标来评估此模型的质量。对于展示广告,点击率通常为 千分之一、万分之一,甚至更低。

精确率

(所有预测为正的样本中,实际也为正的比例有多少)
在被识别为正类别的样本中,实际上确实为正类别的比例是多少?

精确率的定义如下:

《准确率&&精确率&&召回率&&ROC》

正:表示预测结果为正; 真正例TP:表示预测为正,实际也为正; 假正例FP:表示预测为正,但实际不为正
来来计算一下上一部分中用于分析肿瘤的机器学习模型的精确率:

《准确率&&精确率&&召回率&&ROC》

《准确率&&精确率&&召回率&&ROC》

该模型的精确率为 0.5,也就是说,该模型在预测恶性肿瘤方面的正确率是 50%。

召回率

(所有实际为正的样本中,预测也为正的比例有多少)
所有实际上为正类别样本中,被正确预测为正类别的比例是多少?

《准确率&&精确率&&召回率&&ROC》

让我们来计算一下肿瘤分类器的召回率:

《准确率&&精确率&&召回率&&ROC》

该模型的召回率是 0.11,也就是说,该模型能够正确识别出所有恶性肿瘤的百分比是 11%。

精确率和召回率:一场拔河比赛

要全面评估模型的有效性,必须同时检查精确率和召回率。遗憾的是,精确率和召回率往往是此消彼长的情况。也就是说,提高精确率通常会降低召回率值,反之亦然。请观察下图来了解这一概念,该图显示了电子邮件分类模型做出的 30 项预测。分类阈值右侧的被归类为“垃圾邮件”,左侧的则被归类为“非垃圾邮件”

电子邮件归类为垃圾邮件或非垃圾邮件的样本数据:

《准确率&&精确率&&召回率&&ROC》

此时的精确率为:预测为正的样本(8个TP,2个FP)中实际也为正(8个TP)的比例: 8/(2+8)=0.8
召回率:实际为正的样本(共11个TP),预测也为正(阈值右边有8个TP)的比例:8/(8+3) =0.73

此时我们提高阈值

《准确率&&精确率&&召回率&&ROC》

精确率:7/(7+1) = 0.88
召回率: 7/(7+4) = 0.64

相反,降低阈值

《准确率&&精确率&&召回率&&ROC》

精确率:9/(9+3) = 0.75
召回率: 9/(9+2) = 0.82

所以,一般来说,提高分类阈值会减少假正例,从而提高精确率。降低分类阈值会提高召回率。
他们之间的关系有点像另可错杀一千,不可放过一个坏人和另可放过一千,不可错杀一个好人的关系。

ROC 曲线

我们选择特定的分类阈值后, 精确率和召回率值便都可以确定。但我们可能无法事先得知最合适的分类阈值, 而我们仍然想知道我们的模型质量如何。合理的做法是尝试使用 许多不同的分类阈值来评估我们的模型。事实上,我们有一个指标可衡量 模型在所有可能的分类阈值下的效果。该指标称为ROC曲线,即接收者操作特征曲线。

ROC 曲线用于绘制采用不同分类阈值时精确率召回率。降低分类阈值会导致将更多样本归为正类别,从而增加假正例和真正例的个数。下图显示了一个典型的 ROC 曲线。

《准确率&&精确率&&召回率&&ROC》

为了计算 ROC 曲线上的点,我们可以使用不同的分类阈值多次评估逻辑回归模型,但这样做效率非常低。幸运的是,有一种基于排序的高效算法可以为我们提供此类信息,这种算法称为曲线下面积

曲线下面积:ROC 曲线下面积

曲线下面积表示“ROC 曲线下面积”。也就是说,曲线下面积测量的是从 (0,0) 到 (1,1) 之间整个 ROC 曲线以下的整个二维面积(参考积分学)。下图为曲线下面积(ROC 曲线下面积)。

《准确率&&精确率&&召回率&&ROC》

曲线下面积对所有可能的分类阈值的效果进行综合衡量。曲线下面积的一种解读方式是看作模型将某个随机正类别样本排列在某个随机负类别样本之上的概率。以下面的样本为例,逻辑回归预测从左到右以升序排列:

《准确率&&精确率&&召回率&&ROC》

曲线下面积表示随机正类别(绿色)样本位于随机负类别(红色)样本右侧的概率。

曲线下面积的取值范围为 0-1。预测结果 100% 错误的模型的曲线下面积为 0.0;而预测结果 100% 正确的模型的曲线下面积为 1.0。

曲线下面积因以下两个原因而比较实用:

  • 曲线下面积的尺度不变。它测量预测的排名情况,而不是测量其绝对值。(只能比较两个预测模型得分高低,不能给出模型的具体得分分数,这个分数接近于曲面积的大小,只有一个曲面完全含括另外一个曲面才能说是一个模型比另外一个模型要好)
  • 曲线下面积的分类阈值不变。它测量模型预测的质量,而不考虑所选的分类阈值(用来构造ROC曲线的分类阈值是一组所有可能被考虑的数值,并不是按需要特定的)

不过,这两个原因都有各自的局限性,这可能会导致曲线下面积在某些用例中不太实用:

  • 并非总是希望尺度不变。 例如,有时我们非常需要被良好校准的概率输出,而曲线下面积无法告诉我们这一结果。
  • 并非总是希望分类阈值不变。 在假负例与假正例的代价存在较大差异的情况下,尽量减少一种类型的分类错误可能至关重要。例如,在进行垃圾邮件检测时,您可能希望优先考虑尽量减少假正例(即使这会导致假负例大幅增加)。对于此类优化,曲线下面积并非一个实用的指标。
    原文作者:kugua233
    原文地址: https://segmentfault.com/a/1190000014829322
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞