精华内容
下载资源
问答
  • recall

    万次阅读 2019-09-11 10:18:59
    召回率 (Recall):正样本有多少被找出来了(召回了多少)。 准确率 (Precision):你认为的正样本,有多少猜对了(猜的准确性如何)。 阐述机器学习分类模型评估中常见的性能度量指标(performance measure):...

    召回率 (Recall):正样本有多少被找出来了(召回了多少)。

    准确率 (Precision):你认为的正样本,有多少猜对了(猜的准确性如何)。

     

    阐述机器学习分类模型评估中常见的性能度量指标(performance measure)Accuracy(精度)Precision(精准度)Recall(召回率),这是理解更为复杂分类模型性能度量指标(例如目标检测任务中的mAP)的基础。

    (一)Accuracy and Error Rate

    Accuracy(精度)Error Rate(错误率)是分类模型中最常见的两种性能度量指标,既适用于二分类任务,也适用于多分类任务。

     

     

    (二)Precision and Recall

    Accuracy虽然常用,但是无法满足所有分类任务需求。我们看两个例子:

    例1:恐怖分子识别任务,二分类问题,恐怖分子为正例,非恐怖分子负例。

    这个任务的特点是正例负例分布非常不平均,因为恐怖分子的数量远远小于非恐怖分子的数量。假设一个数据集中的恐怖分子的数量与非恐怖分子的数量比例为1:999999999,我们引入一个二分类判别模型,它的行为是将所有样例都识别为负例(非恐怖分子),那么在这个数据集上该模型的Accuracy高达99.9999999%,但恐怕没有任何一家航空公司会为这个模型买单,因为它永远不会识别出恐怖分子,航空公司更关注有多少恐怖分子被识别了出来。

    例2:垃圾邮件识别任务,二分类问题,垃圾邮件为正例,非垃圾邮件为负例。

    与恐怖分子识别任务类似,人们更关心有多少垃圾邮件被识别了出来,而不是Accuracy。

    在上述两个任务中,人们的关注点发生了变化,Accuracy已经无法满足要求,由此我们引入Precision(精准度)Recall(召回率),它们仅适用于二分类问题

    对于一个二分类任务,二分类器的预测结果可分为以下4类:

    二分类器的结果可分为4类

    Precision从预测结果角度出发,描述了二分类器预测出来的正例结果中有多少是真实正例,即该二分类器预测的正例有多少是准确的;Recall从真实结果角度出发,描述了测试集中的真实正例有多少被二分类器挑选了出来,即真实的正例有多少被该二分类器召回。

    Precision和Recall通常是一对矛盾的性能度量指标。一般来说,Precision越高时,Recall往往越低。原因是,如果我们希望提高Precision,即二分类器预测的正例尽可能是真实正例,那么就要提高二分类器预测正例的门槛,例如,之前预测正例只要是概率大于等于0.5的样例我们就标注为正例,那么现在要提高到概率大于等于0.7我们才标注为正例,这样才能保证二分类器挑选出来的正例更有可能是真实正例;而这个目标恰恰与提高Recall相反,如果我们希望提高Recall,即二分类器尽可能地将真实正例挑选出来,那么势必要降低二分类器预测正例的门槛,例如之前预测正例只要概率大于等于0.5的样例我们就标注为真实正例,那么现在要降低到大于等于0.3我们就将其标注为正例,这样才能保证二分类器挑选出尽可能多的真实正例。

    那么有没有一种指标表征了二分类器在Precision和Recall两方面的综合性能呢?答案是肯定的。如前面所说,按照二分类器预测正例的门槛的不同,我们可以得到多组precision和recall。在很多情况下,我们可以对二分类器的预测结果进行排序,排在前面的是二分类器认为的最可能是正例的样本,排在最后的是二分类器认为的最不可能是正例的样本。按此顺序逐个逐步降低二分类器预测正例的门槛,则每次可以计算得到当前的Precision和Recall。以Recall作为横轴,Precision作为纵轴可以得到Precision-Recall曲线图,简称为P-R图:

    P-R曲线

    P-R图可直观地显示出二分类器的Precision和Recall,在进行比较时,若一个二分类器的P-R曲线被另一个二分类器的P-R曲线完全包住,则可断言后者的性能优于前者,例如上图二分类器A的性能优于C;如果两个二分类器的P-R图发生了交叉,则难以断言二者性能孰优孰劣,例如上图中的二分类器A与B。然而,在很多情况下,人们还是希望将二分类器A和B性能比个高低,这时一个比较合理的指标是P-R曲线下面的面的大小,它在一定程度上表征了二分类器在Precision和Recall这两方面的综合性能。

    (三)总结

    • Precision和Recall往往是一对矛盾的性能度量指标;
    • 提高Precision == 提高二分类器预测正例门槛 == 使得二分类器预测的正例尽可能是真实正例;
    • 提高Recall == 降低二分类器预测正例门槛 == 使得二分类器尽可能将真实的正例挑选出来;
    • P-R曲线下面的面积表征了二分类器在Precision和Recall这两方面的综合性能;
    展开全文
  • 以下第一部分内容转载自:机器学习算法中的准确率(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曲线更实用。

    展开全文
  • RECALL-源码

    2021-03-10 04:23:07
    RECALL
  • 之前提到过聚类之后,聚类质量的评价: 聚类︱python实现 六大 分群质量评估指标(兰德...一、acc、recall、F1、混淆矩阵、分类综合报告1、准确率第一种方式:accuracy_score# 准确率 import numpy as np from skl

    之前提到过聚类之后,聚类质量的评价:
    聚类︱python实现 六大 分群质量评估指标(兰德系数、互信息、轮廓系数)
    R语言相关分类效果评估:
    R语言︱分类器的性能表现评价(混淆矩阵,准确率,召回率,F1,mAP、ROC曲线)

    .



    一、acc、recall、F1、混淆矩阵、分类综合报告

    1、准确率

    第一种方式:accuracy_score

    # 准确率
    import numpy as np
    from sklearn.metrics import accuracy_score
    y_pred = [0, 2, 1, 3,9,9,8,5,8]
    y_true = [0, 1, 2, 3,2,6,3,5,9]
    
    accuracy_score(y_true, y_pred)
    Out[127]: 0.33333333333333331
    
    accuracy_score(y_true, y_pred, normalize=False)  # 类似海明距离,每个类别求准确后,再求微平均
    Out[128]: 3
    

    第二种方式:metrics

    宏平均比微平均更合理,但也不是说微平均一无是处,具体使用哪种评测机制,还是要取决于数据集中样本分布

    宏平均(Macro-averaging),是先对每一个类统计指标值,然后在对所有类求算术平均值。
    微平均(Micro-averaging),是对数据集中的每一个实例不分类别进行统计建立全局混淆矩阵,然后计算相应指标。(来源:谈谈评价指标中的宏平均和微平均

    from sklearn import metrics
    metrics.precision_score(y_true, y_pred, average='micro')  # 微平均,精确率
    Out[130]: 0.33333333333333331
    
    metrics.precision_score(y_true, y_pred, average='macro')  # 宏平均,精确率
    Out[131]: 0.375
    
    metrics.precision_score(y_true, y_pred, labels=[0, 1, 2, 3], average='macro')  # 指定特定分类标签的精确率
    Out[133]: 0.5
    

    其中average参数有五种:(None, ‘micro’, ‘macro’, ‘weighted’, ‘samples’)

    .

    2、召回率

    metrics.recall_score(y_true, y_pred, average='micro')
    Out[134]: 0.33333333333333331
    
    metrics.recall_score(y_true, y_pred, average='macro')
    Out[135]: 0.3125
    

    .

    3、F1

    metrics.f1_score(y_true, y_pred, average='weighted')  
    Out[136]: 0.37037037037037035
     
    

    .

    4、混淆矩阵

    # 混淆矩阵
    from sklearn.metrics import confusion_matrix
    confusion_matrix(y_true, y_pred)
    
    Out[137]: 
    array([[1, 0, 0, ..., 0, 0, 0],
           [0, 0, 1, ..., 0, 0, 0],
           [0, 1, 0, ..., 0, 0, 1],
           ..., 
           [0, 0, 0, ..., 0, 0, 1],
           [0, 0, 0, ..., 0, 0, 0],
           [0, 0, 0, ..., 0, 1, 0]])
    

    横为true label 竖为predict
    [外链图片转存失败(img-IrrcFK8f-1568273933227)(http://scikit-learn.org/stable/_images/sphx_glr_plot_confusion_matrix_0011.png)]
    .

    5、 分类报告

    # 分类报告:precision/recall/fi-score/均值/分类个数
     from sklearn.metrics import classification_report
     y_true = [0, 1, 2, 2, 0]
     y_pred = [0, 0, 2, 2, 0]
     target_names = ['class 0', 'class 1', 'class 2']
     print(classification_report(y_true, y_pred, target_names=target_names))
    

    其中的结果:

                 precision    recall  f1-score   support
    
        class 0       0.67      1.00      0.80         2
        class 1       0.00      0.00      0.00         1
        class 2       1.00      1.00      1.00         2
    
    avg / total       0.67      0.80      0.72         5
    

    包含:precision/recall/fi-score/均值/分类个数
    .

    6、 kappa score

    kappa score是一个介于(-1, 1)之间的数. score>0.8意味着好的分类;0或更低意味着不好(实际是随机标签)

     from sklearn.metrics import cohen_kappa_score
     y_true = [2, 0, 2, 2, 0, 1]
     y_pred = [0, 0, 2, 2, 0, 2]
     cohen_kappa_score(y_true, y_pred)
    

    .


    二、ROC

    1、计算ROC值

    import numpy as np
     from sklearn.metrics import roc_auc_score
     y_true = np.array([0, 0, 1, 1])
     y_scores = np.array([0.1, 0.4, 0.35, 0.8])
     roc_auc_score(y_true, y_scores)
    

    2、ROC曲线

     y = np.array([1, 1, 2, 2])
     scores = np.array([0.1, 0.4, 0.35, 0.8])
     fpr, tpr, thresholds = roc_curve(y, scores, pos_label=2)
    

    来看一个官网例子,贴部分代码,全部的code见:Receiver Operating Characteristic (ROC)

    import numpy as np
    import matplotlib.pyplot as plt
    from itertools import cycle
    
    from sklearn import svm, datasets
    from sklearn.metrics import roc_curve, auc
    from sklearn.model_selection import train_test_split
    from sklearn.preprocessing import label_binarize
    from sklearn.multiclass import OneVsRestClassifier
    from scipy import interp
    
    # Import some data to play with
    iris = datasets.load_iris()
    X = iris.data
    y = iris.target
    
    # 画图
    all_fpr = np.unique(np.concatenate([fpr[i] for i in range(n_classes)]))
    
    # Then interpolate all ROC curves at this points
    mean_tpr = np.zeros_like(all_fpr)
    for i in range(n_classes):
        mean_tpr += interp(all_fpr, fpr[i], tpr[i])
    
    # Finally average it and compute AUC
    mean_tpr /= n_classes
    
    fpr["macro"] = all_fpr
    tpr["macro"] = mean_tpr
    roc_auc["macro"] = auc(fpr["macro"], tpr["macro"])
    
    # Plot all ROC curves
    plt.figure()
    plt.plot(fpr["micro"], tpr["micro"],
             label='micro-average ROC curve (area = {0:0.2f})'
                   ''.format(roc_auc["micro"]),
             color='deeppink', linestyle=':', linewidth=4)
    
    plt.plot(fpr["macro"], tpr["macro"],
             label='macro-average ROC curve (area = {0:0.2f})'
                   ''.format(roc_auc["macro"]),
             color='navy', linestyle=':', linewidth=4)
    
    colors = cycle(['aqua', 'darkorange', 'cornflowerblue'])
    for i, color in zip(range(n_classes), colors):
        plt.plot(fpr[i], tpr[i], color=color, lw=lw,
                 label='ROC curve of class {0} (area = {1:0.2f})'
                 ''.format(i, roc_auc[i]))
    
    plt.plot([0, 1], [0, 1], 'k--', lw=lw)
    plt.xlim([0.0, 1.0])
    plt.ylim([0.0, 1.05])
    plt.xlabel('False Positive Rate')
    plt.ylabel('True Positive Rate')
    plt.title('Some extension of Receiver operating characteristic to multi-class')
    plt.legend(loc="lower right")
    plt.show()
    
    

    [外链图片转存失败(img-wX1gSdL7-1568273933229)(http://scikit-learn.org/stable/_images/sphx_glr_plot_roc_002.png)]

    .


    三、距离

    .

    1、海明距离

    from sklearn.metrics import hamming_loss
     y_pred = [1, 2, 3, 4]
     y_true = [2, 2, 3, 4]
     hamming_loss(y_true, y_pred)
    0.25
    

    .

    2、Jaccard距离

     import numpy as np
     from sklearn.metrics import jaccard_similarity_score
     y_pred = [0, 2, 1, 3,4]
     y_true = [0, 1, 2, 3,4]
     jaccard_similarity_score(y_true, y_pred)
    0.5
     jaccard_similarity_score(y_true, y_pred, normalize=False)
    2
    

    .


    四、回归

    1、 可释方差值(Explained variance score)

     from sklearn.metrics import explained_variance_score
    y_true = [3, -0.5, 2, 7]
     y_pred = [2.5, 0.0, 2, 8]
     explained_variance_score(y_true, y_pred)  
    

    .

    2、 平均绝对误差(Mean absolute error)

    from sklearn.metrics import mean_absolute_error
     y_true = [3, -0.5, 2, 7]
     y_pred = [2.5, 0.0, 2, 8]
     mean_absolute_error(y_true, y_pred)
    

    .

    3、 均方误差(Mean squared error)

     from sklearn.metrics import mean_squared_error
     y_true = [3, -0.5, 2, 7]
     y_pred = [2.5, 0.0, 2, 8]
     mean_squared_error(y_true, y_pred)
    

    .

    4、中值绝对误差(Median absolute error)

     from sklearn.metrics import median_absolute_error
     y_true = [3, -0.5, 2, 7]
     y_pred = [2.5, 0.0, 2, 8]
     median_absolute_error(y_true, y_pred)
    

    .

    5、 R方值,确定系数

     from sklearn.metrics import r2_score
     y_true = [3, -0.5, 2, 7]
     y_pred = [2.5, 0.0, 2, 8]
     r2_score(y_true, y_pred)  
    

    .


    五 合理的进行绘图(混淆矩阵/ROC)

    %matplotlib inline 
    import itertools
    import numpy as np
    import matplotlib.pyplot as plt
    
    from sklearn import svm, datasets
    from sklearn.model_selection import train_test_split
    from sklearn.metrics import f1_score,accuracy_score,recall_score,classification_report,confusion_matrix
    
    def plot_confusion_matrix(cm, classes,
                              normalize=False,
                              title='Confusion matrix',
                              cmap=plt.cm.Blues):
        """
        This function prints and plots the confusion matrix.
        Normalization can be applied by setting `normalize=True`.
        """
        if normalize:
            cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
            print("Normalized confusion matrix")
        else:
            print('Confusion matrix, without normalization')
    
        print(cm)
    
        plt.imshow(cm, interpolation='nearest', cmap=cmap)
        plt.title(title)
        plt.colorbar()
        tick_marks = np.arange(len(classes))
        plt.xticks(tick_marks, classes, rotation=45)
        plt.yticks(tick_marks, classes)
    
        fmt = '.2f' if normalize else 'd'
        thresh = cm.max() / 2.
        for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):
            plt.text(j, i, format(cm[i, j], fmt),
                     horizontalalignment="center",
                     color="white" if cm[i, j] > thresh else "black")
    
        plt.tight_layout()
        plt.ylabel('True label')
        plt.xlabel('Predicted label')
    
    def CalculationResults(val_y,y_val_pred,simple = False,\
                           target_names = ['class_-2_Not_mentioned','class_-1_Negative','class_0_Neutral','class_1_Positive']):
        # 计算检验
        F1_score = f1_score(val_y,y_val_pred, average='macro')
        if simple:
            return F1_score
        else:
            acc = accuracy_score(val_y,y_val_pred)
            recall_score_ = recall_score(val_y,y_val_pred, average='macro')
            confusion_matrix_ = confusion_matrix(val_y,y_val_pred)
            class_report = classification_report(val_y, y_val_pred, target_names=target_names)
            print('f1_score:',F1_score,'ACC_score:',acc,'recall:',recall_score_)
            print('\n----class report ---:\n',class_report)
            #print('----confusion matrix ---:\n',confusion_matrix_)
    
            # 画混淆矩阵
                # 画混淆矩阵图
            plt.figure()
            plot_confusion_matrix(confusion_matrix_, classes=target_names,
                                  title='Confusion matrix, without normalization')
            plt.show()
            return F1_score,acc,recall_score_,confusion_matrix_,class_report
    
    

    函数plot_confusion_matrix是绘制混淆矩阵的函数,CalculationResults则为只要给入y的预测值 + 实际值,以及分类的标签大致内容,就可以一次性输出:f1值,acc,recall以及报表

    输出结果的部分,如下:

    f1_score: 0.6111193724134587 ACC_score: 0.9414 recall: 0.5941485524896096
    
    ----class report ---:
                             precision    recall  f1-score   support
    
    class_-2_Not_mentioned       0.96      0.97      0.97     11757
         class_-1_Negative       0.68      0.51      0.58       182
           class_0_Neutral       1.00      0.01      0.01       136
          class_1_Positive       0.87      0.89      0.88      2925
    
               avg / total       0.94      0.94      0.94     15000
    
    Confusion matrix, without normalization
    [[11437    27     0   293]
     [   72    93     0    17]
     [   63    10     1    62]
     [  328     7     0  2590]]
    

    6 AUC 和 F1的异同

    AUC vs F1 的区别

    相同点:
    分析的起点是这两个指标存在一个共同目标。事实上:
    r e c a l l = T P R = T P T P + F N recall = TPR = \frac{TP}{TP + FN}recall=TPR=TP+FNTP​
    也就是说auc和f1 score都希望将样本中实际为真的样本检测出来(检验阳性)。

    不同点:

    • auc希望训练一个尽量不误报的模型,也就是知识外推的时候倾向保守估计,
    • 而f1希望训练一个不放过任何可能的模型,即知识外推的时候倾向激进,这就是这两个指标的核心区别。

    如何选择:
    所以在实际中,选择这两个指标中的哪一个,取决于一个trade-off。
    如果我们犯检验误报错误的成本很高,那么我们选择auc是更合适的指标。如果我们犯有漏网之鱼错误的成本很高,那么我们倾向于选择f1score。

    放到实际中,对于检测传染病,相比于放过一个可能的感染者,我们愿意多隔离几个疑似病人,所以优选选择F1score作为评价指标。

    而对于推荐这种场景,由于现在公司的视频或者新闻库的物料总量是很大的,潜在的用户感兴趣的item有很多,所以我们更担心的是给用户推荐了他不喜欢的视频,导致用户体验下降,而不是担心漏掉用户可能感兴趣的视频。
    所以推荐场景下选择auc是更合适的。


    7 不同场景下的准确率与召回率的解读

    召回率
    正样本有多少被找出来了(召回了多少)recall描述模型“把正样本叫 (call) 回来(re)”的能力。

    准确率
    你认为的正样本,有多少猜对了(猜的精确性如何)
    precision描述模型“叫回来的正样本”有多少是精确的。

    召回率高,准确率低,
    可能预测为负样本的很多,召回率比较低,但是准确率比较高;
    常见在:正负样本分布很不均匀,负样本很多的情况;
    解决:需要根据具体问题做离线交叉验证去找到最好的比例;正负样本不太均匀;新增正样本
    离线交叉验证,是咋做?

    召回率低,准确率高
    出现的场景,模型缺少特征,只是很精准的找到一部分;看着加一些特征工程
    可能预测为正样本的很多,势必造成了正样本很多,但是错误也很多
    常见在:模型特征工程没做好;或者验证集和训练集分布差异比较大;或者训练集数据太小;或者代码问题;或者正负样本重合很大,容易混淆
    解决:分析Bad case,PRC,各个特征的权重分布,剔除无效特征,增加有效特征;需要对错误的标注样本进行修正

    召回率低,准确率低
    常见在:正负样本重合很大,容易混淆

    7.1 推荐系统中的准确与召回文章见:推荐策略之召回

    召回率和准确率有时存在相互制衡的情况,好的召回策略应该在保证高准确率的情况下也保证高召回率。
    基于内容匹配的召回,基于内容匹配的召回率较高,但准确率较低,比较适用于冷启动的语义环境

    根据内容兴趣去找,可能找到你之前没有记录过的兴趣,这种就是召回率高,但是准确率低

    可能在你的历史兴趣之外,去找一些兴趣点

    基于协同过滤的召回,基于协同过滤的召回即建立用户和内容间的行为矩阵,依据“相似性”进行分发。这种方式准确率较高,但存在一定程度的冷启动问题。

    根据之前你的兴趣推荐你感兴趣的,就是在你的历史行为里面做推荐,会比较精准

    两者结合:历史行为推荐(协同过滤) + 兴趣发散推荐(内容匹配/推荐)

    7.2 质检中的召回率、准确率的取舍

    负向质检项:通常“召回率”优先负向质检,就是找出不合格、不合规的地方。通俗地说,在销售、客服质检中,是指找出业务员“说了什么不该说的”。负向质检是企业比较常见的需求,尤其是在受监管比较严格的领域。
    在这里插入图片描述

    正向质检项:通常“准确率”优先正向质检,是指对业务员符合规范的地方进行加分激励。最近几年,正向质检越来越受到企业重视,因为负向质检判断的只是业务员有没有犯错,是一种“惩恶”的理念,而正向质检可以用来激励业务员变得更加专业、更加规范,是一种“扬善”的理念,更有利于形成正向循环。
    在这里插入图片描述


    参考文献:

    sklearn中的模型评估

    展开全文
  • Total Recall-开源

    2021-05-12 21:29:03
    Total Recall是一种高性能,易于使用的对象关系数据库持久层,完全不需要XML元数据。
  • Recall And Precision

    2020-01-23 15:58:56
    precision和recall的计算公式总是忘记 这篇博客用来记录下 precision 是针对预测结果的 precision = TP / (TP + FP) recall 是针对原样本的 recall = TP / (TP + FN) 图示为: ...

    precision和recall的计算公式总是忘记  这篇博客用来记录下

    precision 是针对预测结果的

    precision = TP / (TP + FP) 

     

    recall 是针对原样本的

    recall = TP / (TP + FN)

    图示为:

    展开全文
  • Open Recall-开源

    2021-05-09 21:02:33
    Open Recall是易于使用的提醒工具。 支持重复任务。 目标之一是通过将多个提醒项收集到一个屏幕上来减少烦人的弹出窗口的数量。
  • 召回率 Recall、精确度Precision、准确率Accuracy、虚警、漏警等分类判定指标  假设原始样本中有两类,其中:   1:总共有 P个类别为1的样本,假设类别1为正例。   2:总共有N个类别为0的样本,假设类别0为...
  • precision,recall and precision-recall curve

    千次阅读 2016-11-28 16:13:05
    precision是指检索出中相关的比例,所以... recall是指相关中被检索出的比例,所以recall= true positive/(true positive + false positive)。实际应用中往往precision和recall成反比关系。比如只检索出1条且相关,则pr
  • precision和recall

    2016-12-05 20:32:52
    Recall(召回率);Precision(准确率);F1-Meature(综合评价指标);首先来个定义: Precision:被检测出来的信息当中 正确的或者相关的(也就是你想要的)信息中所占的比例; Recall:所有正确的信息或者相关的信息...
  • Precision和Recall

    2020-02-27 12:03:49
    1. 二分类模型的指标 精准率,即在所有被预测为阳性的测试数据中,真正是阳性的比率: Precision=TP / (TP+FP) 召回率,即在所有实际为阳性的测试数据中...F1Score = 2*(Precision * Recall) / (Precision + Recal...
  • anti-recall-v5.6.5.apk

    2021-07-21 16:56:57
    anti-recall-v5.6.5.apk
  • Quantifying teachers' recall of student behavior QUANTIFYING TEACHERS’ RECALL OF STUDENT BEHAVIOR T. M. FLYNN Southern Illinois University at Carbondale The school psychologist often is ...
  • accuracy precision recall

    2019-02-26 14:43:15
    注意,这三个量都是模型的评判指标,是在test data检测进行 accuracy:就是在test data进行模型测试,预测对的样本数/总样本数 precision: ...在recall中分母是实际值为positive的样本 ...
  • Precision-Recall

    千次阅读 2017-11-21 23:18:03
    Example of Precision-Recall metric to evaluate classifier output quality. Precision-Recall is a useful measure of success of prediction when the classes are very imbalanced. In information retrieva
  • precision and recall

    千次阅读 2018-01-20 22:06:14
    后者是每个样本可以有多个类别标记,即多个类别在模式识别,信息检索,二分类等问题中常常需要对结果进行评价,评价的几个指标通常是准确率(accuracy),精确率(precision)和召回率(recall)1、分类问题举个二...
  • Precision和Recall理解

    2020-10-10 11:29:16
    Precision精确率:找得对 Recall召回率:找得全
  • recall 和 precision

    2018-05-19 16:38:02
    recall 是召回率又叫检出率precision 是准确率又叫检准率对了今天还看到一个叫法“采样”,搞了半天就是“池化”,但是采样其实更好理解pooling,要是从表面上看的话。说回recall 和 precision注意到这两个东西是在...
  • AP和mAP是目标检测和信息检索中常用的evaluation metric ...注1:计算AP时需要先计算precision和recall,而计算precision和recall需要先计算IoU,并且设置threshold才能得出precision和recall。PASCAL VOC和CO...
  • 会话秘密(64 字节十六进制字符串):RECALL_PROD_SECRET RECALL_DEV_SECRET RECALL_TEST_SECRET 数据库设置: 在 psql 中: CREATE USER recall; CREATE DATABASE recall_dev; GRANT ALL PRIVILEGES ON ...
  • Recall Precision IoU

    2017-03-20 21:47:44
    Recall Precision IoU参考:周志华 《机器学习》...Recall Precision IoU TP,FP,TN,FN对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为 1. 真正例(TP:true positive) :真实情况
  • 主要介绍了使用keras实现Precise, Recall, F1-socre方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Recall2 Spring Cloud示例应用程序 这个示例项目说明了一些我们可以在新的和现有的Spring Boot项目中使用的Spring Cloud功能。 竞选微服务 recall2-campaign是使用DDD和CQRS来分离应用程序操作,但使用CQRS域源...
  • Oracle 11g的Total Recall功能通过确保完整、安全地保留和管理所有历史数据,解决了这些问题。Oracle 11g 引入了 Total Recall,该功能所使用的基础技Flashback Data Archive可以通过高度安全和有效的方式透明地跟踪...
  • 写在前面: sklearn(三)计算recall:使用metrics.recall_score()计算二分类的召回率 1.sklearn.metrics.recall_score()的使用方法 2.例子
  • Precision&Recall

    2018-06-26 17:56:13
    Precision&Recall
  • Precision & Recall

    2016-03-03 19:58:27
    模式识别 & 信息检索领域中的二分类问题中:Precision:识别样本中,相关的样本比例; Recall:相关样本中,识别的样本比例;...Recall = 4/9precision & recall 分别于第I类和第II类错误;上例中包含了3个第I类错误

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 49,840
精华内容 19,936
关键字:

recall