推荐系统评测指标—准确率(Precision)、召回率(Recall)、F值(F-Measure)

来源:互联网 发布:linux 上传文件权限 编辑:程序博客网 时间:2024/04/27 18:43

推荐系统评测指标—准确率(Precision)、召回率(Recall)、F值(F-Measure) 

1、准确率与召回率(Precision & Recall)

准确率召回率是广泛用于信息检索和统计学分类领域的两个度量值,用来评价结果的质量。其中精度是检索出相关文档数与检索出的文档总数的比率,衡量的是检索系统的查准率;召回率是指检索出的相关文档数和文档库中所有的相关文档数的比率,衡量的是检索系统的查全率

一般来说,Precision就是检索出来的条目(比如:文档、网页等)有多少是准确的,Recall就是所有准确的条目有多少被检索出来了。

正确率、召回率和 F 值是在鱼龙混杂的环境中,选出目标的重要评价指标。不妨看看这些指标的定义先:

    1. 正确率 = 提取出的正确信息条数 /  提取出的信息条数     

    2. 召回率 = 提取出的正确信息条数 /  样本中的信息条数    

两者取值在0和1之间,数值越接近1,查准率或查全率就越高。   

    3. F值  = 正确率 * 召回率 * 2 / (正确率 + 召回率) (F 值即为正确率和召回率的调和平均值)

不妨举这样一个例子:某池塘有1400条鲤鱼,300只虾,300只鳖。现在以捕鲤鱼为目的。撒一大网,逮着了700条鲤鱼,200只虾,100只鳖。那么,这些指标分别如下:

正确率 = 700 / (700 + 200 + 100) = 70%

召回率 = 700 / 1400 = 50%

F值 = 70% * 50% * 2 / (70% + 50%) = 58.3%

不妨看看如果把池子里的所有的鲤鱼、虾和鳖都一网打尽,这些指标又有何变化:

正确率 = 1400 / (1400 + 300 + 300) = 70%

召回率 = 1400 / 1400 = 100%

F值 = 70% * 100% * 2 / (70% + 100%) = 82.35%        

由此可见,正确率是评估捕获的成果中目标成果所占得比例;召回率,顾名思义,就是从关注领域中,召回目标类别的比例;而F值,则是综合这二者指标的评估指标,用于综合反映整体的指标

当然希望检索结果Precision越高越好,同时Recall也越高越好,但事实上这两者在某些情况下有矛盾的。比如极端情况下,我们只搜索出了一个结果,且是准确的,那么Precision就是100%,但是Recall就很低;而如果我们把所有结果都返回,那么比如Recall是100%,但是Precision就会很低。因此在不同的场合中需要自己判断希望Precision比较高或是Recall比较高。如果是做实验研究,可以绘制Precision-Recall曲线来帮助分析。

2、综合评价指标(F-Measure)

P和R指标有时候会出现的矛盾的情况,这样就需要综合考虑他们,最常见的方法就是F-Measure(又称为F-Score)。

F-Measure是Precision和Recall加权调和平均

当参数α=1时,就是最常见的F1,也即

可知F1综合了P和R的结果,当F1较高时则能说明试验方法比较有效。

3、E值

E值表示查准率P和查全率R的加权平均值,当其中一个为0时,E值为1,其计算公式:

b越大,表示查准率的权重越大。

4、平均正确率(Average Precision, AP)

平均正确率表示不同查全率的点上的正确率的平均。


True Positive (真正, TP)被模型预测为正的正样本;

True Negative(真负 , TN)被模型预测为负的负样本 ;

False Positive (假正, FP)被模型预测为正的负样本;

False Negative(假负 , FN)被模型预测为负的正样本;

True Positive Rate(真正率 , TPR)或灵敏度(sensitivity) 
   TPR = TP /(TP + FN) 
   正样本预测结果数 / 正样本实际数

True Negative Rate(真负率 , TNR)或特指度(specificity) 
   TNR = TN /(TN + FP) 
   负样本预测结果数 / 负样本实际数 

False Positive Rate (假正率, FPR) 
   FPR = FP /(FP + TN) 
   被预测为正的负样本结果数 /负样本实际数 

False Negative Rate(假负率 , FNR) 
   FNR = FN /(TP + FN) 
   被预测为负的正样本结果数 / 正样本实际数

召回率和精度:

- 系统检索到的相关文档(A)

       - 系统检索到的不相关文档(B)

       - 相关但是系统没有检索到的文档(C)

       - 不相关但是被系统检索到的文档(D)

 

 

直观的说,一个好的检索系统检索到的相关文档越多越好,不相关文档越少越好.

召回率和精度是衡量信息检索系统性能最重要的参数.

召回率R:用检索到相关文档数作为分子,所有相关文档总数作为分母,即 R=A/(A+C)

精度P 用检索到相关文档数作为分子,所有检索到的文档总数作为分母.即  P=A/(A+B).

 

检索到

A

B

未检索到

C

D




自然语言处理(ML),机器学习(NLP),信息检索(IR)等领域,评估(evaluation)是一个必要的工作,而其评价指标往往有如下几点:准确率(accuracy),精确率(Precision),召回率(Recall)和F1-Measure。

本文将简单介绍其中几个概念。中文中这几个评价指标翻译各有不同,所以一般情况下推荐使用英文。

 

现在我先假定一个具体场景作为例子:

假如某个班级有男生80人,女生20人,共计100人.目标是找出所有女生.
现在某人挑选出50个人,其中20人是女生,另外还错误的把30个男生也当作女生挑选出来了.
作为评估者的你需要来评估(evaluation)下他的工作

 将挑选结果用 矩阵示意表来表示 : 定义TP,FN,FP,TN四种分类情况

 相关(Relevant),正类无关(NonRelevant),负类被检索到(Retrieved)TP 系统检索到的相关文档,例"其中20人是女生"FP 系统检索到的不相关文档,例”错误把30个男生当女生“未被检索到(Not Retrieved)FN 相关系统未检索到的文档,例"未挑0人是女生"TN 相关但是系统没有检索到的文档,例”未挑50人非女生

 准确率(accuracy)的公式是A=(TP+TN)/(TP+FP+FN+TN),其定义是: 对于给定的测试数据集,分类器正确分类的样本数与总样本数之比。也就是损失函数是0-1损失时测试数据集上的准确率

A = (20+50) / 100 = 70%

 精确率(precision)的公式是P=TP/(TP+FP),它计算的是所有被检索到的item中,"应该被检索到"的item占的比例。 

P = 20 / (20+30) = 40%

召回率(recall)的公式是R=TP/(TP+FN),它计算的是所有检索到的item占所有"应该检索到的item"的比例。

R = 20 / (20 + 0) = 100% 

综合评价指标(F-Measure)是Precision和Recall加权调和平均:

 F = \frac{(a^2+1)P*R} {a^2(P+R)} \hfill (3)

当参数a=1时,就是最常见的F1了:

 F1 = \frac{2PR} {P+R} \hfill (4)

P和R指标有的时候是矛盾的,综合考虑精确率(precision)和召回率(recall)这两个度量值。很容易理解,F1综合了P和R的结果,当F1较高时则比较说明实验方法比较理想。

F1 = 2*0.4*1 / (0.4 + 1) = 57%



0 0