原文链接:http://blog.csdn.net/Lu597203933/article/details/41802155

之前写过一篇blog叫做机器学习实战笔记之非均衡分类问题:http://blog.csdn.net/lu597203933/article/details/38666699  其中对Precision和Recall及ROC都有所讲解,其中区别在于Precision,Recall, F-score, MAP主要用于信息检索,而ROC曲线及其度量指标AUC主要用于分类和识别,ROC的详细介绍见上面的blog,这里的Precision、Recall和上篇blog的计算结果其实是一样的,只是这里从检索的角度进行理解。

一:Precision, Recall, F-score

信息检索、分类、识别、翻译等领域两个最基本指标是召回率(Recall Rate)和准确率(Precision Rate------注意统计学习方法中precesion称为精确率,而准确率为accuracy 是分类正确的样本除以总样本的个数。),召回率也叫查全率,准确率也叫查准率,概念公式:

召回率(Recall)=  系统检索到的相关文件 / 系统所有相关的文件总数;;;亦即预测为真实正例除以所有真实正例样本的个数

准确率(Precision)=  系统检索到的相关文件 / 系统所有检索到的文件总数;;;亦即等于预测为真实正例除以所有被预测为正例样本的个数

图示表示如下:

注意:

( 1 ) 准确率和召回率是互相影响的,理想情况下肯定是做到两者都高,但是一般情况下准确率高、召回率就低,召回率低、准确率高,当然如果两者都低,那是什么地方出问题了。

(2)如果是做搜索,那就是保证召回的情况下提升准确率;如果做疾病监测、反垃圾,则是保准确率的条件下,提升召回。

所以,在两者都要求高的情况下,可以用F1(或者称为F-score)来衡量。计算公式如下:

F1= 2 * P * R / (P + R)

(1) 公式基本上就是这样,但是如何算图1中的A、B、C、D呢?这需要人工标注,人工标注数据需要较多时间且枯燥,如果仅仅是做实验可以用用现成的语料。当然,还有一个办法,找个一个比较成熟的算法作为基准,用该算法的结果作为样本来进行比照,这个方法也有点问题,如果有现成的很好的算法,就不用再研究了。

(2)    形象直观的理解就是Recall要求的是全,宁可错杀一千,不能放过一人,这样Recall就会很高,但是precision就会最低。比如将所有的样本都判为正例,这是Recall就会等于1,但是很多负样本都被当做了正例,在某些情况就不适用,比如邮件过滤,此时要求的是准确率,不能是召回率,将所有的邮件都当做垃圾邮件肯定是最坏的结果(此时Recall=1)。

如果没有证据证明你有罪,那么你就有罪,召回率会很高;如果没有证据证明你有罪,那么你就无罪,召回率会很低,不全,很多人逍遥法外;

二:MAP

MAP:全称 mean average precision(平均准确率)。mAP是为解决P,R,F-measure的单点值局限性的,同时考虑了检索效果的排名情况。

计算如下:

假设有两个主题,主题1有4个相关网页,主题2有5个相关网页。某系统对于主题1检索出4个相关网页,其rank分别为1, 2, 4, 7;对于主题2检索出3个相关网页,其rank分别为1,3,5。对于主题1,平均准确率为(1/1+2/2+3/4+4/7)/4=0.83。对于主题 2,平均准确率为(1/1+2/3+3/5+0+0)/5=0.45。则MAP=(0.83+0.45)/2=0.64。”

参考文献:

1:http://blog.csdn.net/marising/article/details/6543943信息检索(IR)的评价指标介绍 - 准确率、召回率、F1、mAP、ROC、AUC

2:http://blog.sina.com.cn/s/blog_662234020100pozd.htmlMAP(Mean Average Precision)

3:http://wenku.baidu.com/view/ef91f011cc7931b765ce15ec.html

统计:mAP的中文意思相关推荐

  1. java 字符串 数字个数_JAVA 统计字符串中中文,英文,数字,空格的个数

    packagecom.example.test;public classCountCharacter {/**中文字符*/ private int chCharacter = 0;/**英文字符*/ ...

  2. python统计中英文字符个数-Python统计英文、中文、数字、空格等字符数

    Python统计字母.中文.数字.空格等字符数 # 统计一行字符的不同字符个数 str = input("请输入一行字符:") count1 = count2 = count3 = ...

  3. Python统计英文、中文、数字、空格等字符数

    Python统计字母.中文.数字.空格等字符数 参考文章:https://blog.csdn.net/Guo_Apple/article/details/69390107 # 统计一行字符的不同字符个 ...

  4. java 文本词频统计_Java实现中文词频统计

    昨日有个中文词频统计的需求, 百度一番后, 发现一大堆标题党文章, 讲的与内容严重不符, 这里就简单记录下自己实现的流程吧! 与英文单词的词频统计不同, 中文的难点在于如何分词, 不过好在有许多优秀的 ...

  5. python统计词频_Python中文分词及词频统计

    中文分词 中文分词(Chinese Word Segmentation),将中文语句切割成单独的词组.英文使用空格来分开每个单词的,而中文单独一个汉字跟词有时候完全不是同个含义,因此,中文分词相比英文 ...

  6. python中文分词统计_python 实现中文分词统计

    总是看到别人用Python搞各种统计,前端菜鸟的我也来尝试了一把.有各种语义分析库在,一切好像并不是很复杂.不过Python刚开始看,估计代码有点丑. 一.两种中文分词开发包 thulac (http ...

  7. python_1.统计字符串中,中文字符,英文字符、数字、空格和其他字符的个数?

    小题内容: 用户从键盘输入一行字符,统计并输出其中文字符,英文字符.数字.空格和其他字符的个数? """日期:20/8/26题目:统计不同字符的个数内容:用户从键盘输入一 ...

  8. python英文文本词频统计代码_Python小程序:文本词频统计(英文+中文)

    在学习了组合数据类型和文件操作之后就可以做出下面的文本词频统计的小程序了: 1. 下面是英文文本的词频统计,统计了作者的一篇英文论文 #文本词频统计:英文文本 def gettext(): #从文件中 ...

  9. 宏基因组扩增子3统计绘图:中文首发,最详系,零基础(箱线图、散点图、热图、曼哈顿图、火山图、韦恩图、三元图、网络图)

    本网内容首发"宏基因组"公众号,更佳阅读体验.更多相关文章,欢迎点我跳转至公众号阅读 注:文为蓝色字均为文章链接,可点击直达 写在前面 优秀的作品都有三部分曲,如骇客帝国.教父.指 ...

最新文章

  1. TCP/IP详解--第三章
  2. centos7.3 安装 mysql-5.7.13
  3. linux中的dup和fcntl的用法
  4. write() vs. writev()
  5. 博客索引-pyhui-第二版
  6. 硬纪元干货|镁客网萨向东:推动硬科技产业落地,助力传统产业升
  7. 服务器内存傲腾基本参数信息,服务器傲腾内存
  8. 散列表(Hash表)
  9. 4-产品需求文档PRD
  10. Qt开发——图片缩放简述
  11. 【无2022年聚合工艺考试模拟100题模拟考试平台操作
  12. android T 后台限制
  13. LightGBM综述
  14. 远程计算机的凭据无法工作,Windows远程桌面时提示凭证不工作问题的解决办法...
  15. 计算机各种硬盘的规格,PS4硬盘基本规格和普通电脑硬盘有何区别?具体解析一览...
  16. Travis CI 简介
  17. linux安装pymysql
  18. linux浏览器切换内核,电脑切换浏览器内核模式浏览网页的详细方法
  19. 【笔记】python的传递实参:位置实参、关键字实参、默认值、等效的函数调用、避免实参错误
  20. P1015 [NOIP1999 普及组] 回文数 C语言实现

热门文章

  1. 实力封装:Unity打包AssetBundle(二)
  2. 20165105第三周学习总结
  3. ZOJ 3965 Binary Tree Restoring
  4. Hexo安装配置详解
  5. $(document).ready(); $().ready(); $()
  6. 【转载】ARX给CAD发送命令的几种方法
  7. html5 canvas 画的简易时钟
  8. Android简单调用相机Camera功能,实现打开照相功能
  9. Java并发编程,3分分钟深入分析volatile的实现原理
  10. mysql 内置功能 存储过程介绍