[机器学习速成课程] 分类 (Classification)-学习笔记

准确率

准确率是一个用于评估分类模型的指标。通俗来说,准确率是指我们的模型预测正确的结果所占的比例。正式点说,准确率的定义如下:

[机器学习速成课程] 分类 (Classification)-学习笔记

对于二元分类,也可以根据正类别和负类别按如下方式计算准确率:

[机器学习速成课程] 分类 (Classification)-学习笔记

其中,TP (True positive)= 真正例,TN(True negative) = 真负例,

         FP(False positive) = 假正例,FN(False negative) = 假负例。

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

真正例 (TP):
  • 真实情况:恶性
  • 机器学习模型预测的结果:恶性
  • TP 结果数:1
假正例 (FP):
  • 真实情况:良性
  • 机器学习模型预测的结果:恶性
  • FP 结果数:1
假负例 (FN):
  • 真实情况:恶性
  • 机器学习模型预测的结果:良性
  • FN 结果数:8
真负例 (TN):
  • 真实情况:良性
  • 机器学习模型预测的结果:良性
  • TN 结果数:90
[机器学习速成课程] 分类 (Classification)-学习笔记
准确率为 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 个预测正确)。换言之,我们的模型与那些没有预测能力来区分恶性肿瘤和良性肿瘤的模型差不多。

当您使用分类不平衡的数据集(比如正类别标签和负类别标签的数量之间存在明显差异)时,单单准确率一项并不能反映全面情况。

在下一部分中,我们将介绍两个能够更好地评估分类不平衡问题的指标:精确率和召回率。


精确率和召回率

精确率

精确率指标尝试回答以下问题:

在所有正类别样本中,被正确识别为正类别的比例是多少?

精确率的定义如下:

[机器学习速成课程] 分类 (Classification)-学习笔记

让我们来计算一下上一部分中用于分析肿瘤的机器学习模型的精确率:

真正例 (TP):1 假正例 (FP):1
假负例 (FN):8 真负例 (TN):90

[机器学习速成课程] 分类 (Classification)-学习笔记

该模型的精确率为 0.11(个人认为:原文错误,应该为0.5),也就是说,该模型在预测恶性肿瘤方面的正确率是 50%。

召回率

召回率尝试回答以下问题:

在所有正类别样本中,被正确识别为正类别的比例是多少?

从数学上讲,召回率的定义如下:

[机器学习速成课程] 分类 (Classification)-学习笔记

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

真正例 (TP):1 假正例 (FP):1
假负例 (FN):8 真负例 (TN):90

[机器学习速成课程] 分类 (Classification)-学习笔记

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


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

要全面评估模型的有效性,必须同时检查精确率和召回率。遗憾的是,精确率和召回率往往是此消彼长的情况。也就是说,提高精确率通常会降低召回率值,反之亦然。

[机器学习速成课程] 分类 (Classification)-学习笔记

[机器学习速成课程] 分类 (Classification)-学习笔记


ROC 曲线

ROC 曲线接收者操作特征曲线)是一种显示分类模型在所有分类阈值下的效果的图表。该曲线绘制了以下两个参数:

  • 真正例率(被识别为正类的正类(TP),占所有正类(TP+FN)的比例。越高越好。
  • 假正例率(被识别为正类的负类(FP),占所有负类(FP+TN)的比例。越低越好。

真正例率 (TPR,True positive rate) 是召回率的同义词,因此定义如下:

[机器学习速成课程] 分类 (Classification)-学习笔记

假正例率 (FPR,False positive rate) 的定义如下:

[机器学习速成课程] 分类 (Classification)-学习笔记

ROC 曲线用于绘制采用不同分类阈值时的 TPR 与 FPR。降低分类阈值会导致将更多样本归为正类别,从而增加假正例和真正例的个数。

目标:追求高TPR、低FPR的最佳平衡点

[机器学习速成课程] 分类 (Classification)-学习笔记

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

曲线下面积表示“ROC 曲线下面积”。AUC(Area Under Curve):ROC曲线下的面积。

[机器学习速成课程] 分类 (Classification)-学习笔记

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

[机器学习速成课程] 分类 (Classification)-学习笔记

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

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

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

  • 曲线下面积的尺度不变(不太明白,尺度指的是什么?)。它测量预测的排名情况,而不是测量其绝对值。
  • 曲线下面积的分类阈值不变。它测量模型预测的质量,而不考虑所选的分类阈值。

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

  • 并非总是希望尺度不变。 例如,有时我们非常需要被良好校准的概率输出,而曲线下面积无法告诉我们这一结果。

  • 并非总是希望分类阈值不变。 在假负例与假正例的代价存在较大差异的情况下,尽量减少一种类型的分类错误可能至关重要。例如,在进行垃圾邮件检测时,您可能希望优先考虑尽量减少假正例(被判断为正类的负类,被当成垃圾邮件的正常邮件)(即使这会导致假负例(被判断为负类的正类,被当成正常邮件的垃圾邮件)大幅增加)。对于此类优化,曲线下面积并非一个实用的指标。