机器学习中的性能度量指标

前言

  前文中我们了解了几种机器学习中模型评估的方法,但在实际应用中对学习器的泛化性能进行评估,不仅仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评估标准,这就是本文中要了解的性能度量。

概念引入

  性能度量反映了任务需求,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的结果。在预测任务中,给定样例集D={ ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) {(x_1,y_1),(x_2,y_2),...,(x_n,y_n)} (x1,y1),(x2,y2),...,(xn,yn)},其中 y i y_i yi是示例 x i x_i xi的真实标记,要评估学习器 f f f的性能,就要把学习器 f ( x ) f(x) f(x)与真实标记 y y y进行比较.
  回归任务最常用的性能度量是“均方差”,即

E ( f ; D ) = 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 E(f;D) = \frac{1}{m}\sum_{i=1}^m(f(x_i )- y_i)^2 E(f;D)=m1i=1m(f(xi)yi)2

对于数据分布D和概率密度函数p(·),均方差可描述为

E ( f ; D ) = ∫ x ∼ D ( f ( x ) − y ) 2 p ( x ) d x E(f;D)=\int_{x \sim D}(f(x)-y)^2p(x)dx E(f;D)=xD(f(x)y)2p(x)dx

以上是回归任务中的性能度量,那么我们再来看看分类任务中的性能度量

分类中的性能度量

  其中错误率和精度是分类任务中最常用的两种性能度量,既适用于二分类任务,也适用于多分类任务。

错误率与精度

  对样例集D,分类错误率定义为

E ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i ) ≠ y i ) E(f;D)=\frac{1}{m}\sum_{i=1}^m\mathbb{I}(f(x_i)\neq{y_i}) E(f;D)=m1i=1mI(f(xi)=yi)

精度则定义为

a c c ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i ) = y i ) = 1 − E ( f ; D ) acc(f;D) = \frac{1}{m}\sum_{i=1}^m\mathbb{I}(f(x_i)=y_i) = 1 -E(f;D) acc(f;D)=m1i=1mI(f(xi)=yi)=1E(f;D)

对数据分布D和概率密度函数p(·),错误率和精度可分别描述为

E ( f ; D ) = ∫ x ∼ D I ( f ( x ) ≠ y ) p ( x ) d x E(f;D)=\int_{x \sim D}\mathbb{I}(f(x)\neq{y})p(x)dx E(f;D)=xDI(f(x)=y)p(x)dx

a c c ( f ; D ) = ∫ x ∼ D I ( f ( x ) = y ) p ( x ) d x = 1 − E ( f ; D ) acc(f;D) = \int_{x \sim D}\mathbb{I}(f(x)=y)p(x)dx = 1 - E(f;D) acc(f;D)=xDI(f(x)=y)p(x)dx=1E(f;D)

查准率与查全率

  错误率和精度虽然常用,但并不能满足所有任务需求,例如在搜索业务中,错误率衡量了有多少信息被错误判断导致推送给了用户或者没有推送给用户,这并不是我们关心的,我们更关心在检索出来的信息里有多少是用户感兴趣的,或者说用户感兴趣的信息有多少被检索出来了,这就是查准率和查全率。
  对于二分类的问题,可以把样例根据真实类别和学习器预测的类别组合划分为真正例,假正例,真反例,假反例四种情形,令TP、FP、TN、FN分别为其对应的样例数,则有TP+FP+TN+FN=样例总数,分类的结果可以用一个混淆矩阵表示如下图
在这里插入图片描述
查准率P和查全率R分别定义为

P = T P T P + F P P = \frac{TP}{TP +FP} P=TP+FPTP

R = T P T P + F N R = \frac{TP}{TP +FN} R=TP+FNTP

  查准率和查全率一般是相互矛盾的,如果希望查出来的结果越精确越好,那没有把握的结果就会被丢弃,查全率自然就低,如果希望尽可能把所有正例都查出来,自然要把所有不确定的一起算上,查准率就低了,通常只有在一些很简单的任务里,查准率和查全率才可能会都很高。
  在很多情况下,我们可以根据学习器的预测结果对样例排序,排在前面的是学习器认为“最可能”是正例的样本,排在最后的是学习器认为“最不可能”是正例的样本,按这个顺序把样本逐个排序每次计算当前查准率查全率,以查准率为纵轴,查全率为横轴作图,可以得到查准率-查全率曲线,简称PR曲线,显示该曲线的图称为PR图。

PR图

  PR图能够直观地显示学习器在样本上的查全率、查准率,在进行比较时如果,一个学习器的PR曲线被另一个学习器的PR曲线完全包住,那么可以断言后者优于前者,然而大部分情况下,是无法一般性的断言哪一个优于另一个的,此时如果我们希望将两个学习器比出一个高低,那么可以用PR曲线下面积的大小作为判断依据,它能一定程度上反映学习器在查准率和查全率上取得双高的比例,但这个值不太容易估算,所以人们设计了一些综合考虑查准率、查全率的指标。
在这里插入图片描述
  平衡点(BEP)就是这样一个度量,它是“查准率等于查全率时的取值。若BEP更高,则学习器更优。

F1与Fβ

  但BEP还是过于简化了,更常用的是F1度量,F1是基于查准率和查全率的调和平均值,它定义为
F 1 = 2 × P × R P + R = 2 × T P 样 例 总 数 + T P − T N F1 =\frac{2\times{P}\times{R}}{P+R}= \frac{2\times{TP}}{样例总数+TP-TN} F1=P+R2×P×R=+TPTN2×TP

  在不同类型的应用中,我们对查准率和查全率的重视程度不一样,针对不同的重视程度,一般用加权调和平均值来度量。它定义为

F β = ( 1 + β 2 ) × P × R β 2 × P + R F_\beta =\frac{(1+\beta^2)\times{P}\times{R}}{\beta^2\times{P}+R} Fβ=β2×P+R(1+β2)×P×R

  其中β>0度量了查全率对查准率的相对重要性,β=1时退化为标准的F1;β>1时查全率有更大影响,β<1时查准率有更大影响。
  在很多情况下我们有多个二分类混淆矩阵,例如多次训练,每次产生一个混淆矩阵,或是在多个数据集上进行训练/测试,希望估算全局性能,这个时候就需要在n个二分类混淆矩阵上综合考察查准率和查全率。有两种常用的做法,一种是先在各个混淆矩阵中计算出查准率,查全率和F1,再计算它们分别的平均值,这就得到了宏查准率,宏查全率和宏F1。也可以先计算各矩阵中各元素TP、FP、TN、FN的平均值,再用它们去计算查准率,查全率和F1,此时得到的是微查准率,微查全率和微F1。

ROC与AUC

  与PR曲线类似,还有一个曲线也被用来衡量学习器在不同任务下泛化期望的好坏,也就是ROC曲线,与PR曲线不同的是,ROC曲线使用的是另外两个重要指标,真正例率TPR和假正例率FPR作为纵轴和横轴的图像,两者分别定义为

T P R = T P T P + F N TPR=\frac{TP}{TP+FN} TPR=TP+FNTP

F P R = F P T N + F P FPR=\frac{FP}{TN+FP} FPR=TN+FPFP
在这里插入图片描述
  若一个学习器的ROC曲线被另一个学习器的ROC曲线完全包住,则可以断言后者性能优于前者,若发生交叉,则不能一般性断言,可以通过ROC曲线的面积,也就是AUC来判断。

A U C = 1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) × ( y i + y i + 1 ) AUC=\frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_i)\times(y_i+y_{i+1}) AUC=21i=1m1(xi+1xi)×(yi+yi+1)

代价敏感错误率与代价曲线

  前面的性能度量中,大多数都默认了一个前提条件代价是均等的,并没有考虑到不同错误会导致不同的后果。在现实生活中不同类型的错误所造成的的后果往往是不同的,为了权衡不同类型错误所造成的的不同损失,可以为错误赋予“非均等代价”。
  以二分任务为例,可以根据任务的领域知识建立一个“代价矩阵”,其中 c o s t i j cost_{ij} costij表示把第i类样本预测为j类的代价,一般来说 c o s t i i cost_{ii} costii=0;如果将第0类预测为第1类损失更大,则 c o s t 01 cost_{01} cost01> c o s t 10 cost_{10} cost10,损失越大, c o s t 01 cost_{01} cost01 c o s t 10 cost_{10} cost10相差越大,两者的绝对值不重要,比值更重要。100:10和10:1的意义是一样的。
在这里插入图片描述
  在非均等代价下,我们希望的不再是简单的最小化错误数,而是希望最小化总体代价。
此时计算错误率为

E ( f ; D ; c o s t ) = 1 m ( ∑ x i ∼ D + I ( f ( x i ) ≠ y i ) × c o s t 01 + ∑ x i ∼ D − I ( f ( x i ) ≠ y i ) × c o s t 10 ) E(f;D;cost)=\frac{1}{m}(\sum_{x_i\sim{D^+}}\mathbb{I}(f(x_i)\neq{y_i})\times{cost_{01}}+\sum_{x_i\sim{D^-}}\mathbb{I}(f(x_i)\neq{y_i})\times{cost_{10}}) E(f;D;cost)=m1(xiD+I(f(xi)=yi)×cost01+xiDI(f(xi)=yi)×cost10)

  类似的,在非均等代价下,ROC曲线同样不能直接反映学习器的期望总体代价,而“代价曲线”可以。代价曲线的横轴是取值为[0,1]的正例概率代价

P ( + ) c o s t = p × c o s t 01 p × c o s t 01 + ( 1 − p ) × c o s t 10 P(+)cost=\frac{p\times{cost_{01}}}{p\times{cost_{01}}+(1-p)\times{cost_{10}}} P(+)cost=p×cost01+(1p)×cost10p×cost01

其中p是样例为正例的概率;纵轴是取值为[0,1]的归一化代价

c o s t n o r m = F N R × p × c o s t 01 + F P R × ( 1 − p ) × c o s t 10 p × c o s t 01 + ( 1 − p ) × c o s t 10 cost_{norm}=\frac{FNR\times{p}\times{cost_{01}+FPR\times{(1-p)}\times{cost_{10}}}}{p\times{cost_{01}}+(1-p)\times{cost_{10}}} costnorm=p×cost01+(1p)×cost10FNR×p×cost01+FPR×(1p)×cost10

  其中FPR是假正例率,FNR是假反例率,ROC曲线上的每一点对应了代价平面上的一条线段,设ROC线上点的坐标为(FPR,TPR),则可以计算出FNR,然后在代价平面上绘制一条从(0,FPR)到(1,FNR)的线段,线段下方的面积即表示该条件下的期望总体代价。依次将ROC曲线上每个点都转化为代价平面上的一条线段,然后所有线段围成的下界,就是在所有条件下学习器的期望总体代价。
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值