zoukankan      html  css  js  c++  java
  • 评价指标-精确率、召回率、ROC曲线

    当我们训练好一模型之后,如何判断模型的好坏呢,这就需要用到评价指标(evaluation metrics)。下面介绍一下在二分类任务中的一些评价指标。

    真实-Positive(正方形左侧) 真实-Negative(正方形右侧)
    预测-Positive(圆形内) TP(True Positive) FP(False Positve)
    预测-Negative(圆形外) FN(False Negative) TN(True Negative)

    image

    准确率(accuracy)

    准确率的计算公式是:

    [accuracy = frac{TP+TN}{总样本数} ]

    即类别预测正确的样本在总样本数据的占比。

    精确率(precision)与召回率(recall)

    精确率与召回率往往一起使用的,将两者结合的指标就是F1-score。

    如果提高阀值,精确率会不断提高,对就上图理解的话,可以理解成圆形变小并向左移动了。

    如果缩小阀值,召回率会不断提高,对就上图理解的话,可以理解成圆形变大并向右移动了。

    [Precision = frac{TP}{TP+FP} \ Recall = frac{TP}{FN+TP} ]

    Precision vs Accuracy

    precision与accuracy的区别可以这样理解,如果是在多分类的任务中,accuracy只有一个,就是类别使用正确的样本数量在总体样本的占比;而precision在每一个类别上是单独计算的,如果要合成一个指标只能取各个类别的平均值。
    另外一个例子是:假如一个测试集有正样本1个,负样本99个。我们设计的模型是个无脑模型,即把所有的样本都预测为负样本,那这个模型的accuracy是99%而precision是0%。当然如果正样本99,负样本1,全部预测为正样本,那两者都是99%。可以看出precision更侧重正样本,而accuracy并无侧重。

    ROC曲线与AUC

    image

    TRP的解释是,在所有正例中有多少正例被预测对了;
    FPR的解释是,在所有负例中有多少负例被预测错了;

    [TRP = frac{TP}{FN+TP} \ FPR = frac{FP}{TN+FP} ]

    ROC曲线的计算步骤:

    1. 对所有测试样例进行预测
    2. 将有有样例按得分从大到小排序
    3. 从上到下分别取阀值并计算TRP和FPR
    4. 将所有TRP和FPR点画到坐标上

    如果一条ROC曲线完全包含另一个ROC曲线,则说明前者的性能比后者好;那如果两条ROC曲线是交叉的该如何比较这两者呢?比较合理的判断依据是ROC曲线的面积,即AUC(Area Under ROC Curve)。

    AUC的计算方式在这里就不详述了,在不同的机器学习相关的包都有相应API提供。

    主要参考

    https://www.cnblogs.com/rossiXYZ/p/13166899.html#0x01-本文缘由

  • 相关阅读:
    css
    10个顶级的CSS和Javascript动画框架推荐
    js格式化时间(自己修改并注释)
    分享一篇获取键盘数值的js(限制在IE浏览器)
    Myeclipse一个设置小技巧,加速编码提示。
    悲剧的代码工
    Log4j与commonlogging
    没有人的了
    不想被淘汰,就别做这八种人!
    MVN 资料一
  • 原文地址:https://www.cnblogs.com/hwyang/p/14850203.html
Copyright © 2011-2022 走看看