zoukankan      html  css  js  c++  java
  • 机器学习中的评价标准们

    基础

    对于数据测试结果 有4种情况:
    真阳性(TP) 预测为正,实际也为正
    假阳性(FP) 预测为正,实际为负
    假阴性(FN) 预测为负,实际为正
    真阴性(TN) 预测为负,实际也为负

    可参考:
    详解准确率、精确率、召回率、F1值等评价指标的含义

    准确率

    预测正确的结果占总样本的百分比

    最简单、最直观的评价标准:准确率(Accuracy) ,即预测正确的结果占总样本的百分比,计算公式:
    $ Accuracy = frac{{TP + TN}}{{TP + TN + FP + FN}}$
    虽然准确率能够判断总的正确率,但是在样本不均衡的情况下,并不能作为很好的指标来衡量结果。比如有9个正样本,1个负样本,预测均为正样本时,准确率达到0.9比较高,但是并不代表系统的性能好。

    精确率

    在被所有预测为正的样本中实际为正样本的概率

    精确率(Precision) 是针对预测结果而言的,其含义是在被所有预测为正的样本中实际为正样本的概率(精确率代表对正样本结果中的预测准确程度,准确率则代表整体的预测准确程度),计算公式:
    (Precision = frac{{TP}}{{TP + FP}})

    召回率

    实际为正的样本中被预测为正样本的概率

    召回率(Recall) 是针对原样本而言的,其含义是在实际为正的样本中被预测为正样本的概率,计算公式:
    (Recall = frac{{TP}}{{TP + FN}})

    F1 score

    F分数被广泛应用在信息检索领域,用来衡量检索分类和文档分类的性能。近期在深度学习的应用中,多用作分类系统的性能指标。
    F1分数(F1 Score),是统计学中用来衡量二分类模型精确度的一种指标。它同时兼顾了分类模型的精确率和召回率(一般希望精确率和召回率都很高,但实际上是矛盾的,上述两个指标是矛盾体,无法做到双高)。F1分数可以看作是模型精确率和召回率的一种调和平均,最大值是1,最小值是0,又称作平衡F分数(Balanced Score)。计算公式为:

    ({F_{ m{1}}}{ m{ = 2/}}left( {frac{1}{{recall}}{ m{ + }}frac{1}{{precision}}} ight){ m{ = 2}}frac{{recall imes precision}}{{recall + precision}})

    macro-F1

    F1是针对二元分类的,那对于多元分类器,也有类似F1 score的度量方法,常用的有两种,一种叫做macro-F1(宏平均),另一种叫做micro-F1(微平均)。
    简而言之,就是针对每个“类”(class),计算每个类的F1分数,然后联合起来。
    宏平均F1计算方式:计算出每一个类的Precison和Recall后计算F1,最后将F1平均。

    micro-F1

    微平均F1分数,不需要区分类别,使用总体样本,计算出所有类别总的Precision和Recall,然后计算F1。
    参考micro和macro F1 score分别是什么意思?:如果这个数据集中各个类的分布不平衡的话,更建议使用mirco-F1,因为macro没有考虑到各个类别的样本大小。

    python

    sklearn.metrics.f1_score(y_true, y_pred, labels=None, pos_label=1, average=’binary’, sample_weight=None)
    

    参考源码,对于'average'参数,如果是二分类问题则选择参数‘binary’;如果考虑类别的不平衡性,需要计算类别的加权平均,则使用‘weighted’;如果不考虑类别的不平衡性,计算宏平均,则使用‘macro’。具体参考代码:

    from sklearn.metrics import f1_score
    # micro
    f1_score(y_true, y_pred, average='micro')
    # macro
    f1_score(y_true, y_pred, average='macro')
    # weighted
    f1_score(y_true, y_pred, average='weighted')
    

    拓展

    根据对recall和precision的重视程度不同,有({F_eta})分数,其物理意义就是将精准率和召回率这两个分值合并为一个分值,在合并的过程中,召回率的权重是精准率的(eta)倍。计算公式为:
    ({F_eta }{ m{ = }}left( {1 + {eta ^2}} ight)frac{{recall imes precision}}{{{eta ^2} cdot recall + precision}})

    G分数是另一种统一精准率和召回率的系统性能评估标准。相比于F分数是准确率和召回率的调和平均数,G分数被定义为准确率和召回率的几何平均数,计算方式:
    $G = sqrt {precision cdot recall} $

  • 相关阅读:
    控件显示和隐藏
    删除标题和边框
    界面图片
    VC界面最前端显示
    在VC++6.0开发中实现全屏显示
    VC比例放大缩小
    plsql dev
    通过OCCI连接oracle(C++)
    VC++使用Pro*CC++
    文件对话框
  • 原文地址:https://www.cnblogs.com/ytxwzqin/p/13021983.html
Copyright © 2011-2022 走看看