yuCode22 Comments♤ Hide Sidebar Tuesday, January 15th, 2013html
机器学习(ML),天然语言处理(NLP),信息检索(IR)等领域,评估(Evaluation)是一个必要的工做,而其评价指标每每有以下几点:准确率(Accuracy),精确率(Precision),召回率(Recall)和F1-Measure。(注:相对来讲,IR 的 ground truth 不少时候是一个 Ordered List, 而不是一个 Bool 类型的 Unordered Collection,在都找到的状况下,排在第三名仍是第四名损失并非很大,而排在第一名和第一百名,虽然都是“找到了”,可是意义是不同的,所以更多可能适用于 MAP 之类评估指标。)git
本文将简单介绍其中几个概念。中文中这几个评价指标翻译各有不一样,因此通常状况下推荐使用英文。github
如今我先假定一个具体场景做为例子。算法
假如某个班级有男生 80人,女生 20人,共计 100人.目标是找出全部女生. 如今某人挑选出 50我的,其中 20人是女生,另外还错误的把30个男生也看成女生挑选出来了. 做为评估者的你须要来评估( evaluation)下他的工做
首先咱们能够计算准确率(accuracy),其定义是: 对于给定的测试数据集,分类器正确分类的样本数与总样本数之比。也就是损失函数是0-1损失时测试数据集上的准确率[1].c#
这样说听起来有点抽象,简单说就是,前面的场景中,实际状况是那个班级有男的和女的两类,某人(也就是定义中所说的分类器)他又把班级中的人分为男女两类。accuracy须要获得的是此君分正确的人占总人数的比例。很容易,咱们能够获得:他把其中70(20女+50男)人断定正确了,而总人数是100人,因此它的accuracy就是70 %(70 / 100).机器学习
由准确率,咱们的确能够在一些场合,从某种意义上获得一个分类器是否有效,但它并不老是能有效的评价一个分类器的工做。举个例子,google抓取了argcv 100个页面,而它索引中共有10,000,000个页面,随机抽一个页面,分类下,这是否是argcv的页面呢?若是以accuracy来判断个人工做,那我会把全部的页面都判断为"不是argcv的页面",由于我这样效率很是高(return false,一句话),而accuracy已经到了99.999%(9,999,900/10,000,000),完爆其它不少分类器辛辛苦苦算的值,而我这个算法显然不是需求期待的,那怎么解决呢?这就是precision,recall和f1-measure出场的时间了.ide
在说precision,recall和f1-measure以前,咱们须要先须要定义TP,FN,FP,TN四种分类状况. 按照前面例子,咱们须要从一个班级中的人中寻找全部女生,若是把这个任务当成一个分类器的话,那么女生就是咱们须要的,而男生不是,因此咱们称女生为"正类",而男生为"负类".函数
相关(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结果.
话虽然不少,其实实现很是轻松,点击此处能够看到个人一个简单的实现.