zoukankan      html  css  js  c++  java
  • P(查准率),R(查全率),F1 值

    起源:

        我们平时用的精度 accuracy,也就是整体的正确率

          acc=predict_right_num/predict_num

    这个虽然常用,但不能满足所有任务的需求。比如,因为香蕉太多了,也不能拨开人工的一个一个的看它的好坏 (我爱吃啊,想想就心疼),此时我们就需要有一种方法,代替拨开香蕉这种粗鲁的手段。这时我们需要通过一些测试,看看哪种方法能更加准确的预测。我们可以通过

        “准”:预测的准确度,就是我预测的结果中真正好的香蕉要越多越好;

        “全”:就是所有的好的香蕉预测出来的越多越好,虽然把有些坏的也预测是好的了,那也不管,“全” 就行。好的香蕉越多的出现在预测结果里

    其实这两者都想要达到就好了,但是不行的: 

        比如 "准", 我就预测一个算了,好的香蕉肯定比坏的比例高,也就是我只预测一个,100% 比例几率最大了,这时就不 “全” 了,海有好多好的香蕉不在预测结果里面

        再比如 "全", 我去全部预测成好的,这真正好的都在我的预测里,也就是 100%。可是这时的 "准" 就一点都不准了。。

        所以就必须来平衡这俩同志的关系了,怎么平衡呢?肯定是通过权重来的呀,此时,F 值登上历史舞台!

    实例说明:

      实例化讲解吧。比如我们的香蕉中 1 表示好的,0 表示坏的,有 10 个香蕉:

      gold :  [1,1,1,1,1,0,0,0,0,0]

      pred:  [1,0,1,1,1,1,1,0,0,0]

        注释:gold 是现实的好坏;pred 是预测的好坏。

        P(Precision) 查准率,准确率:就是上面说的 "准"。字面意思好理解呀,就是在预测当中查找准确个数的比例。公式为:

      P = 真正预测准确的数量 / 预测是准确的数量 = 4 / 6

        R(Recall) 查全率,召回率:就是上面的 "全"。根据字面理解,在预测中看看真正预测对的占全有对的比率。公式为:

      R = 真正预测准确的数量 / 所有真正好的数量  = 4 / 5

    准确率就是找得对,召回率就是找得全。大概就是你问问一个模型,这堆东西是不是某个类的时候,准确率就是 它说是,这东西就确实是的概率吧,召回率就是, 它说是,但它漏说了(1 - 召回率)这么多

        F 值 综合评价指标,是:

      F(k) = ( 1 + k ) * P * R / ( ( k*k ) * P + R )

            注释:k>0 度量了 查全率 对 查准率 的相对重要性。k>1 查全率有更大影响;k<1查准率有更大影响。

            在这个实例中可以表示为:k>1 就是查全率有更大影响,就是好的香蕉最好都预测出来,因为你觉得不想把好的当成坏的扔点 (真可惜,我爱吃啊) ;k<1 查准率有更大影响,就是一定要准确,省时间,省力更重要,不在乎好的香蕉当坏的扔点。

        而我们常用的是 F1,就是 F(1) 的意思,k=1,比如我们做一个分类任务,这几个类觉得都一样重要。此时:

            F(1) = 2 * P * R / ( P + R ) = 2*4/6*4/5/(4/6+4/5) = 8/11

  • 相关阅读:
    String类的常用方法(P小写)
    二维数组:判断是否有目标数
    java实现输入年份判断在哪一天(正则表达式待改进)
    Java实现八进制正整数转化为十进制数
    时钟和定时器
    电路的频率响应---带宽的定义
    stm32两轮平衡车资料
    二阶常系数齐次线性微分方程的解法
    同步积分
    陀螺仪信号解调
  • 原文地址:https://www.cnblogs.com/dahu-daqing/p/9287327.html
Copyright © 2011-2022 走看看