机器学习(ML),天然语言处理(NLP),信息检索(IR)等领域,评估(Evaluation)是一个必要的 工做,而其评价指标每每有以下几点:准确率(Accuracy),精确率(Precision),召回率(Recall)和F1-Measure。(注: 相对来讲,IR 的 ground truth 不少时候是一个 Ordered List, 而不是一个 Bool 类型的 Unordered Collection,在都找到的状况下,排在第三名仍是第四名损失并非很大,而排在第一名和第一百名,虽然都是“找到了”,可是意义是不同的,所以 更多可能适用于 MAP 之类评估指标。)html
本文将简单介绍其中几个概念。中文中这几个评价指标翻译各有不一样,因此通常状况下推荐使用英文。python
如今我先假定一个具体场景做为例子。
git
假如某个班级有男生80人,女生20人,共计100人.目标是找出全部女生.
如今某人挑选出50我的,其中20人是女生,另外还错误的把30个男生也看成女生挑选出来了.
做为评估者的你须要来评估(evaluation)下他的工做github
首先咱们能够计算准确率(accuracy),其定义是: 对于给定的测试数据集,分类器正确分类的样本数与总样本数之比。也就是损失函数是0-1损失时测试数据集上的准确率[1]. 算法
这样说听起来有点抽象,简单说就是,前面的场景中,实际状况是那个班级有男的和女的两类,某人(也就是定义中所说的分类器)他又把班级中的人分为男女两类。accuracy须要获得的是此君分正确的人占总人数的比例。很容易,咱们能够获得:他把其中70(20女+50男)人断定正确了,而总人数是100人,因此它的accuracy就是70 %(70 / 100). c#
由准确率,咱们的确能够在一些场合,从某种意义上获得一个分类器是否有效,但它并不老是能有效的评价一个分类器的工做。举个例子,google抓取 了argcv 100个页面,而它索引中共有10,000,000个页面,随机抽一个页面,分类下,这是否是argcv的页面呢?若是以accuracy来判断个人工 做,那我会把全部的页面都判断为"不是argcv的页面",由于我这样效率很是高(return false,一句话),而accuracy已经到了99.999%(9,999,900/10,000,000),完爆其它不少分类器辛辛苦苦算的值,而我这个算法显然不是需求期待的,那怎么解决呢?这就是precision,recall和f1-measure出场的时间了.机器学习
在说precision,recall和f1-measure以前,咱们须要先须要定义TP,FN,FP,TN四种分类状况.
按照前面例子,咱们须要从一个班级中的人中寻找全部女生,若是把这个任务当成一个分类器的话,那么女生就是咱们须要的,而男生不是,因此咱们称女生为"正类",而男生为"负类".ide
相关(Relevant),正类 | 无关(NonRelevant),负类 | |
被检索到(Retrieved) | true positives(TP 正类断定为正类,例子中就是正确的断定"这位是女生") | false positives(FP 负类断定为正类,"存伪",例子中就是分明是男生却判断为女生,当下伪娘横行,这个错常有人犯) |
未被检索到(Not Retrieved) | false negatives(FN 正类断定为负类,"去真",例子中就是,分明是女生,这哥们却判断为男生--梁山伯同窗犯的错就是这个) | true negatives(TN 负类断定为负类,也就是一个男生被判断为男生,像我这样的纯爷们一准儿就会在此处) |
经过这张表,咱们能够很容易获得这几个值:
TP=20
FP=30
FN=0
TN=50函数
精确率(precision)的公式是,它计算的是全部"正确被检索的item(TP)"占全部"实际被检索到的(TP+FP)"的比例.工具
在例子中就是但愿知道此君获得的全部人中,正确的人(也就是女生)占有的比例.因此其precision也就是40%(20女生/(20女生+30误判为女生的男生)).
召回率(recall)的公式是,它计算的是全部"正确被检索的item(TP)"占全部"应该检索到的item(TP+FN)"的比例。
在例子中就是但愿知道此君获得的女生占本班中全部女生的比例,因此其recall也就是100%(20女生/(20女生+ 0 误判为男生的女生))
F1值就是精确值和召回率的调和均值,也就是
调整下也就是
例子中 F1-measure 也就是约为 57.143%().
须要说明的是,有人[2]列了这样个公式
将F-measure通常化.
F1-measure认为精确率和召回率的权重是同样的,但有些场景下,咱们可能认为精确率会更加剧要,调整参数a,使用Fa-measure能够帮助咱们更好的evaluate结果.
话虽然不少,其实实现很是轻松,点击此处能够看到个人一个简单的实现.
[1] 李航. 统计学习方法[M]. 北京:清华大学出版社,2012.
[2] 准确率(Precision)、召回率(Recall)以及综合评价指标(F1-Measure )
假设一个班级有100个学生,其中男生70人,女生30人。以下图,蓝色矩形表示男生,橙色矩形表示女生。
又假设,咱们不知道这些学生的性别,只知道他们的身高和体重。咱们有一个程序(分类器),这个程序能够经过分析每一个学生的身高和体重,对这100个学生的性别分别进行预测。最后的预测结果为,60人为男生,40人为女生,以下图。
TP:实际为男生,预测为男生;
FP:实际为女生,预测为男生;
FN:实际为男生,预测为女生;
TN:实际为女生,预测为女生;
能够看到,上面的预测结果并非很好。假设咱们优化了程序后,再次进行预测。预测结果为:
各项指标都比第一次高,说明预测效果更好。从图上也能看出来,预测为男生的范围与实际男生范围更接近。
==================================================
本身理解 + 我老师的说法就是,准确率就是找得对,召回率就是找得全。
大概就是你问问一个模型,这堆东西是否是某个类的时候,准确率就是 它说是,这东西就确实是的几率吧,召回率就是, 它说是,但它漏说了(1-召回率)这么多。
==================================================
在信息检索、分类体系中,有一系列的指标,搞清楚这些指标对于评价检索和分类性能很是重要,所以最近根据网友的博客作了一个汇总。
准确率、召回率、F1
信息检索、分类、识别、翻译等领域两个最基本指标是召回率(Recall Rate)和准确率(Precision Rate),召回率也叫查全率,准确率也叫查准率,概念公式:
召回率(Recall) = 系统检索到的相关文件 / 系统全部相关的文件总数
准确率(Precision) = 系统检索到的相关文件 / 系统全部检索到的文件总数
图示表示以下:
注意:准确率和召回率是互相影响的,理想状况下确定是作到二者都高,可是通常状况下准确率高、召回率就低,召回率低、准确率高,固然若是二者都低,那是什么地方出问题了。通常状况,用不一样的阀值,统计出一组不一样阀值下的精确率和召回率,以下图:
若是是作搜索,那就是保证召回的状况下提高准确率;若是作疾病监测、反垃圾,则是保准确率的条件下,提高召回。
因此,在二者都要求高的状况下,能够用F1来衡量。
公式基本上就是这样,可是如何算图1中的A、B、C、D呢?这须要人工标注,人工标注数据须要较多时间且枯燥,若是仅仅是作实验能够用用现成的语料。固然,还有一个办法,找个一个比较成熟的算法做为基准,用该算法的结果做为样原本进行比照,这个方法也有点问题,若是有现成的很好的算法,就不用再研究了。
AP和mAP(mean Average Precision)
mAP是为解决P,R,F-measure的单点值局限性的。为了获得 一个可以反映全局性能的指标,能够看考察下图,其中两条曲线(方块点与圆点)分布对应了两个检索系统的准确率-召回率曲线
能够看出,虽然两个系统的性能曲线有所交叠可是以圆点标示的系统的性能在绝大多数状况下要远好于用方块标示的系统。
从中咱们能够 发现一点,若是一个系统的性能较好,其曲线应当尽量的向上突出。
更加具体的,曲线与坐标轴之间的面积应当越大。
最理想的系统, 其包含的面积应当是1,而全部系统的包含的面积都应当大于0。这就是用以评价信息检索系统的最经常使用性能指标,平均准确率mAP其规范的定义以下:(其中P,R分别为准确率与召回率)
ROC和AUC
ROC和AUC是评价分类器的指标,上面第一个图的ABCD仍然使用,只是须要稍微变换。
回到ROC上来,ROC的全名叫作Receiver Operating Characteristic。
ROC关注两个指标
True Positive Rate ( TPR ) = TP / [ TP + FN] ,TPR表明能将正例分对的几率
False Positive Rate( FPR ) = FP / [ FP + TN] ,FPR表明将负例错分为正例的几率
在ROC 空间中,每一个点的横坐标是FPR,纵坐标是TPR,这也就描绘了分类器在TP(真正的正例)和FP(错误的正例)间的trade-off。ROC的主要分 析工具是一个画在ROC空间的曲线——ROC curve。咱们知道,对于二值分类问题,实例的值每每是连续值,咱们经过设定一个阈值,将实例分类到正类或者负类(好比大于阈值划分为正类)。所以咱们 能够变化阈值,根据不一样的阈值进行分类,根据分类结果计算获得ROC空间中相应的点,链接这些点就造成ROC curve。ROC curve通过(0,0)(1,1),实际上(0, 0)和(1, 1)连线造成的ROC curve实际上表明的是一个随机分类器。通常状况下,这个曲线都应该处于(0, 0)和(1, 1)连线的上方。如图所示。
用ROC curve来表示分类器的performance很直观好用。但是,人们老是但愿能有一个数值来标志分类器的好坏。
因而Area Under roc Curve(AUC)就出现了。顾名思义,AUC的值就是处于ROC curve下方的那部分面积的大小。一般,AUC的值介于0.5到1.0之间,较大的AUC表明了较好的Performance。
AUC计算工具:
http://mark.goadrich.com/programs/AUC/
P/R和ROC是两个不一样的评价指标和计算方式,通常状况下,检索用前者,分类、识别等用后者。
参考连接:
http://www.vanjor.org/blog/2010/11/recall-precision/
http://bubblexc.com/y2011/148/
http://wenku.baidu.com/view/ef91f011cc7931b765ce15ec.html
:Recall,又称“查全率”——仍是查全率好记,也更能体现其实质意义。
准确率
“召回率”与“准确率”虽然没有必然的关系(从上面公式中能够看到),在实际应用中,是相互制约的。要根据实际需求,找到一个平衡点。
当 咱们问检索系统某一件事的全部细节时(输入检索query查询词),Recall指:检索系统能“回忆”起那些事的多少细节,通俗来说就是“回忆的能 力”。“能回忆起来的细节数” 除以 “系统知道这件事的全部细节”,就是“记忆率”,也就是recall——召回率。简单的,也能够理解为查全率。
________________________________________________________________
在人工智能中,混淆矩阵(confusion matrix)是可视化工具,特别用于监督学习,在无监督学习通常叫作匹配矩阵。
预测 | ||||
类1
|
类2
|
类3
|
||
实际 |
类1
|
43
|
5
|
2
|
类2
|
2
|
45
|
3
|
|
类3
|
0
|
1
|
49
|
第一行说明类1的50个样本有43个分类正确,5个错分为类2,2个错分为类3
Precision表示被分为正例的示例中实际为正例的比例,precision=TP/(TP+FP)。即,一个二分类,类别分别命名为1和2,Precision就表示在类别1中,分对了的数量占了类别1总数量的多少;同理,也表示在类别2中,分对了的数量占类别2总数量的多少。那么这个指标越高,就表示越整齐不混乱。
而Accuracy是咱们最多见的评价指标,accuracy = (TP+TN)/(P+N),这个很容易理解,就是被分对的样本数除以全部的样本数,一般来讲,正确率越高,分类器越好。咱们最常说的就是这个准确率。--------------------- 做者:diligentlee 来源:CSDN 原文:https://blog.csdn.net/diligentlee/article/details/80020713 版权声明:本文为博主原创文章,转载请附上博文连接!