基础概念及计算:

R语言 阈值效应_召回率


F值是P和 R的调和平均:

1/F1=1/2*(1/P+1/R) => F1 = (2*P*R)/(P+R);

加权调和平均:F(β)=[(1+β^2)*P*R] / [(β^2*P)+R] β=1,退化为F1,β>1,R更重要;β<1,P更重要;

ROC曲线与AUC:

ROC:横坐标:FPR(假正率)    纵坐标:TPR(真正率),这两个都是值分别是负样本的召回率、正样本的召回率;

AUC(Area Under ROC Curve);位于ROC曲线下方的面积(0<=AUC<=1):面积越大,模型性能越好;ROC上方的面积为积累的损失大小。

-----------------------------------------------------------------------------------------------------------------------

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

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

召回率 = 700 / 1400 = 50%

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

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

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

召回率 = 1400 / 1400 = 100%

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

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


指标各自的优缺点问题:


分类的目标有关系到指标的好坏


从R、P说到F值;


二分类:比如说,拦截导弹,我们希望把一切可能存在的敌方导弹全部拦截到,那么我们更看重的是召回率R,宁可错杀一千,不可放过1个;又如,垃圾邮件的过滤,有时候重要的邮件被判成垃圾邮件所造成的损失,可能远远大于收件箱还有部分垃圾邮件的存在,所以我们此时更看重准确率P; 在考虑更看重P或R的时候,我们也不能忽视R或P,就如,拦截导弹不可能为了追求召回率,连那个明确不是敌方导弹的导弹都给拦截,那么将会浪费巨大的拦截资源,也是一种愚蠢的做法;过滤垃圾邮件,不可能为了追求准确率,就只过滤1封垃圾邮件,那这个过滤垃圾的功能就太垃圾了;综合起来,就可能用到F值来调和两者的综合要求;


再谈ROC:ROC存在一个样本均衡的问题。比如,1万封邮件里面,里面有1封垃圾邮件,分别过滤出10封、50封、100封(都包含该垃圾邮件),那么看召回率都为100%,FPR分别为,9/9999,49/9999,99/9999;FPR数值表现不错,FPR要求越小越好;单看准确率分别为1/10,1/50,1/100;数据表现很差;所以看ROC的AUC问题表现不突出。而P-R 曲线对此就比较敏感了。


AUC和APR:在一定程度上表征了学习其在两变量上取得相对双高的比例;

多分类:看混合矩阵(Confusion Matrix)