精华内容
下载资源
问答
  • 召回率

    千次阅读 2015-06-25 08:49:24
    召回率(Recall Rate,也叫查全率)是检索出的相关文档数和文档库中所有的相关文档数的比率,衡量的是检索系统的查全率;精度是检索出的相关文档数与检索出的文档总数的比率,衡量的是检索系统的查准率。召回率(Recall)...
    召回率(Recall Rate,也叫 查全率)是检索出的相关文档数和文档库中所有的相关文档数的比率,衡量的是检索系统的查全率;精度是检索出的相关文档数与检索出的文档总数的比率,衡量的是 检索系统查准率。召回率(Recall)和精度(Precise)是广泛用于信息检索和统计学分类领域的两个度量值,用来评价结果的质量
    中文名
    召回率
    外文名
    Recall Rate
    也    叫
    衡    量

    1基本概念编辑

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

    2计算方法编辑

    召回率和精度示意图
    recall recall
    假定:从一个大规模数据集合中检索文档的时,可把文档分成四组:
    - 系统检索到的相关文档(A)
    - 系统检索到的不相关文档(B)
    - 相关但是系统没有检索到的文档(C)
    - 不相关且没有被系统检索到的文档(D)
    则:
    - 召回率R:用检索到相关文档数作为分子,所有相关文档总数作为分母,即R = A / ( A + C )
    - 精度P:用检索到相关文档数作为分子,所有检索到的文档总数作为分母.即P = A / ( A + B ).
    举例来说:
    一个数据库有500个文档,其中有50个文档符合定义的问题。系统检索到75个文档,但是只有45个符合定义的问题。
    召回率R=45/50=90%
    精度P=45/75=60%
    本例中,系统检索是比较有效的,召回率为90%。但是结果有很大的噪音,有近一半的检索结果是不相关。研究表明:在不牺牲精度的情况下,获得一个高召回率是很困难的

    3搜索系统编辑

    对于一个检索系统来讲,召回率和精度不可能两全其美:召回率高时,精度低,精度高时,召回率低。所以常常用11种召回率下11种精度的平均值来衡量一个检索系统的精度。我们也可以将这两个 度量值融合成一个度量值,如F度量(F-measure)。对于搜索引擎系统来讲,因为没有一个搜索引擎 [1]  系统能够搜集到所有的WEB网页,所以召回率很难计算。 搜索引擎系统都非常关心精度。
    影响一个搜索引擎系统的性能有很多因素,最主要的是信息检索模型,包括文档和查询的表示方法、评价文档和用户查询相关性的匹配策略、查询结果的排序方法和用户进行相关度反馈的机制。
    “召回率”与“ 准确率”虽然没有必然的关系,然而在大规模数据集合中,这两个指标却是相互制约的。
    由于“检索策略”并不完美,希望更多相关的文档被检索到时,放宽“检索策略”时,往往也会伴随出现一些不相关的结果,从而使准确率受到影响。
    而希望去除检索 [2]  结果中的不相关文档时,务必要将“检索策略”定的更加严格,这样也会使有一些相关的文档不再能被检索到,从而使召回率受到影响。
    凡是设计到大规模数据集合的检索和选取,都涉及到“召回率”和“准确率”这两个指标。而由于两个指标相互制约,我们通常也会根据需要为“检索策略”选择一个合适的度,不能太严格也不能太松,寻求在召回率和准确率中间的一个平衡点。这个平衡点由具体需求决定。

    4常用名词编辑

    TP —— True Positive (真正, TP)被模型预测为正的正样本;可以称作判断为真的正确率
    TN —— True Negative(真负 , TN)被模型预测为负的负样本 ;可以称作判断为假的正确率
    FP ——False Positive (假正, FP)被模型预测为正的负样本;可以称作误报率
    FN——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) 
      被预测为负的正样本结果数 / 正样本实际数
    展开全文
  • 以下第一部分内容转载自:机器学习算法中的准确率(Precision)、召回率(Recall)、F值(F-Measure)是怎么一回事摘要:数据挖掘、机器学习和推荐系统中的评测指标—准确率(Precision)、召回率(Recall)、F值(F-Measure)...

    增注:虽然当时看这篇文章的时候感觉很不错,但是还是写在前面,想要了解关于机器学习度量的几个尺度,建议大家直接看周志华老师的西瓜书的第2章:模型评估与选择,写的是真的很好!!

    以下第一部分内容转载自:机器学习算法中的准确率(Precision)、召回率(Recall)、F值(F-Measure)是怎么一回事

    摘要:

    数据挖掘、机器学习和推荐系统中的评测指标—准确率(Precision)、召回率(Recall)、F值(F-Measure)简介。

    引言:

    在机器学习、数据挖掘、推荐系统完成建模之后,需要对模型的效果做评价。

    业内目前常常采用的评价指标有准确率(Precision)、召回率(Recall)、F值(F-Measure)等,下图是不同机器学习算法的评价指标。下文讲对其中某些指标做简要介绍。

    这里写图片描述

    本文针对二元分类器!
    本文针对二元分类器!!
    本文针对二元分类器!!!

    对分类的分类器的评价指标将在以后文章中介绍。

    在介绍指标前必须先了解“混淆矩阵”:

    混淆矩阵

    True Positive(真正,TP):将正类预测为正类数

    True Negative(真负,TN):将负类预测为负类数

    False Positive(假正,FP):将负类预测为正类数误报 (Type I error)

    False Negative(假负,FN):将正类预测为负类数→漏报 (Type II error)

    这里写图片描述

    这里写图片描述

    1、准确率(Accuracy)

    准确率(accuracy)计算公式为:
    这里写图片描述

    注:准确率是我们最常见的评价指标,而且很容易理解,就是被分对的样本数除以所有的样本数,通常来说,正确率越高,分类器越好。
    准确率确实是一个很好很直观的评价指标,但是有时候准确率高并不能代表一个算法就好。比如某个地区某天地震的预测,假设我们有一堆的特征作为地震分类的属性,类别只有两个:0:不发生地震、1:发生地震。一个不加思考的分类器,对每一个测试用例都将类别划分为0,那那么它就可能达到99%的准确率,但真的地震来临时,这个分类器毫无察觉,这个分类带来的损失是巨大的。为什么99%的准确率的分类器却不是我们想要的,因为这里数据分布不均衡,类别1的数据太少,完全错分类别1依然可以达到很高的准确率却忽视了我们关注的东西。再举个例子说明下。在正负样本不平衡的情况下,准确率这个评价指标有很大的缺陷。比如在互联网广告里面,点击的数量是很少的,一般只有千分之几,如果用acc,即使全部预测成负类(不点击)acc也有 99% 以上,没有意义。因此,单纯靠准确率来评价一个算法模型是远远不够科学全面的。

    2、错误率(Error rate)

    错误率则与准确率相反,描述被分类器错分的比例,error rate = (FP+FN)/(TP+TN+FP+FN),对某一个实例来说,分对与分错是互斥事件,所以accuracy =1 - error rate。

    3、灵敏度(sensitive)

    sensitive = TP/P,表示的是所有正例中被分对的比例,衡量了分类器对正例的识别能力。

    4、特效度(specificity)

    specificity = TN/N,表示的是所有负例中被分对的比例,衡量了分类器对负例的识别能力。

    5、精确率、精度(Precision)

    精确率(precision)定义为:
    这里写图片描述

    表示被分为正例的示例中实际为正例的比例。

    6、召回率(recall)

    召回率是覆盖面的度量,度量有多个正例被分为正例,recall=TP/(TP+FN)=TP/P=sensitive,可以看到召回率与灵敏度是一样的。

    7、综合评价指标(F-Measure)
    P和R指标有时候会出现的矛盾的情况,这样就需要综合考虑他们,最常见的方法就是F-Measure(又称为F-Score)。
    F-Measure是Precision和Recall加权调和平均:
    这里写图片描述
    当参数α=1时,就是最常见的F1,也即
    这里写图片描述
    可知F1综合了P和R的结果,当F1较高时则能说明试验方法比较有效。

    8、其他评价指标

    计算速度:分类器训练和预测需要的时间;

    鲁棒性:处理缺失值和异常值的能力;

    可扩展性:处理大数据集的能力;

    可解释性:分类器的预测标准的可理解性,像决策树产生的规则就是很容易理解的,而神经网络的一堆参数就不好理解,我们只好把它看成一个黑盒子。

    下面来看一下ROC和PR曲线(以下内容为自己总结):

    1、ROC曲线:
    ROC(Receiver Operating Characteristic)曲线是以假正率(FP_rate)和真正率(TP_rate)为轴的曲线,ROC曲线下面的面积我们叫做AUC,如下图所示:
    图片根据Paper:Learning from eImbalanced Data画出

    图片根据Paper:Learning from eImbalanced Data画出

    其中: T P r a t e = T P P c TP_{rate}=\frac{TP}{P_c} TPrate=PcTP, F P r a t e = F P N c FP_rate=\frac{FP}{N_c} FPrate=NcFP
    (1)曲线与FP_rate轴围成的面积(记作AUC)越大,说明性能越好,即图上L2曲线对应的性能优于曲线L1对应的性能。即:曲线越靠近A点(左上方)性能越好,曲线越靠近B点(右下方)曲线性能越差。
    (2)A点是最完美的performance点,B处是性能最差点。
    (3)位于C-D线上的点说明算法性能和random猜测是一样的–如C、D、E点。位于C-D之上(即曲线位于白色的三角形内)说明算法性能优于随机猜测–如G点,位于C-D之下(即曲线位于灰色的三角形内)说明算法性能差于随机猜测–如F点。
    (4)虽然ROC曲线相比较于Precision和Recall等衡量指标更加合理,但是其在高不平衡数据条件下的的表现仍然过于理想,不能够很好的展示实际情况。

    2、PR曲线:
    即,PR(Precision-Recall)曲线。
    举个例子(例子来自Paper:Learning from eImbalanced Data):
    假设N_c>>P_c(即Negative的数量远远大于Positive的数量),若FP很大,即有很多N的sample被预测为P,因为 F P r a t e = F P N c FP_{rate}=\frac{FP}{N_c} FPrate=NcFP,因此FP_rate的值仍然很小(如果利用ROC曲线则会判断其性能很好,但是实际上其性能并不好),但是如果利用PR,因为Precision综合考虑了TP和FP的值,因此在极度不平衡的数据下(Positive的样本较少),PR曲线可能比ROC曲线更实用。

    展开全文
  • 准确率与召回率

    万次阅读 2018-10-03 11:53:21
    1、两个最常见的衡量指标是“准确率(precision)”(你给出的结果有多少是正确的)和“召回率(recall)”(正确的结果有多少被你给出了) 这两个通常是此消彼长的(trade off),很难兼得。很多时候用参数来控制...

    1、两个最常见的衡量指标是“准确率(precision)”(你给出的结果有多少是正确的)和“召回率(recall)”(正确的结果有多少被你给出了)

           这两个通常是此消彼长的(trade off),很难兼得。很多时候用参数来控制,通过修改参数则能得出一个准确率和召回率的曲线(ROC),这条曲线与x和y轴围成的面积就是AUC(ROC  Area)。AUC可以综合衡量一个预测模型的好坏,这一个指标综合了precision和recall两个指标。

    但AUC计算很麻烦,有人用简单的F-score来代替。F-score计算方法很简单:

    F-score = (2*precision*recall) / (precision+recall)

    即使不是算数平均,也不是几何平均。可以理解为几何平均的平方除以算术平均。

    不妨举这样一个例子:某池塘有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越大,表示查准率的权重越大。

    展开全文
  • sklearn计算准确率、精确率、召回率、F1 score

    万次阅读 多人点赞 2019-03-06 16:27:26
    目录混淆矩阵准确率精确率召回率 分类是机器学习中比较常见的任务,对于分类任务常见的评价指标有准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1 score、ROC曲线(Receiver Operating ...


    分类是机器学习中比较常见的任务,对于分类任务常见的评价指标有准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1 score、ROC曲线(Receiver Operating Characteristic Curve)等。
    这篇文章将结合sklearn对准确率、精确率、召回率、F1 score进行讲解,ROC曲线可以参考我的这篇文章: sklearn ROC曲线使用

    混淆矩阵

    pic_1
    如上图所示,要了解各个评价指标,首先需要知道混淆矩阵,混淆矩阵中的P表示Positive,即正例或者阳性,N表示Negative,即负例或者阴性。
    表中FP表示实际为负但被预测为正的样本数量,TN表示实际为负被预测为负的样本的数量,TP表示实际为正被预测为正的样本数量,FN表示实际为正但被预测为负的样本的数量。
    另外,TP+FP=P’表示所有被预测为正的样本数量,同理FN+TN为所有被预测为负的样本数量,TP+FN为实际为正的样本数量,FP+TN为实际为负的样本数量。

    准确率

    准确率是分类正确的样本占总样本个数的比例,即
    A c c u r a c y = n c o r r e c t n t o t a l Accuracy = \frac{n_{correct}}{n_{total}} Accuracy=ntotalncorrect
    其中, n c o r r e c t n_{correct} ncorrect为被正确分类的样本个数, n t o t a l n_{total} ntotal为总样本个数。
    结合上面的混淆矩阵,公式还可以这样写:
    A c c u r a c y = T P + T N T P + T N + F P + F N Accuracy = \frac{TP+TN}{TP+TN+FP+FN} Accuracy=TP+TN+FP+FNTP+TN
    准确率是分类问题中最简单直观的评价指标,但存在明显的缺陷。比如如果样本中有99%的样本为正样本,那么分类器只需要一直预测为正,就可以得到99%的准确率,但其实际性能是非常低下的。也就是说,当不同类别样本的比例非常不均衡时,占比大的类别往往成为影响准确率的最主要因素。
    下面我们看一下sklearn中计算准确率的示例:

    import numpy as np
    from sklearn.metrics import accuracy_score
    
    y_pred = [0, 2, 1, 3]
    y_true = [0, 1, 2, 3]
    print(accuracy_score(y_true, y_pred))  # 0.5
    print(accuracy_score(y_true, y_pred, normalize=False))  # 2
    
    # 在具有二元标签指示符的多标签分类案例中
    print(accuracy_score(np.array([[0, 1], [1, 1]]), np.ones((2, 2))))  # 0.5
    

    函数接口的描述是这样的:

    准确度分类得分
     
    在多标签分类中,此函数计算子集精度:为样本预测的标签集必须完全匹配y_true(实际标签)中相应的标签集。
     
    参数
    y_true : 一维数组,或标签指示符 / 稀疏矩阵,实际(正确的)标签.
    y_pred : 一维数组,或标签指示符 / 稀疏矩阵,分类器返回的预测标签.
    normalize : 布尔值, 可选的(默认为True). 如果为False,返回分类正确的样本数量,否则,返回正 确分类的得分.
    sample_weight : 形状为[样本数量]的数组,可选. 样本权重.
     
    返回值
    score : 浮点型
    如果normalize为True,返回正确分类的得分(浮点型),否则返回分类正确的样本数量(整型).
    当normalize为True时,最好的表现是score为1,当normalize为False时,最好的表现是score未样本数量.

    代码的输出我已经写在注释中了,需要注意的是最后一行代码中,y_true为 [ 0 1 1 1 ] \begin{bmatrix}0 & 1 \\ 1 & 1 \\\end{bmatrix} [0111],y_pred为 [ 1 1 1 1 ] \begin{bmatrix}1 & 1 \\ 1 & 1 \\\end{bmatrix} [1111],矩阵的行表示样本,列表示标签(样本具有两个标签,标签0和1共同确定样本类别),那么这时实际上只有一个样本是预测正确的,因此准确率为 1 2 \frac{1}{2} 21,即0.5。
    另外,因为准确率的缺陷比较明显,所以在多分类问题中一般不直接使用整体的分类准确率,而是使用每个类别下的样本准确率的算术平均作为模型的评估指标。

    精确率

    精确率指模型预测为正的样本中实际也为正的样本占被预测为正的样本的比例。计算公式为:
    P r e c i s i o n = T P T P + F P Precision = \frac{TP}{TP+FP} Precision=TP+FPTP
    sklearn中的函数接口precision_score的描述如下:

    计算精确率
     
    精确率是 tp / (tp + fp)的比例,其中tp是真正性的数量,fp是假正性的数量. 精确率直观地可以说是分类器不将负样本标记为正样本的能力.
     
    精确率最好的值是1,最差的值是0.
     
    参数
    y_true : 一维数组,或标签指示符 / 稀疏矩阵,实际(正确的)标签.
    y_pred : 一维数组,或标签指示符 / 稀疏矩阵,分类器返回的预测标签.
    labels : 列表,可选值. 当average != binary时被包含的标签集合,如果average是None的话还包含它们的顺序. 在数据中存在的标签可以被排除,比如计算一个忽略多数负类的多类平均值时,数据中没有出现的标签会导致宏平均值(marco average)含有0个组件. 对于多标签的目标,标签是列索引. 默认情况下,y_true和y_pred中的所有标签按照排序后的顺序使用.
    pos_label : 字符串或整型,默认为1. 如果average = binary并且数据是二进制时需要被报告的类. 若果数据是多类的或者多标签的,这将被忽略;设置labels=[pos_label]和average != binary就只会报告设置的特定标签的分数.
    average : 字符串,可选值为[None, ‘binary’ (默认), ‘micro’, ‘macro’, ‘samples’, ‘weighted’]. 多类或 者多标签目标需要这个参数. 如果为None,每个类别的分数将会返回. 否则,它决定了数据的平均值类型.
    ‘binary’: 仅报告由pos_label指定的类的结果. 这仅适用于目标(y_{true, pred})是二进制的情况.
    ‘micro’: 通过计算总的真正性、假负性和假正性来全局计算指标.
    ‘macro’: 为每个标签计算指标,找到它们未加权的均值. 它不考虑标签数量不平衡的情况.
    ‘weighted’: 为每个标签计算指标,并通过各类占比找到它们的加权均值(每个标签的正例数).它解决了’macro’的标签不平衡问题;它可以产生不在精确率和召回率之间的F-score.
    ‘samples’: 为每个实例计算指标,找到它们的均值(只在多标签分类的时候有意义,并且和函数accuracy_score不同).
    sample_weight : 形状为[样本数量]的数组,可选参数. 样本权重.
     
    返回值
    precision : 浮点数(如果average不是None) 或浮点数数组, shape =[唯一标签的数量]
    二分类中正类的精确率或者在多分类任务中每个类的精确率的加权平均.

    官方示例代码为:

    from sklearn.metrics import precision_score
    
    y_true = [0, 1, 2, 0, 1, 2]
    y_pred = [0, 2, 1, 0, 0, 1]
    print(precision_score(y_true, y_pred, average='macro'))  # 0.2222222222222222
    print(precision_score(y_true, y_pred, average='micro'))  # 0.3333333333333333
    print(precision_score(y_true, y_pred, average='weighted'))  # 0.2222222222222222
    print(precision_score(y_true, y_pred, average=None))  # [0.66666667 0.         0.        ]
    

    直接看函数接口和示例代码还是让人有点云里雾里的,我们这里先介绍两个与多分类相关的概念,再说说上面的代码是如何计算的。

    • Macro Average
      宏平均是指在计算均值时使每个类别具有相同的权重,最后结果是每个类别的指标的算术平均值。
    • Micro Average
      微平均是指计算多分类指标时赋予所有类别的每个样本相同的权重,将所有样本合在一起计算各个指标。

    根据precision_score接口的解释,我们可以知道,当average参数为None时,得到的结果是每个类别的precision。上面的y_true有3个类别,分别为类0、类1、类2。我们将每个类别的TP、FP、FN列在下表中。

    类别TPFPFN
    类0210
    类1022
    类2011

    那么每个类别的precision也就得到了,如下所示:
    P 0 = 2 1 + 2 = 2 3 ≈ 0.667 P_0=\frac{2}{1+2} = \frac{2}{3}\approx0.667 P0=1+22=320.667
    P 1 = 0 0 + 2 = 0 P_1=\frac{0}{0+2}=0 P1=0+20=0
    P 2 = 0 0 + 1 = 0 P_2=\frac{0}{0+1}=0 P2=0+10=0
    从而Macro Precision也就知道了,就是 ( P 0 + P 1 + P 2 ) / 3 = 2 / 9 ≈ 0.222 (P_0+P_1+P_2)/3=2/9\approx0.222 (P0+P1+P2)/3=2/90.222
    Micro Precision的计算要从每个样本考虑,所有样本中预测正确的有两个,那么TP就是2,剩下的4个预测结果都可以看做FP,那么Micro Precision就是 2 / ( 2 + 4 ) = 1 / 3 ≈ 0.333 2/(2+4)=1/3\approx0.333 2/(2+4)=1/30.333
    最后还有一个average='weighted’的情况,因为这里每个类别的数量都恰好占比1/3,所以结果是 P w = 1 3 ∗ P 0 + 1 3 ∗ P 1 + 1 3 ∗ P 2 ≈ 0.222 P_w = {1\over3}*P_0+{1\over3}*P_1+{1\over3}*P_2\approx0.222 Pw=31P0+31P1+31P20.222
    虽然,我们是主要讲精确率的,但是宏平均和微平均的概念也很重要,这里顺便对比一下。

    • 如果每个类别的样本数量差不多,那么宏平均和微平均没有太大差异
    • 如果每个类别的样本数量差异很大,那么注重样本量多的类时使用微平均,注重样本量少的类时使用宏平均
    • 如果微平均大大低于宏平均,那么检查样本量多的类来确定指标表现差的原因
    • 如果宏平均大大低于微平均,那么检查样本量少的类来确定指标表现差的原因

    召回率

    召回率指实际为正的样本中被预测为正的样本所占实际为正的样本的比例。
    sklearn中recall_score方法和precision_score方法的参数说明都是一样的,所以这里不再重复,只是把函数和返回值说明贴在下面:

    计算召回率
     
    召回率是比率tp / (tp + fn),其中tp是真正性的数量,fn是假负性的数量. 召回率直观地说是分类器找到所有正样本的能力.
    召回率最好的值是1,最差的值是0.
     
    返回值
    recall : 浮点数(如果average不是None) 或者浮点数数组,shape = [唯一标签的数量]
    二分类中正类的召回率或者多分类任务中每个类别召回率的加权平均值.

    官方示例代码为:

    from sklearn.metrics import recall_score
    
    y_true = [0, 1, 2, 0, 1, 2]
    y_pred = [0, 2, 1, 0, 0, 1]
    print(recall_score(y_true, y_pred, average='macro'))  # 0.3333333333333333
    print(recall_score(y_true, y_pred, average='micro'))  # 0.3333333333333333
    print(recall_score(y_true, y_pred, average='weighted'))  # 0.3333333333333333
    print(recall_score(y_true, y_pred, average=None))  # [1. 0. 0.]
    

    Recall和Precision只有计算公式不同,它们average参数为’macro’,‘micro’,'weighted’和None时的计算方式都是相同的,具体计算可以使用上节列出来的TP、FP、FN表,这里不再赘述。

    P-R曲线

    评价一个模型的好坏,不能仅靠精确率或者召回率,最好构建多组精确率和召回率,绘制出模型的P-R曲线。
    下面说一下P-R曲线的绘制方法。P-R曲线的横轴是召回率,纵轴是精确率。P-R曲线上的一个点代表着,在某一阈值下,模型将大于该阈值的结果判定为正样本,小于该阈值的结果判定为负样本,此时返回结果对应的召回率和精确率。整条P-R曲线是通过将阈值从高到低移动而生成的。原点附近代表当阈值最大时模型的精确率和召回率。
    关于P-R曲线,因为我自己使用的比较少,所以这里就不深入给大家说了。
    sklearn里P-R曲线的使用可以参考:precision_recall_cure
    P-R曲线的理解可以参考这篇博客:P-R曲线深入理解

    F1 score

    F1 score是精确率和召回率的调和平均值,计算公式为:
    F 1 = 2 ∗ p r e c i s i o n ∗ r e c a l l p r e c i s i o n + r e c a l l F1 = \frac{2 * precision * recall}{precision + recall} F1=precision+recall2precisionrecall
    Precision体现了模型对负样本的区分能力,Precision越高,模型对负样本的区分能力越强;Recall体现了模型对正样本的识别能力,Recall越高,模型对正样本的识别能力越强。F1 score是两者的综合,F1 score越高,说明模型越稳健。
    sklearn中f1_score方法和precision_score方法、recall_score方法的参数说明都是一样的,所以这里不再重复,只是把函数和返回值说明贴在下面:

    计算F1 score,它也被叫做F-score或F-measure.
     
    F1 score可以解释为精确率和召回率的加权平均值. F1 score的最好值为1,最差值为0. 精确率和召回率对F1 score的相对贡献是相等的. F1 score的计算公式为:
    F1 = 2 * (precision * recall) / (precision + recall)
     
    在多类别或者多标签的情况下,这是权重取决于average参数的对于每个类别的F1 score的加权平均值.
    返回值
    f1_score : 浮点数或者是浮点数数组,shape=[唯一标签的数量]
    二分类中的正类的F1 score或者是多分类任务中每个类别F1 score的加权平均.

    官方示例代码为:

    from sklearn.metrics import f1_score
    
    y_true = [0, 1, 2, 0, 1, 2]
    y_pred = [0, 2, 1, 0, 0, 1]
    print(f1_score(y_true, y_pred, average='macro'))  # 0.26666666666666666
    print(f1_score(y_true, y_pred, average='micro'))  # 0.3333333333333333
    print(f1_score(y_true, y_pred, average='weighted'))  # 0.26666666666666666
    print(f1_score(y_true, y_pred, average=None))  # [0.8 0.  0. ]
    

    这里计算还是套公式,所以也就不再多说了。

    参考资料

    多标签分类的结果评估—macro-average和micro-average介绍
    《百面机器学习》(诸葛越主编、葫芦娃著)第二章第1节——评估指标的局限性

    展开全文
  • 召回率 Recall、精确度Precision、准确率Accuracy、虚警、漏警等分类判定指标  假设原始样本中有两类,其中:   1:总共有 P个类别为1的样本,假设类别1为正例。   2:总共有N个类别为0的样本,假设类别0为...
  • 召回率与准确率

    2019-05-17 10:09:57
    召回率与准确率这两个概念偶尔会遇到,知道意思,但是有时候要很清晰地向同学介绍则有点转不过弯来。 召回率和准确率是数据挖掘中预测、互联网中的搜索引擎等经常涉及的两个概念和指标。 召回率:Recall,又称“查全...
  • 精确率、召回率

    2019-03-19 17:16:04
    召回率——查全率——recall 可以很容易看出, 所谓 TRUE/FALSE 表示从结果是否分对了, Positive/Negative 表示我们认为的是"正例" or "反例". 再加上准确率: 此外还有值,是精确率和召回率的调和均值: ...
  • 召回率准确率

    2018-10-08 19:50:35
    召回率(Recall Rate,也叫查全率): 是检索出的相关文档数和文档库中所有的相关文档数的比率,衡量的是检索系统的查全率; 精度: 是检索出的相关文档数与检索出的文档总数的比率,衡量的是检索系统的查准率。 ...
  • Caffe-SSD的solver.cpp修改后的源码,可输出准确率、召回率和PR曲线值
  • 准确率召回率

    2015-04-14 15:12:58
    最近一直在做相关推荐方面的研究与应用工作,召回率与准确率这两个概念偶尔会遇到, 知道意思,但是有时候要很清晰地向同学介绍则有点转不过弯来。 召回率和准确率是数据挖掘中预测、互联网中的搜索引擎等经常...
  • 精确率与召回率之间的差别

    万次阅读 2020-02-08 15:24:28
    1. 定义辨析 精确率(precision) 精确率是针对我们预测结果而言的,它表示的是预测为正的样本中有多少是真正的正样本。那么预测为正就有两种可能了,一种...召回率是针对我们原来的样本而言的,它表示的是样本中...
  • 准确率,召回率

    2021-01-01 19:31:34
    1、准确率与召回率(Precision & Recall) 准确率和召回率是广泛用于信息检索和统计学分类领域的两个度量值,用来评价结果的质量。其中精度是检索出相关文档数与检索出的文档总数的比率,衡量的是检索系统的查...
  • 准确率 召回率

    千次阅读 2018-12-28 17:03:12
     ...1、准确率与召回率(Precision & Recall) 准确率和召回率是广泛用于信息检索和统计学分类领域的两个度量值,用来评价结果的质量。其中精度是检索出相关文档...
  • 正确率与召回率

    2019-02-26 13:51:30
    正确率:检索出的条目正确数量 召回率:正确的条目被检索数量 F1指标:2正确率召回率/(正确率+召回率) 这几个值越接近1越好
  • 准确率和召回率

    千次阅读 2019-05-09 14:23:03
    链接 定义: 正确率 = 提取出的正确...F值 = 正确率 * 召回率 * 2 / (正确率 + 召回率) (F 值即为正确率和召回率的调和平均值) 不妨举这样一个例子:某池塘有1400条鲤鱼,300只虾,300只鳖。现在以捕鲤鱼为目...
  • 今天小编就为大家分享一篇Pytorch 计算误判率,计算准确率,计算召回率的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 理解准确率和召回率

    2019-12-22 20:07:55
    理解准确率和召回率1 混淆矩阵解释2 召回率和准确率定义3 混淆矩阵Reference 1 混淆矩阵解释 2 召回率和准确率定义 召回率(Recall)=系统检索到的相关文件系统所有相关的文件总数=正确预测为狗的个数系统真实是狗的...
  • 精确率和召回率

    2020-05-19 10:52:41
    准确率和召回率通常是此消彼长的,很多时候用参数来控制,通过修改参数则能得出一个准确率和召回率的曲线(ROC),这条曲线与x和y轴围成的面积就是AUC(ROC Area)。AUC可以综合衡量一个预测模型的好坏,这一个指.
  • 这几个概念太绕了,根据关注点的不同使用的频率也不相同。 对于我的日常而言,关注的是是否正常,所以一般用误报率和漏报率。 误报指的是本来正常,但是误认为是异常。...误报率+召回率=1 漏报率+准确率=1 ...
  • 召回率和精准率

    千次阅读 2019-05-29 16:42:37
    毕设做的是地物高光谱遥感图像分类,单一考虑分类器的准确度有时候是不行的,比如在博茨瓦纳数据集中,第一类的样本数...其中用到召回率 ,其实就是每类的分类准确度,召回率的分母考虑的是原始每类的样本数目。平均...
  • python实现计算精度、召回率和F1值

    万次阅读 多人点赞 2019-03-02 11:09:47
    python实现计算精度、召回率和F1值   摘要:在深度学习的分类任务中,对模型的评估或测试时需要计算其在验证集或测试集上的预测精度(prediction/accuracy)、召回率(recall)和F1值。本文首先简要介绍如何计算...
  • 召回率和准确率

    2016-03-08 21:40:41
    召回率 准确率

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 38,887
精华内容 15,554
关键字:

召回率