zoukankan      html  css  js  c++  java
  • 【机器学习】准确率、精确率、召回率

    纠正下,精确率(precision)和准确率(accuracy)是不一样的,题主问的应该是精确率与召回率之间的差别。 Blog
    一.定义辨析

    - TP,True Positive

    - FP,False Positive

    - TN,True Negative

    - FN,False Negative

    精确率:precision = TP / (TP + FP)   分母是预测为正的样本数

    召回率:recall = TP / (TP + FN)  原来样本中所有的正样本数

    准确率:accuracy = (TP + TN) / (TP+ FP + TN + FN)

    精确率是针对我们预测结果而言的,它表示的是预测为正的样本中有多少是真正的正样本。

    召回率是针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确了。

    实际上非常简单,精确率是针对我们预测结果而言的,它表示的是预测为正的样本中有多少是真正的正样本。那么预测为正就有两种可能了,一种就是把正类预测为正类(TP),另一种就是把负类预测为正类(FP),也就是


    召回率是针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确了。那也有两种可能,一种是把原来的正类预测成正类(TP),另一种就是把原来的正类预测为负类(FN)。

    其实就是分母不同,一个分母是预测为正的样本数,另一个是原来样本中所有的正样本数

    举个栗子

    假设我们手上有60个正样本,40个负样本,我们要找出所有的正样本,系统查找出50个,其中只有40个是真正的正样本,计算上述各指标。
    • TP: 将正类预测为正类数 40
    • FN: 将正类预测为负类数 20
    • FP: 将负类预测为正类数 10
    • TN: 将负类预测为负类数 30

    准确率(accuracy) = 预测对的/所有 = (TP+TN)/(TP+FN+FP+TN) = 70%
    精确率(precision) = TP/(TP+FP) = 80%
    召回率(recall) = TP/(TP+FN) = 2/3

    而F值,则是综合这二者指标的评估指标,用于综合反映整体的指标。
    F值  = 正确率 * 召回率 * 2 / (正确率 + 召回率) (F 值即为正确率和召回率的调和平均值)。

    调和平均值公式:

    ROC 曲线在 Y 轴上画出了真正例率(TPR),在 X 轴上画出了假正例率 (FPR)(在所有真假中有多少被标记位假真了)。TPR 是召回率,FPR 是反例被报告为正例的概率。这两者都可以通过混淆矩阵计算得到。

    1.  选择最佳的诊断界限值。ROC曲线越靠近左上角,试验的准确性就越高。最靠近左上角的ROC曲线的点是错误最少的最好阈值,其假阳性和假阴性的总数最少

    2.  两种或两种以上不同诊断试验对算法性能的比较。在对同一种算法的两种或两种以上诊断方法进行比较时,可将各试验的ROC曲线绘制到同一坐标中,以直观地鉴别优劣,靠近左上角的ROC曲线所代表的受试者工作最准确。亦可通过分别计算各个试验的ROC曲线下的面积(AUC)进行比较,哪一种试验的 AUC最大,则哪一种试验的诊断价值最佳。

      在阈值为 1.0 的情况下,我们将位于图的左下方,因为没有将任何数据点识别为正例,这导致没有真正例,也没有假正例(TPR = FPR = 0)。当降低阈值时,我们将更多的数据点识别为正例,导致更多的真正例,但也有更多的假正例 ( TPR 和 FPR 增加)。最终,在阈值 0.0 处,我们将所有数据点识别为正,并发现位于 ROC 曲线的右上角 ( TPR = FPR = 1.0 )。

    关注公众号 海量干货等你
  • 相关阅读:
    vue-打包为webapp,如何解决应用内跳转外部链接返回导致退出应用
    vue-引入mui.js报错如何处理
    微信小程序中-折线图
    Docker基础命令
    retry示例
    authenticate验证的流程
    django生产环境启动问题
    redis基本操作
    DBUtils数据库连接池
    外部程序调用Django模块的解决办法
  • 原文地址:https://www.cnblogs.com/sowhat1412/p/12734372.html
Copyright © 2011-2022 走看看