[筆記] macro, micro 與 binary 不同版本的 acc., precision, recall, fscore 計算方法

使用套件: https://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_recall_fscore_support.html

這篇舉例說明頗清楚:
https://blog.csdn.net/jmh1996/article/details/114935105

我也來舉個例子:

Notations

  • gt: ground truth
  • pred: predict result
  • 檢測陽性,正樣本 + : label 為 1
  • 檢測陰性,負樣本 - : label 為 0

看表格解釋

d1d2d3d4d5d6d7d8d9d10
gt0001100001
pred0101000101
對於+TNFPTNTPFNTNTNFPTNTP
對於-TPFNTPTNFPTPTPFNTPTN

統計一下
對於+ 當中 :2,:2,:5,:1
對於- 當中 :5,:1,:2,:2
可根據定義計算 precision, recall 與 F1-score:

binary avg. of precision, recall

在 sklearn.metrics 的 precision_recall_fscore_support 裡所謂的 binary average 模式
就是只看對於+(陽性樣本)的 precision, recall, fscore 值
計算出來得到

F1 值為這兩個值的加權平均,在此就不贅述

macro avg. of precision, recall

macro 就是把對於正樣本(+) 的結果與對於負樣本(-) 的結果分別算出來後,做平均
正樣本的結果已經在上一段落算完,因此我們還需要計算
對於-(陰性樣本)的precision, recall, fscore 值計算如下


接著就可以計算 macro average 版本的 precision, recall, fscroe 值計算如下

micro avg. of precision, recall

micro avg 是把上述的

  • 對於 + 當中 :2,:2,:5,:1
  • 對於 - 當中 :5,:1,:2,:2

把以上兩個分類觀點觀察到的 TP, FP, TN, FN 都做加總之後再做計算:

再根據定義計算出 micro average 版本的 precision, recall, fscore 值計算如下



報告完畢

留言

這個網誌中的熱門文章

[筆記] CRLF跟LF之區別 --- 隱形的 bug

[ML筆記] Batch Normalization

[筆記] 統計實習(1) SAS 基礎用法 (匯入資料並另存SAS新檔,SUBSTR,計算總和與平均,BMI)

[ML筆記] Ensemble - Bagging, Boosting & Stacking