机器学习中的性能度量

最常见的性能度量

    在回归任务中,即预测连续值的问题,最常用的性能度量是“均方误差”(mean squared error),很多的经典算法都是采用了MSE作为评价函数:
                在这里插入图片描述
    在分类任务中,即预测离散值的问题,最常用的是错误率和精度,错误率是分类错误的样本数占样本总数的比例,精度则是分类正确的样本数占样本总数的比例,易知:错误率+精度=1。
                在这里插入图片描述

查准率(准确率)/查全率(召回率)/F1

    错误率和精度虽然常用,但不能满足所有的需求,例如:在推荐系统中,我们只关心推送给用户的内容用户是否感兴趣(即查准率),或者说所有用户感兴趣的内容我们推送出来了多少(即查全率)。因此,使用查准/查全率更适合描述这类问题。对于二分类问题,分类结果混淆矩阵与查准/查全率定义如下:
                在这里插入图片描述
    正如天下没有免费的午餐,查准率和查全率是一对矛盾的度量。例如我们想让推送的内容尽可能用户全都感兴趣,那只能推送我们把握高的内容,这样就漏掉了一些用户感兴趣的内容,查全率就低了;如果想让用户感兴趣的内容都被推送,那只有将所有内容都推送上,宁可错杀一千,不可放过一个,这样查准率就很低了。

    “P-R曲线”正是描述查准/查全率变化的曲线,P-R曲线定义如下:根据学习器的预测结果(一般为一个实值或概率)对测试样本进行排序,将最可能是“正例”的样本排在前面,最不可能是“正例”的排在后面,按此顺序逐个把样本作为“正例”进行预测,每次计算出当前的P值和R值,如下图所示:
                在这里插入图片描述
    P-R曲线如何评估?**若一个学习器A的P-R曲线被另一个学习器B的P-R曲线完全包住,则称:B的性能优于A。**若A和B的曲线发生了交叉,则谁的曲线下的面积大,谁的性能更优。但一般来说,曲线下的面积是很难进行估算的,所以衍生出了“平衡点”(Break-Event Point,简称BEP),即当P=R时的取值,平衡点的取值越高,性能更优

    P和R指标有时会出现矛盾的情况,这样就需要综合考虑他们,最常见的方法就是F-Measure,又称F-Score。F-Measure是P和R的加权调和平均,即
                在这里插入图片描述
特别地,当β=1时,也就是常见的F1度量,是P和R的调和平均,当F1较高时,模型的性能越好。β>1时,查全率有更大影响,β<1时,查准率有更大影响。
                在这里插入图片描述
    有时候我们会有多个二分类混淆矩阵,例如:多次训练或者在多个数据集上训练,那么估算全局性能的方法有两种,分为宏观和微观。简单理解,宏观就是先算出每个混淆矩阵的P值和R值,然后取得平均P值macro-P和平均R值macro-R,再算出Fβ或F1,而微观则是计算出混淆矩阵的平均TP、FP、TN、FN,接着进行计算P、R,进而求出Fβ或F1。
                在这里插入图片描述

ROC与AUC

ROC

    学习器对测试样本的评估结果一般为一个实值或概率,设定一个阈值,大于阈值为正例,小于阈值为负例,因此这个实值的好坏直接决定了学习器的泛化性能,若将这些实值排序,则排序的好坏决定了学习器的性能高低。ROC曲线正是从这个角度出发来研究学习器的泛化性能,ROC曲线与P-R曲线十分类似,都是按照排序的顺序逐一按照正例预测,不同的是ROC曲线以“真正例率”为横轴,纵轴为“假正例率”(False Positive Rate,简称FPR),ROC偏重研究基于测试样本评估值的排序好坏

  • x轴为假正例率(FPR):在所有的负样本中,分类器预测错误的比例
                    在这里插入图片描述
  • y轴为真正例率(TPR):在所有的正样本中,分类器预测正确的比例(召回率):
                    在这里插入图片描述
        为了更好地理解ROC曲线,我们使用具体的实例来说明:

    如在医学诊断中,判断有病的样本。那么尽量把有病的揪出来是主要任务,也就是第一个指标TPR,要越高越好。而把没病的样本误诊为有病的,也就是第二个指标FPR,要越低越好。

    不难发现,这两个指标之间是相互制约的。如果某个医生对于有病的症状比较敏感,稍微的小症状都判断为有病,那么他的第一个指标应该会很高,但是第二个指标也就相应地变高。最极端的情况下,他把所有的样本都看做有病,那么第一个指标达到1,第二个指标也为1。

    我们以FPR为横轴,TPR为纵轴,得到如下ROC空间。
                在这里插入图片描述
    左上角的点(TPR=1,FPR=0),为完美分类,也就是这个医生医术高明,诊断全对。点A(TPR>FPR),医生A的判断大体是正确的。中线上的点B(TPR=FPR),也就是医生B全都是蒙的,蒙对一半,蒙错一半;下半平面的点C(TPR<FPR),这个医生说你有病,那么你很可能没有病,医生C的话我们要反着听,为真庸医。上图中一个阈值,得到一个点。现在我们需要一个独立于阈值的评价指标来衡量这个医生的医术如何,也就是遍历所有的阈值,得到ROC曲线。

    假设如下就是某个医生的诊断统计图,直线代表阈值。通过改变不同的阈值 1.0→0 ,从而绘制出ROC曲线。下图为未得病人群(蓝色)和得病人群(红色)的模型输出概率分布图(横坐标表示模型输出概率,纵坐标表示概率对应的人群的数量)。阈值为1时,不管你什么症状,医生均未诊断出疾病(预测值都为N),此时FPR=TPR=0,位于左下。阈值为0时,不管你什么症状,医生都诊断结果都是得病(预测值都为P),此时FPR=TPR=1,位于右上。
                在这里插入图片描述
    曲线距离左上角越近,证明分类器效果越好。
                在这里插入图片描述
    如上,是三条ROC曲线,在0.23处取一条直线。那么,在同样的低FPR=0.23的情况下,红色分类器得到更高的PTR。也就表明,ROC越往左上,分类器效果越好。我们用一个标量值AUC来量化它。

AUC

  • AUC值为ROC曲线所覆盖的区域面积,显然,AUC越大,分类器分类效果越好。
    • AUC = 1,是完美分类器。绝大多数预测的场合,不存在完美分类器。
    • 0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
    • AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。
    • AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。
      注:对于AUC小于0.5的模型,我们可以考虑取反(模型预测为positive,那我们就取negtive),这样就可以保证模型的性 能不可能比随机猜测差。
      以下为ROC曲线和AUC值的实例:
                      在这里插入图片描述
  • AUC仅仅是二分类模型的评价指标。
  • 不均衡样本通常用AUC评价分类器性能
AUC计算
  • 法1:AUC为ROC曲线下的面积,那我们直接计算面积可得。面积为一个个小的梯形面积(曲线)之和。计算的精度与阈值的精度有关。
    A U C = 1 2 i = 1 m 1 ( x i + 1 x i ) ( y i + y i + 1 ) AUC=\frac{1}{2}\sum^{m-1}_{i=1}{(x_{i+1}-x{i})\cdot{(y_{i}+y_{i+1})}}
  • 法2:根据AUC的物理意义,我们计算正样本预测结果大于负样本预测结果的概率。取n1n0(n1为正样本数,n0为负样本数)个二元组,比较score(预测结果),最后得到AUC。时间复杂度为O(NM)。
  • 法3:我们首先把所有样本按照score排序,依次用rank表示他们,如最大score的样本,rank=n (n=n0+n1,其中n0为负样本个数,n1为正样本个数),其次为n-1。那么对于正样本中rank最大的样本,rank_max,有n1-1个其他正样本比他score小,那么就有(rank_max-1)-(n1-1)个负样本比他score小。其次为(rank_second-1)-(n1-2)。最后我们得到正样本大于负样本的概率为
                     在这里插入图片描述
    下面有一个简单的例子:
    真实标签为 (1, 0, 0, 1, 0); 预测结果1(0.9, 0.3, 0.2, 0.7, 0.5; 预测结果2(0.9, 0.3, 0.2, 0.7, 0.8), 计算AUC。
  • 法1(以模型1举例)
    • 首先对预测结果排序得到(0.9,0.7,0.5,0.3,0.2)对应的编号为(1,4,5,2,3);
    • 将分类阈值设为最大,即将所有样例均预测为反例,此时TPR和FPR均为0;将score值分别作为阈值,得到样本为正样本和负样本的个数,计算TPR和FPR。
      • 1 = 0.9 阈值_{1}=0.9 ,则 1号为正,2,3,4,5均为负,此时 T P R = 1 2 , F P R = 0 TPR=\frac{1}{2},FPR=0
      • 2 = 0.7 阈值_{2}=0.7 ,则 1,4号为正,2,3,5均为负,此时 T P R = 1 , F P R = 0 TPR=1,FPR=0
      • 3 = 0.5 阈值_{3}=0.5 ,则 1,4,5号为正,2,3均为负,此时 T P R = 1 , F P R = 1 3 TPR=1,FPR=\frac{1}{3}
      • 3 = 0.3 阈值_{3}=0.3 ,则 1,4,5,2号为正,3均为负,此时 T P R = 1 , F P R = 2 3 TPR=1,FPR=\frac{2}{3}
      • 3 = 0.2 阈值_{3}=0.2 ,则 1,4,5,2,3号均为正,此时 T P R = 1 , F P R = 1 TPR=1,FPR=1
    • 绘制TPR-FPR曲线,计算AUC=1。
                       在这里插入图片描述
      按照上述方法同样可以算出模型2的AUC=5/6。
  • 法2(以模型2举例)
    • 正例score(0.9,0.7);反例score(0.8,0.3,0.2)
    • 正反例score组合(0.9,0.8)(0.9,0.3)(0.9,0.2)(0.7,0.8)(0.7,0.3)(0.7,0.2)
    • 一共有2*3=6个组合,其中正样本概率大于负样本概率的组合有5个,负样本概率大于正样本概率的组合有1个。
    • AUC=5/6。
      可见两个方法结果一致,根据此方法可以求得模型2的AUC=1 。
  • 法3(以模型2举例)
    • 首先对score(0.9, 0.3, 0.2, 0.7, 0.8)由高到低排序,分值最高的rank为n,依次类推,最低的rank为1。则排序编号为(5,2,1,3,4),对应的正反例为(1,0,0,1,0)
    • 正例score(0.9,0.7),正例的rank之和=5+3=8;正例n1=2;反例n0=3.
    • 根据公式求得 A U C = 8 2 ( 2 + 1 ) 2 2 3 = 5 6 AUC=\frac{8-\frac{2*(2+1)}{2}}{2*3}=\frac{5}{6}
      同样的方法可以求得模型1的AUC=1.
发布了42 篇原创文章 · 获赞 28 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/xiaoxiaoliluo917/article/details/101054096