• 机器学习:模型评估与选择:性能度量——查准率、查全率与F1


    【引入原因】

    错误率和精度虽常用,但并不能满足所有任务需求。

    什么任务需求呢?以西瓜问题为例,假定瓜农拉来一车西瓜,我们用训练好的模型对这些西瓜进行判别,显然,错误率衡量了有多少比例的瓜被判别错误,

    但是,若我们关心的是“挑出的西瓜中有多少比例是好瓜”,或者“所有好瓜中有多少比例被挑了出来”,

    那么错误率显然就不够用了,这是需要使用其他的性能度量。

    类似的需求在信息检索、Web搜索等应用中经常出现,例如在信息检索中,我们经常会关心“检索出的信息有多少比例是用户感兴趣的”,“用户感兴趣的信息中有多少被检索出来了”

    “查准率(precision)”(亦称“准确率”)与“查全率(recall)”(亦称“召回率”)是更为适用于此类需求的性能度量。

    【引入定义:一个二分类问题】

    可将样例根据其真实类别与学习器预测类别的组合划分为

    真正例(true positive),假正例(false positive),真反例(true negative),假反例(false negative)四种情形,

    令TP,FP,FN,TN分别表示其对应的样例数,则显然有TP+FP+TN+FN=样例总数

    分类结果的“混淆矩阵”(confusion matrix)如表2.1所示

    【定义】

    查准率P与查全率P分别定义为

    P=TP/(TP+FP)

    R=TP/(TP+FN)

    【PR的负相关关系】

    查准率与查全率是一对矛盾的度量。

    一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。

    例如,若希望将好瓜尽可能多地选出来,则可以通过增加选瓜的数量来实现,如果将所有西瓜都选上,那么所有的好瓜也必然都被选上了,但这样查准率就会偏低;

    若希望选出的瓜中好瓜比例尽可能高,则可只挑选最有把握的瓜,但这样就难免漏掉不少好瓜,使得查全率较低。

    通常只有在一些简单任务中,才可能使查全率和查准率都很高。

    【P-R曲线,P-R图】 

    在很多情形下,我们可根据学习器的预测结果对样例进行排序,排在前面的是学习器认为“最可能”是正例的样本,排在最后的则是学习器认为“最不可能”是正例的样本。

    按此顺序逐个把样本作为正例进行预测,则每次可以计算出当前的查全率、查准率。

    以查准率为纵轴,查全率为横轴作图,就得到了查准率-查全率曲线,简称“P-R曲线”,显示该曲线的图称为“P-R图”

    P-R图直观地显示出学习器在样本总体上的查全率、查准率。

    【引入F1:比较P-R曲线】

    在进行比较时,若一个学习器的P-R曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者,

    例如,图2.3中学习器A的性能优于学习器C

    如果两个学习器的P-R曲线发生了交叉,例如图2.3中的A和B,则难以一般性的断言两者孰优孰劣,只能在具体的查准率从或查全率条件下进行比较。

    然而,在很多情形下,人们往往仍希望把学习器A与B比出个高低。

    这时一个比较合理的判据是比较P-R曲线下面积的大小。

    它在一定程度上表征了学习器在查准率和查全率上取得“双高”的比例,

    但这个值不太容易估算,因此,人们设计了一些综合考虑查准率、查全率的性能度量。

    平衡点(Break-Even Point,简称BEP)就是这样一个度量,他是“查准率=查全率”时的取值,例如图2.3中学习器C的BEP是0.64,而基于BEP的比较,可认为学习器A优于B

    但BEP还是过于简化了些,更常用的是F1度量:

    F1 = 2xPxR/(P+R)=2xTP/(样例总数+TP-TN)

    【Fβ

    在一些应用中,对查准率和查全率的重视程度有所不同

    例如在商品推荐系统中,为了尽可能少打扰用户,更希望推荐内容确是用户感兴趣的,此时查准率更重要;

    而在逃犯信息检索系统中,更希望尽可能少漏掉逃犯,此时查全率更重要

    F1度量的一般形式——Fβ,能让我们表达出对查准率/查全率的不同偏好,

    它定义为:Fβ = (1+β2)xPxR/[(β2xP)+R]

    其中β>0都凉了查全率对查准率的相对重要性,β=1时退化为标准的F1,β>1时查全率有更大影响;β<1时查准率有更大影响

    【多个二分类问题】

    很多时候,我们有多个二分类混淆矩阵,例如进行多次训练/测试,每次得到一个混淆矩阵;或是在多个数据集上进行训练/测试,希望估计算法的“全局”性能;

    甚或是执行多酚类任务,每两两类别的组合都对应一个混淆矩阵;……

    总之,我们希望在n个二分类混淆矩阵上综合考察查准率和查全率

    • 一种直接的做法是先在各混淆矩阵上分别计算出查准率和查全率,记为(P1,R1)(P2,R2),……,(Pn,Rn),再计算平均值

    这样就得到“宏查准率”(macro-P)“宏查全率”(macro-R),以及相应的“宏F1”(macro-F1)

    • 还可先将各混淆矩阵的对应元素进行平均,,得到TP,FP,TN,FN的平均值,
  • 相关阅读:
    如何利用InstallShield for Delphi7打包Oracle9i客户端制作C/S数据库应用程序?
    delphi 保存 和 打开 TREE VIEW的节点已经展开的状态
    在Delphi中的TreeView中保存多个数据
    FastReport经验
    农码一生博文索引
    再讲IQueryable<T>,揭开表达式树的神秘面纱
    你知道C#中的Lambda表达式的演化过程吗?
    先说IEnumerable,我们每天用的foreach你真的懂它吗?
    Linq表达式、Lambda表达式你更喜欢哪个?
    你必须知道的EF知识和经验
  • 原文地址:https://www.cnblogs.com/ForTech/p/8547071.html
Copyright © 2020-2023  润新知