常用的评价指标:accuracy、precision、recall、f1-score、ROC-AUC、PR-AUC

原文地址:https://www.jianshu.com/p/dbbfffd6a5e9

预测(横)
实际(纵)
+ -
+ tp fn
- fp tn
  • 准确率(Accuracy)
    \[accuracy=\frac{tp+tn}{tp+fp+tn+fn}\]
    accuracy是最常见也是最基本的评价指标。但是,在二分类且正负样本不平衡的情况下,尤其是对于较少数样本类感兴趣时,accuracy基本无参考价值。如欺诈检测、癌症检测等,100个样例中,99个负例,1个正例。模型将任意样本都分为负例,accuracy值为0.99。但是,拿这个模型去检测新样本,一个正例也分不出来。

  • 精确率(Precision)、召回率(Recall)
    \[precision=\frac{tp}{tp+fp},recall=\frac{tp}{tp+fn}\]
    precision是相对于模型预测而言的,可以理解为模型做出新预测时的自信度得分是多少或做出这个预测是对的可能性是多少。自信度。
    recall是相对于真实标签而言的,可以理解为模型预测出的正例占实际正例的比例。覆盖率。
    如果模型很贪婪,想要覆盖更多的样本,那么它就有可能会犯错。这个时候的recall值常很高,precision常很低。如果模型很保守,只对很确定的样本做出预测,则precision值常很高,recall值常很低。我们可以选择只看我们感兴趣的样本类,也就是较少数样本类的precision和recall来评价模型的好坏。
    疾病检测、反垃圾等,是在保证精确率的条件下提升召回率;搜索等是在保证召回率的情况下提升精确率。

  • F1值(F1-score)
    \[f1-score=\frac{2}{\frac{1}{P}+\frac{1}{R}}=\frac{2PR}{P+R}\]
    F1值是个综合考虑precision值和recall值的指标。
    多类别分类时,有宏平均(macro-average)和微平均(micro-average)两种。
    宏平均是指先对每个类别单独计算F1值。取这些值的算术平均值作为全局指标。这种方式平等地对待每个类别,所以其值主要受稀有类别的影响,更能体现模型在稀有类别上的表现。
    微平均是指先累加各个类别的tp、fp、tn、fn值,再由这些值来计算F1值。这种方式平等地对待每个样本,所以其值主要受到常见类别的影响。

  • ROC-AUC
    \[\begin{aligned}sensitivity&=recall=true\ positive\ rate\\ &=\frac{tp}{tp+fn}\\ &=P(\hat{y}=1|y=1)\end{aligned}\]
    \[\begin{aligned}specifity&=1-false\ positive\ rate\\ &=\frac{tn}{fp+tn}\\ &=P(\hat{y}=0|y=0)\end{aligned}\]
    无论\(y\)的真实概率是多少,都不会影响sensitivity和specificity。也就是说,这两个指标是不会受到不平衡数据的影响的。而\(precision=P(y=1|\hat{y}=1)\)是会受到数据集中正负比例的影响的。
    ROC曲线(Receiver Operating Characteristic Curve)是一个以fpr为\(x\)轴,tpr为\(y\)轴,取不同的score threshold画出来的。
    基本上,ROC曲线下面积即AUC越大,或者说曲线越接近于左上角(fpr=0, tpr=1),那么模型的分类效果就越好。一般来说,最优score threshold就是ROC曲线离\(y=x\)基准线最远的一点或者说是ROC曲线离左上角最近的一点对应的阈值,再或者是根据用户自定义的cost function来决定的。
    AUC就是从所有正例样本中随机选择出一个样本,在所有负例样本中随机选择出一个样本,使用分类器进行预测。将正例样本预测为正的概率记作\(P_1\),将负例样本预测为负的概率记作\(P_0\)\(P_1>P_0\)的概率就等于AUC值。因此,AUC反映的是分类器对于样本的排序能力。根据这个解释,如果我们完全随机地对样本进行分类,那么AUC应该接近于0.5。另外,AUC值对于样本类别是否均衡并不敏感,这也是不均衡样本通常使用AUC评价分类器性能的一个原因。通常使用AUC的目的,一是为了比较不同模型性能的好坏,二是为了找到得到最佳指标值的那个阈值点。

  • PR-AUC
    PR曲线,是以P为\(y\)轴,以R为\(x\)轴,取不同的概率阈值得到不同的(p,r)点后画成的线。
    为了解决P、R、F-Measure(即\(\frac{1}{\lambda \frac{1}{P}+(1-\lambda)\frac{1}{R}}\))的单点局限性,得到一个能够反映全局的指标,使用PR-AUC/AP。同样地,PR-AUC值越大,或者说曲线越接近右上角(p=1, r=1),那么模型就越理想、越好。
    \[AP=\int_0^1 p(r)d(r)\]
    • AAP(Approximated Average Precision)
      AAP将PR-AUC面积分割成不同的长方形然后求面积和。
      \[AAP=\sum_{k=1}^{N}p(k)\Delta r(k)\]
    • IAP(Interpolated Average Precision)
      如果存在r'>r且p'>p,使用p'代替p参与面积计算。AAP会比IAP离实际的PR-AUC更近,面积也会小点。
      PASCAL VOC中使用IAP作为AP值,认为这一方法能够有效地减少PR曲线中的抖动。然后对于多类别进行AP取平均操作后得mAP值。

算法倾向如果是“宁可错杀一千,不可放过一个”,可以设定在合理的precision值下,最高的recall值作为最优点,找到这个点对应的阈值。总之,我们可以根据具体的应用或者是偏好,在曲线上找到最优的点,去调整模型的阈值,从而得到一个符合具体应用的模型。

猜你喜欢

转载自www.cnblogs.com/cherrychenlee/p/10805520.html