怎么来的?

我们平时用的精度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

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 )

代码实现:

背景:用evalList的长度是我需要求的P,R,F1的个数,比如我的实验是立场检测,分类为FAVOR(支持),AGAINST(反对),NONE(中立)。而NONE一般不考虑,只要求得FAVOR,AGAINST各自的P,R,F1,然后F1求个平均即可。比如这个论文的数据:

 
from Stance Detection with Bidirectional Conditional Encoding paper

这时我的evalList里有两个数据分别表示FAVOR,AGAINST各自的P,R,F1值。

这个P,R,F1的代码为:

 
code
 
print

就这样吧。应该讲的很详细了!

作者:zenRRan
链接:https://www.jianshu.com/p/6536d584d5fd
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

最新文章

  1. JS操作Unicode编码的emoji表情显示在页面
  2. Create Volume 操作(Part I) - 每天5分钟玩转 OpenStack(50)
  3. Mysql之case语句(附带实例)
  4. Python Django开发 1
  5. 为自己打造Linux小系统
  6. python 入门1
  7. TypeError: not enough arguments for format string
  8. oracle 数据库——知识点总结(加示例)
  9. OpenStack_I版 7.Cinder部署
  10. Linux将端口设置进防火墙的白名单
  11. pm2,部署nodejs,使用方法及自己使用后总结的经验
  12. Redis和mysql数据怎么保持数据一致的?
  13. 关于java的动态代理
  14. ----Arrow functions----
  15. 《笨方法学Python》加分题1
  16. MySQL命令 导出 数据和结构
  17. 倍数|计蒜客2019蓝桥杯省赛 B 组模拟赛(一)
  18. springboot项目maven报错 LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback
  19. 【Mysql优化三章】第一章
  20. Linux 使用系统ISO制作yum源

热门文章

  1. Mysql之inner join,left join,right join详解
  2. getElementsByName和getElementById
  3. iOS | AFNetworking封装
  4. 数据库查询服务DBCacheServer
  5. 【shell脚本学习-4】
  6. 如何本地搭建centos7虚拟主机?
  7. laravel 增删改查 数据库设置 路由设置
  8. python读取大文件和普通文件
  9. Leecode刷题之旅-C语言/python-21.合并两个有序链表
  10. 文件 I/O字节流