zoukankan      html  css  js  c++  java
  • 机器学习常用的性能评价指标

    混淆矩阵

    • True Positive(TP):将正类预测为正类数
    • True Negative(TN):将负类预测为负类数
    • False Positive(FP):将负类预测为正类数
    • False Negative(FN):将正类预测为负类数

    准确率(accuracy)

    • 计算公式

    [acc = frac{TP + TN}{TP + TN + FP + FN} ]

    • 解释
      对于样本,模型对于正负预测的准确率。

    精确率(precision)

    [pre = frac{TP}{TP + FP} ]

    • 理解
      精确率追求精,什么是精?模型你找出来的正类,正类一定要多。故精确率又称查准率。

    召回率(recall)

    • 计算方法

    [rec = frac{TP}{TP + FN} ]

    • 理解
      召回率追求召回(找回),模型你要把样本中所有正类样本尽可能的找出来。故召回率又称查全率。

    F1指标

    • 计算方法

    [F1 = frac{2 imes pre imes rec}{pre + rec} = frac{2 imes TP}{2 imes TP + FP + FN} ]

    • 理解
      pre 和 rec 两个不可兼得时,我们一般用F1来作为作为指标,他越大越好。

    PR曲线

    根据上面对pre,rec的两个理解,好多情况下,我们可能不能同时得到高pre和rec,所以一般地我们画出PR曲线,取折中点。

    从上图不难发现,precision与Recall的折中(trade off),曲线越靠近右上角性能越好,曲线下的面积叫AP分数,能在一定程度上反应模型的精确率和召回率都很高的比例。但这个值不方便计算,综合考虑精度与召回率一般使用F1函数或者AUC值(AUC是ROC曲线下的面积,比较容易计算)

    ROC曲线 与 AUC

    纵坐标含义:真正率,True Positive Rate(TPR), 其实就是召回率 (rec = frac{TP}{TP + FN})
    横坐标含义:假正率,False Position Rate(FPR), (FPR = frac{FP}{FP + TN})

    如何得到ROC曲线


    上图中共有20个测试样本,“Class”一栏表示每个测试样本真正的标签(p表示正样本,n表示负样本),“Score”表示每个测试样本属于正样本的概率。
    在一个二分类问题中,每有一个Threshold,我们都可以得到一组<TPR,FPF>,接下来,我们从高到低,依次将“Score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本。
    举例来说,对于图中的第4个样本,其“Score”值为0.6,那么样本1,2,3,4都被认为是正样本,因为它们的“Score”值都大于等于0.6,而其他样本则都认为是负样本。每次选取一个不同的threshold,我们就可以得到一组FPR和TPR,即ROC曲线上的一点。这样一来,我们一共得到了20组FPR和TPR的值,将它们画在ROC曲线的结果如下图:

    当我们将threshold设置为1和0时,分别可以得到ROC曲线上的(0,0)和(1,1)两个点。当threshold取值越多,ROC曲线越平滑,将这些(FPR,TPR)对连接起来,就得到了ROC曲线。

    如何计算AUC


    AUC (Area Under Curve) 被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围一般在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。
    简单来讲,AUC值越大的分类器,正确率越高。

    • 如何估算AUC
      (1) 画在一张图上直接看呗;
      (2) 把他尽可能的分成多个小梯形算呗;

    • AUC判断分类器的好坏:
      (1) AUC = 1,是完美分类器,采用这个预测模型时,存在至少一个阈值能得出完美预测。绝大多数预测的场合,不存在完美分类器。
      (2) 0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
      (3) AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。
      (4) AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。

    为什么大家都在用ROC曲线呢?

    既然已经这么多评价标准,为什么还要使用ROC和AUC呢?因为ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。下图是ROC曲线和Precision-Recall曲线的对比:

    在上图中,(a)和(c)为ROC曲线,(b)和(d)为Precision-Recall曲线。(a)和(b)展示的是分类其在原始测试集(正负样本分布平衡)的结果,(c)和(d)是将测试集中负样本的数量增加到原来的10倍后,分类器的结果。可以明显的看出,ROC曲线基本保持原貌,而Precision-Recall曲线则变化较大。

    最后,这些指标具体业务还是要具体分析,综合平衡。
    参考文献
    [1] https://zhwhong.cn/2017/04/14/ROC-AUC-Precision-Recall-analysis/ (本文内容基本来自此博客)
    ~初完

  • 相关阅读:
    Spring注入内部的Beans
    Spring基于Setter函数的依赖注入(DI)
    Jenkins中的Job配置里缺少“触发远程构建(例如,使用脚本)”选项的问题解决
    Spring基于构造函数的依赖注入(DI)
    音频中采样位数,采样率,比特率的名词解释(转)
    无损音乐知识收集3(转)
    无损音乐知识收集2(转)
    无损音乐知识收集1(转)
    Spring的依赖注入概述
    Spring的IoC容器概述
  • 原文地址:https://www.cnblogs.com/ahpucd/p/13514362.html
Copyright © 2011-2022 走看看