r roc曲线 语言_11565 P-R、ROC、DET 曲线及 AP、AUC 指标全解析(上)

  机器学习中,最「简单」的一种任务就是二分类任务了。比如,说话人验证(speaker verification)就是一个二分类任务:判断一句话是否是给定说话人说的。再比如,信息检索(information retrieval)本质上也是一个二分类任务:给定关键词,判断每篇文章是否与关键词相关,并把相关结果排序返回。

  许多二分类器的原理,都是给每个样例打一个分,然后设置一个阈值,分数高于阈值的样例就被分为正类,低于阈值则被分为负类。在评价系统性能时,一般可以计算准确率(accuracy),也就是分类正确的样例在所有样例中所占的比例。当两类分布不均衡时(一般是正例远少于负例),也常常计算正类的查准率(precision)、查全率(recall),以及二者的调和平均数 F1。

  准确率、查准率、查全率、F1 这些指标,全都依赖于具体的阈值。但有时候,我们希望不把阈值固定,而是根据需求来调整。如图 0.1,把所有的样例按得分由高到低排序,得到一个有序列表(ranked list)。对于一个正常的二分类器,正例应该集中在列表的顶端,而负例应该集中在列表的底端,中间会有模糊地带。如果想追求高查准率,就可以把阈值调高,把中间地带排除出去;想追求高查全率,就可以把阈值调低,把中间地带包括进来。

ebda72bee4e6ba4cecb47a6872854ead.png
图 0.1:一个有序列表的例子。图中有 4 个正例和 5 个负例,有两对样例得分相同。

  在不固定阈值的情况下,要怎么评价一个二分类器的性能呢?这种评价,实质上就是评价上述的有序列表,能够在多大程度上把正例和负例分开。刻画正例和负例分得有多开,常常使用下面三种曲线:

  ● Precision-recall 曲线,简称 P-R 曲线;
  ● Receiver operating characteristic 曲线,简称 ROC 曲线;
  ● Detection error tradeoff 曲线,简称 DET 曲线。

为了比较不同的二分类器,也需要用单个的数值作为指标来表征一个二分类器的性能,常用的指标包括 average precision(AP)area under the curve(AUC)。如果一个任务是由多个二分类子任务组成的,也常常计算各个子任务的 AP 或 AUC 的平均值,称为 mean average precision(MAP)和 mean area under the curve(MAUC)。

  注意 AP、AUC 这类指标与准确率、F1 等指标的不同之处:准确率、F1 等依赖于阈值,刻画的是二分类器在特定工作点的性能;AP、AUC 则不依赖于阈值,刻画的是二分类器给出的有序列表的质量。

  上面提到了 P-R、ROC、DET 三种曲线,以及 AP、AUC 两种指标。它们的计算方法都不是一句话能说清楚的,这也是初学者常常迷惑和混淆的地方。这一篇以及下一篇专栏,就来详解这些曲线和指标的计算方法,以及它们之间的关系。本篇讲曲线,下篇讲指标。

一、Precision-Recall 曲线

  顾名思义,precision-recall 曲线表现的,就是查准率、查全率随阈值的变化。具体来说,它的纵轴是正类的查准率

,横轴是正类的查全率
。定义下面四个量:

  ● True positives(

):标准答案为正,系统分类也为正的样例数量;

  ● False negatives(
):标准答案为正,系统分类却为负的样例数量;

  ● False positives(
):标准答案为负,系统分类却为正的样例数量;

  ● True negatives(
):标准答案为负,系统分类也为负的样例数量;

并记正例、负例的总数为:

则 P-R 曲线的纵轴、横轴可以分别表示为:

  仍以图 0.1 中的二分类器为例,我们来画一下它的 P-R 曲线。图 1.1 列出了把阈值设在所有可能位置时,正类查准率、查全率的数值。阈值大于 0.9 时,

无意义。

cccc79317b6d42a55ffb8e98c718d0c1.png
图 1.1:阈值设在各个位置时,正类查准率 P+ 与查全率 R+ 的数值

把所有的

连成曲线,这就是 P-R 曲线:

d579a35ca3b9f3add6a5cf7a04258e32.png
图 1.2:P-R 曲线的一个例子

  正常的 P-R 曲线,会集中在图像的右上角,在这个区域,正类的查准率和查全率都高。它的右端不会到达

,而是会位于
,其纵坐标为正例在所有数据中的比例,这对应于阈值设为最低的情形。它的左端也并不在
:对于正常的二分类器,得分最高的样例应当是个正例,所以左端的坐标会是
,实际上很接近
;如果很不幸,得分最高的样例是个负例,那么左端的坐标就是
了。

  从微观上看,P-R 曲线是锯齿状的。当阈值下调,跨越一个正例时,

都会升高,产生一条向右上方的线段;当阈值跨越一个负例时,
不变,而
会减小,产生一条竖直向下的线段。图 1.2 中有一条向右下方的线段,这是由于有一正一负两个样例得分都是 0.6 产生的,这种得分相同的情况在实际中是罕见的。从宏观上看,
是鱼与熊掌不可兼得的关系,所以 P-R 曲线呈现单调下降的趋势;但越好的二分类器,其 P-R 曲线会越接近图像的右上角。

二、ROC 曲线

  ROC 曲线的全称叫 receiver operating characteristic curve。这个名字有点儿费解:怎么还跟信号接收机(receiver)有关呢?原来,ROC 曲线最早就是在二战中用来分析雷达接收机检测信号的能力的。

  ROC 的纵轴叫作 true positive rate(

),即在所有的正例中,有多大的比例被正确地分类为正例。其横轴叫作 false positive rate(
),即在所有的负例中,有多大的比例被错误地分类为正例。用上一节中定义的
,这两个轴可以表示为:

也就是说,ROC 曲线的纵轴其实就是正类的查全率,而横轴是 1 减去负类的查全率,也可以叫作负类的误查率。

  仍以图 0.1 中的二分类器为例,阈值设在各个位置时,正类查全率

与负类误查率
的数值如图 2.1 所示。注意,阈值哪怕设在得分最高的样例之上,
也都有意义(等于 0)。

231e9d43c8f1a5cd7aef90500583e51a.png
图 2.1:阈值设在各个位置时,正类查全率 TP% 与负类误查率 FP% 的数值

同样把

连成曲线,就得到了 ROC 曲线:

c57b11cfae713802b72d5355da5ea5a7.png
图 2.2:ROC 曲线的一个例子

  正常的 ROC 曲线,会集中在图像的左上角,在这个区域,正类的查准率高,负类的误查率低。它的左、右两端一定会位于

,分别对应阈值设为最高和最低的情况。从微观上看,ROC 曲线也是锯齿状的,但它的每一段都是横平竖直的(有正、负例得分相同时除外)。从宏观上看,ROC 曲线呈单调上升趋势;二分类器越好,ROC 曲线越接近图像的左上角。

  ROC 曲线跟 P-R 曲线有什么关系呢?我们发现,ROC 曲线的纵轴,恰好就是 P-R 曲线的横轴,它们都是正类的查全率

。如果把 ROC 曲线以
为中心顺时针旋转 90 度,就能让 ROC 曲线变得「像」P-R 曲线:

744da9fafaa05de56c4af04fc33d6a3c.png
图 2.3:旋转后的 ROC 曲线(右),会与 P-R 曲线(左)呈现类似的趋势

此时两条曲线都集中在图像的右上角,宏观上呈单调下降趋势。旋转后的 ROC 曲线,其纵轴的含义是

,即负例中有多大比例被正确地分类为负例,可以称为负类的查全率。而 P-R 曲线的纵轴是正类的查准率
,两条曲线只是纵轴的含义不同。

  在真实场景中,正例往往远少于负例。只要阈值不是设得极端低,一般都有

,所以
。也就是说,除了在曲线的最右端,旋转后的 ROC 曲线一般会高于 P-R 曲线。在曲线的最右端,阈值设为最低,所有样例均被分类为正例;P-R 曲线的纵坐标(正类查准率)等于正例所占比例,而旋转后的 ROC 曲线的纵坐标(负类查全率)则会下降到 0。

三、一些典型的 P-R 与 ROC 曲线

  图 1.2 和图 2.2 展示了在一个小数据集上,P-R 曲线与 ROC 曲线都长成什么样子。那么在大数据集上,两种曲线又会长成什么样呢?下面展示几种典型情况,它们能够更好地体现两条曲线的宏观特征。

3.1 随机排序的情形

  把所有的样例随机排序,可以作为二分类问题的一个 baseline。可以想象,当样例随机排序时,不管把阈值设在哪里,正类的查准率都会接近正类在所有数据中的比例(下记为

);而正类的查全率会跟负类的误查率一样高,都等于阈值上方的样例占所有数据的比例。于是,P-R 曲线将是纵坐标为
的一条横线,而 ROC 曲线将是从
的一条斜线。

  图 3.1 是把 2000 个正例和 8000 个负例随机排序后,绘制出的 P-R 曲线和 ROC 曲线,以及把 ROC 曲线顺时针旋转 90 度后的结果。除了 P-R 曲线的左端有较大波动以外,一切符合预期。

0140c992d40f74426bfa24f957b25cb8.png
图 3.1:随机排序时的 P-R 曲线与 ROC 曲线

3.2 正、负类得分呈等方差高斯分布的情形

  假设正类与负类各有 5000 个样例,且两类的得分都服从方差为 1 的高斯分布,均值之差为 2,如图 3.2:

ec5c8c79118f8f4aa7aa505666687f5a.png
图 3.2:两类得分呈等方差的高斯分布

  这是一种比较真实的场景,在此场景下的 P-R 曲线与 ROC 曲线如图 3.3。P-R 曲线集中于右上角;ROC 曲线集中于左上角,顺时针旋转 90 度后则集中于右上角。

89bf20d6a85ccda5905d48b33cf2dfd1.png
图 3.3:两类得分呈等方差高斯分布时的 P-R 曲线与 ROC 曲线

  曲线有多么靠近相应的角落,与两类得分的分布分得多么开有关。在上面的例子里,两类得分的均值之差

等于各自标准差
的 2 倍。如果把两类得分的分布距离拉大,那么 P-R 和 ROC 曲线都会更加靠近角落。图 3.4 展示了
时曲线的样子:

4202ccd3bea1f42c47367503dfafa19c.png
图 3.4:两类得分的均值间距对 P-R 曲线与 ROC 曲线的影响

  上面的例子中,正例在所有数据中所占比例均为 50%。事实上,正例的比例对 P-R 曲线有较大的影响。图 3.5 展示了

的情况下,把正例的比例减少至 20% 和 5% 时的 P-R 曲线,可以看到,正例越少,曲线越低,并且曲线右端的纵坐标恰好就是正例的比例。与此不同的是,ROC 曲线并不受正例所占比例的影响,读者可以自行思考一下为什么。

df585b16bdfe2e5caf647d266b4f499f.png
图 3.5:正例所占比例对 P-R 曲线的影响

  我们还可以确认,当正例远少于负例时,旋转后的 ROC 曲线会高于 P-R 曲线,最右端除外。

3.3 正、负类得分呈不等方差高斯分布的情形

  在这一小节,我们来观察一下,两类得分呈不等方差的高斯分布时,P-R 曲线和 ROC 曲线长成什么样子。设正、负类各有 5000 个样例,正类得分的均值为 1、方差为 1,负类得分的均值为 -2、方差为 4,如图 3.6:

432e05cd09da0df4a155039651a68c2d.png
图 3.6:两类得分呈不等方差的高斯分布

  此时的 P-R 曲线和 ROC 曲线如图 3.7。注意到 P-R 曲线不再呈单调下降的趋势,而是先升后降,这是因为负类的最高得分跟正类的最高得分差不多了,哪怕把阈值设得很高,也无法完全排除负类。这并不是「两类得分方差不等」的必然结果,而是依赖于分布的具体参数。另外可以注意到,与等方差的情形不同,ROC 曲线不再是关于对角线对称的了。

0d26acd506243f9412528240140b5a83.png
图 3.7:两类得分呈不等方差高斯分布时的 P-R 曲线与 ROC 曲线

  同样地,两类得分的分布分得越开,曲线就越靠近角落(图略);正例所占比例会影响 P-R 曲线(如图 3.7),但不会影响 ROC 曲线(图略)。

839605e8117b4b0a2129b9dc9b503db3.png
图 3.8:正例所占比例对 P-R 曲线的影响

四、DET 曲线

  从上一节的例子中可以发现,当二分类器的性能很好时,ROC 曲线会非常接近角落。如果要把多个二分类器的 ROC 曲线画在一个图中进行比较,往往会看不清,于是就有了 DET 曲线[1]。说话人验证就是一个常常使用 DET 曲线的领域,因为说话人验证系统的漏查率与误查率常常都只有 1% 左右。

  DET 曲线的全名叫 detection error tradeoff curve,它表现的是「漏查」和「误查」两种错误的权衡。曲线的纵坐标是正类的漏查率,即

;横坐标是负类的误查率,即
。仅从这里来看,DET 曲线似乎只是把 ROC 曲线上下翻转了一下。不过 DET 曲线的精髓,在于它的两个坐标轴不是线性的,而是使用
标准高斯分布累积密度函数
的反函数
进行了非线性伸缩。比如,

那么,横轴就表示 50% 的漏查率,而 20%、10%、5% 的漏查率则画在横轴往下 0.84、1.28、1.64 个单位长度的地方;同样地,纵轴表示 50% 的误查率,而 20%、10%、5% 的误查率则画在纵轴往左 0.84、1.28、1.64 个单位长度的地方。DET 曲线的坐标系如图 4.1 所示。由于漏查率和误查率一般都低于 50%,所以 DET 曲线往往只画出第三象限的部分。二分类器越好,DET 曲线越靠近左下角。

42fb709f7e07e7aa93aca7bc37697c33.png
图 4.1:DET 曲线的坐标系

  使用

对坐标轴进行非线性伸缩,可以把低错误率系统的差距放大,便于比较。那么为什么偏要选用
这个函数呢?其它函数,比如对数函数,不好吗?原来,当两类得分的分布确实是高斯分布时,
可以
让 DET 曲线变成直线。这个证明非常简单:设正类得分服从高斯分布
,负类得分服从高斯分布
(参见图 3.6)。当阈值设为
时,正类的漏查率(阈值左侧面积占比)为
,而负类的误查率(阈值右侧面积占比)为
。使用
进行伸缩后,这个工作点在 DET 图中的坐标就是
,很明显,这样的点的轨迹是直线

  图 4.2 展示的是两类得分服从等方差高斯分布时的 DET 曲线。两类得分的方差均为 1(

),均值之差
取 2、3、4。这些 DET 曲线都是斜率为 -1 的直线(看起来歪歪扭扭是由于数据有采样噪声),两类得分分得越开,曲线越靠近左下角。

c59da320453912753ce5c60845324790.png
图 4.2:两类得分呈等方差高斯分布时的 DET 曲线

  图 4.3 展示的是两类得分服从不等方差高斯分布时的 DET 曲线。图中正类得分固定服从

,负类得分均值
固定为 -2,标准差
取 1、2、3。这些 DET 曲线的斜率不同,但都经过纵轴上的固定点。

f5d25b44cf9ed24671f1730a9d4b0f34.png
图 4.3:两类得分呈等方差高斯分布时的 DET 曲线

  顺便说一下,二分类器的阈值使得正类漏查率与负类误查率相等时,这两个错误率称为等错误率(equal error rate,EER)。在 DET 曲线图上,做出对角线

,找到它与 DET 曲线的交点,就可以读出等错误率了。

本篇小结

  1. P-R 曲线的纵轴是正类的查准率
    ,横轴是正类的查全率
    。曲线宏观上单调递减,二分类器越好,曲线越靠近右上角。
  2. ROC 曲线的纵轴是正类的查全率
    ,横轴是负类的误查率
    。曲线宏观上单调递增,二分类器越好,曲线越靠近左上角。
  3. 把 ROC 曲线顺时针旋转 90 度,可以让它跟 P-R 曲线一样都以
    为横轴,旋转后的 ROC 曲线的纵轴为负类的查全率
    。旋转后的 ROC 曲线整体上会高于 P-R 曲线,最右端除外。
  4. P-R 曲线会受正例在所有数据中所占比例的影响(正例越多,曲线越高),ROC 曲线不会。
  5. DET 曲线的纵轴是正类的漏查率
    ,横轴是负类的误查率
    ,相当于把 ROC 曲线上下翻转。DET 曲线用
    函数对两个坐标轴进行了非线性伸缩,能够放大低错误率系统的差距;在两类得分服从高斯分布时,曲线将变成直线。DET 曲线宏观上单调递减,二分类器越好,曲线越靠近左下角。

参考

  1. ^https://apps.dtic.mil/dtic/tr/fulltext/u2/a530509.pdf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值