1. 程式人生 > 其它 >機器學習中的評價指標

機器學習中的評價指標

0 概述

為了衡量一個機器學習模型的好壞,需要給定一個測試集,用模型對測試集中的每個樣本進行預測,並根據預測結果計算評價分數。對於分類問題,常見的評價指標有準確率、精確率、召回率和F值等。給定測試集\(\tau =\left \{ \left ( \pmb{x}^{(1)},y^{(1)} \right ),...,\left ( \pmb{x}^{(N)},y^{(N)} \right )\right \}\),假設標籤\(y^{(n)}\in \left \{ 1,...C \right \}\),用學習好的模型\(f(\pmb{x};\theta ^{*})\)對測試集中的每一個樣本進行預測,結果為\(\left \{ \hat{y}^{(1)},...,\hat{y}^{(N)} \right \}\)

。各指標定義如下:

1 準確率

準確率(Accuracy)是最常用的評價指標:

\[a=\frac{1}{N}\sum_{n=1}^{N}I(y^{(n)}=\hat{y}^{(n)}) \]

2 錯誤率

和準確率對應的就是錯誤率(Error Rate):

\[\varepsilon =1-a \]

3 精確率(查準率)和召回率(查全率)

對於一個分類問題,對類別c來說,模型在測試集上的結果可以分為以下四種情況:

  • 真正例(TP):真實類別為正例,預測類別為正例。
\[TP_{c}=\sum_{n=1}^{N}I(y^{(n)}=\hat y^{(n)}= c) \]
  • 假正例(FP):真實類別為負例,預測類別為正例。
\[FP_{c}=\sum_{n=1}^{N}I(y^{(n)}\neq c \cap \hat y^{(n)}= c) \]
  • 真負例(TN):真實類別為負例,預測類別為負例。
  • 假負例(FN):真實類別為正例,預測類別為負例。
\[FN_{c}=\sum_{n=1}^{N}I(y^{(n)}= c \cap \hat y^{(n)} \neq c) \]

類別c的混淆矩陣為:

類別c 預測為正 預測為負
真實類別為正 \(TP_{c}\) \(FN_{c}\)
真實類別為負 \(FP_{c}\) \(TN_{c}\)
  • 精確率定義如下:
\[P_{c} = \frac{TP_{c}}{TP_{c} + FP_{c}} \]
  • 召回率
    定義如下:
\[R_{c} = \frac{TP_{c}}{TP_{c} + FN_{c}} \]
  • F值定義如下:
\[F_{c} = \frac{(1+\beta ^{2})*P_{c} * R_{c}}{\beta ^{2} * P_{c} + R_{c}} \]

\(\beta\)取值為1時,稱為F1值。

4 巨集平均和微平均

為了計算分類演算法在所有類別上的總體精確率、召回率和F1值,經常使用兩種平均方法,分別稱為巨集平均(Macro Average)和微平均(Micro Average)。

  • 巨集平均的定義如下:
\[P_{macro} = \frac{1}{C}\sum_{c=1}^{C}P_{c} \]\[R_{macro} = \frac{1}{C}\sum_{c=1}^{C}R_{c} \]\[F1_{macro} = \frac{2*P_{macro} * R_{macro}}{P_{macro}+R_{macro}} \]
  • 微平均:微平均是每個樣本的效能指標的平均值
\[P_{micro}=\frac{\sum_{n=1}^{n}TP_{i}}{\sum_{n=1}^{n}TP_{i}+\sum_{n=1}^{n}FP_{i}} \]\[R_{micro}=\frac{\sum_{n=1}^{n}TP_{i}}{\sum_{n=1}^{n}TP_{i}+\sum_{n=1}^{n}FN_{i}} \]\[F1_{micro}=\frac{2*P_{micro}*R_{micro}}{P_{micro}+R_{micro}} \]

5 例題

假設我們有一個兩類鑑別模型和測試集,該模型在該測試集上預測結果與實際類別對比可得:
類別一
TP1 = 12,FP1 = 9,FN1 = 3

類別1 預測為正 預測為負
真實類別為正 12 3
真實類別為負 9 \(TN_{1}\)

易知:P1 = 57.1%,R1 = 80%
類別2
TP2 = 50,FP2 = 23,FN2 = 9

類別2 預測為正 預測為負
真實類別為正 50 9
真實類別為負 23 \(TN_{2}\)

易知:P2 = 68.5%,R2 = 84.75%
巨集平均
P_macro P = (P1 + P2) / 2 = 62.82%
P_macro R = (R1 + R2) / 2 = 82.25
微平均
P_micro P = (TP1 + TP2) / (TP1 + TP2 + FP1 + FP2) = 65.96
P_micro R = (TP1 + TP2) / (TP1 + TP2 + FN1 + FN2) = 83.78

6 總結

如果每個class的樣本數量差不多,那麼巨集平均和微平均沒有太大差異,如果每個class的樣本數量差異很大,而且你想:

  • 更注重樣本量多的class:使用巨集平均
  • 更注重樣本量少的class:使用微平均

如果微平均大大低於巨集平均,檢查樣本量多的class
如果巨集平均大大低於微平均,檢查樣本量少的class