• 多分类评估


    1. 原理介绍

    1.1 简介

    macro F1和micro F1是2种多分类的效果评估指标

    1.2 举例说明计算方法

    假设有以下三分类的testing结果:

    label:A、B、C

    sample size:9

     predict  label   
    A A

     

     

     

     

     

     

     

     

     

     

     

     

     

    1.2.1 F1 score

    [公式]

    下面计算各个类别的准召:

    对于类别A:

      预测P 预测N
    真实P TP=2 FN=2
    真实N FP=0 TN=

     

     

     

     

     

    precision = 2/(2+0) = 100%

    recall = 2/(2+2) = 50%

    对于类别B:

      预测P 预测N
    真实P TP=2 FN=1
    真实N FP=2 TN=

    precision = 2/(2+2) = 50%

    recall = 2/(2+1) = 67%

    对于类别C:

      预测P 预测N
    真实P TP=1   FN=1
    真实N FP=2 TN=

     

     

     

     

    precision= 1/(1+2) = 33%

    recall = 1/(1+1) = 50%

    TN对于准召的计算而言是不需要的,因此上面的表格中未统计该值。

    下面调用sklearn的api进行验证:

    from sklearn.metrics import classification_report
    print(classification_report([0,0,0,0,1,1,1,2,2], [0,0,1,2,1,1,2,1,2]))
                 precision    recall  f1-score   support
    0       1.00      0.50      0.67         4
              1       0.50      0.67      0.57         3
              2       0.33      0.50      0.40         2
    avg / total       0.69      0.56      0.58         9

    可以看出,各个类别的准召计算完全一致。

     

    1.2.2 Micro F1

    micro f1不需要区分类别,直接使用总体样本的准召计算f1 score。

    对于样本整体:

      预测P 预测N
    真实P TP5= FN=4
    真实N FP=4 TN=

     

     

     

     

    precision = 5/(5+4) = 0.5556

    recall = 5/(5+4) = 0.5556

    F1 = 2 * (0.5556 * 0.5556)/(0.5556 + 0.5556) = 0.5556

    下面调用sklearn的api进行验证

    from sklearn.metrics import f1_score
    f1_score([0,0,0,0,1,1,1,2,2], [0,0,1,2,1,1,2,1,2],average="micro")
    0.5555555555555556

    可以看出,计算结果也是一致的(保留精度问题)。

     

    1.2.3 Macro F1

    不同于micro f1,macro f1需要先计算出每一个类别的准召及其f1 score,然后通过求均值得到在整个样本上的f1 score。

    类别A的​:

    [公式]

    类别B的​:

    [公式]

    类别C的​:

    [公式]

    整体的f1为上面三者的平均值:

    F1 = (0.6667 + 0.57265 + 0.39759)/3 = 0.546

    调用sklearn的api进行验证:

    from sklearn.metrics import f1_score
    f1_score([0,0,0,0,1,1,1,2,2], [0,0,1,2,1,1,2,1,2],average="macro")
    0.546031746031746

    可见,计算结果正确。

     

    2. 适用场景

    micro-F1

    计算方法:计算所有类别总的Precision和Recall,然后算F1值;

    效果特点:考虑不同类样本数量,当样本不均衡时,更容易受到常见类别的影响

    适用场景:注重样本真实分布,只考虑全局效果

     

    marco-F1

    计算方法:单独计算每个类别的F1值,然后取各类F1的平均值;

    效果特点:不考虑不同类样本数量,1)相对更考虑稀有类别的影响;2)会相对受高precision和高recall类的影响较大

    适用场景:样本不均衡,且各个类别同等重要的情况,可保障小样本的性能

    3. 参考

    https://zhuanlan.zhihu.com/p/64315175

     

  • 相关阅读:
    9.Vue技术栈开发实战-使用Mock模拟Ajax请求
    8.Vue技术栈开发实战-Ajax请求实战
    7.Vue技术栈开发实战-状态管理Vuex进阶
    6.Vue技术栈开发实战-状态管理Vuex(二)
    5.Vue技术栈开发实战-状态管理Vuex(一)
    4.Vue技术栈开发实战-状态管理bus的使用
    3.Vue技术栈开发实战-路由进阶篇
    2.Vue技术栈开发实战-路由基础篇
    Vue技术栈开发实战_汇总贴
    1.Vue技术栈开发实战-使用vue-cli3创建项目
  • 原文地址:https://www.cnblogs.com/llxrl/p/14307074.html
Copyright © 2020-2023  润新知