多クラス分類の性能評価に用いられる指標について備忘録として簡単にまとめておく。
目次
2クラス分類 (Binary classification)
多クラス分類の前に、単純なPositiveとNegativeの2クラス分類(2項分類)の場合の性能指標(Performance Metrics)をまとめる。
次のような混同行列(Confusion Matrix)で表される場合を考える。表の要素は、該当する件数を表す。
実際 | |||
---|---|---|---|
Positive | Negative | ||
予測 | Positive | True Positive(\(TP\)) | False Positive (\(FP\)) |
Negative | False Negative (\(FN\)) | True Negative (\(TN\)) |
分類性能指標
Accuracy(正解率)
Accuracy を「精度」と訳す場合もあるが、精度がPrecision を表す場合もあり、「精度」には曖昧さがある。「精度」を使う場合には定義を示すなど曖昧にならないようにした方が良いと思う。
すべてのデータのうち正解だった割合を表す 正解率 \(A\)は、次の式で表される。
\[
A=\frac{TP+TN}{TP+TN+FP+FN}
\]
データの分布に偏りがある不均衡な(imbalanced)データの場合にaccuracyだけを見ていると判断を誤る場合がある。
Precision (適合率)
Positiveと予測したもののうちの正解の割合を表す 適合率 \(P\)は、次の式で表される。
\[
P=\frac{TP}{TP+FP}
\]
Recall (再現率)、Sensitivity(感度)
Positiveデータのうち正しく予測された割合を表す 再現率 \(R\)は、次の式で表される。
\[
R=\frac{TP}{TP+FN}
\]
医療系の分野ではsensitivity(感度)と呼ぶことが多いようだ。
Specificity(特異度)
sensitivity(感度)に対してspecificity(特異度) \(S\)は以下の通り。
\[
S=\frac{TN}{FP+TN}
\]
F1-score, F-measure (F1スコア、F尺度)
PrecisionとRecallの調和平均(harmonic mean)をF1-scoreやF-measure と呼び、PrecisionとRecallを総合した分類性能の指標として用いることが多い。
「F値」と訳される場合もあるが、分散分析などでF検定(F-test)を行う際の検定統計量のF値(F-value)などと混同する場合もないとは言えないので、文脈上曖昧さがないか注意が必要と考える。
F1スコア \(F\)は、次の式で表される。
\[
F=\frac{2}{\frac{1}{P}+\frac{1}{R}}=\frac{2PR}{P+R}
\]
多クラス分類 (Multi-class classification)
\(N\)クラスの分類をする場合の性能指標を考える。
下に示すような混同行列で表される場合を考える。表の要素は、該当する件数を表す。
クラスは\(L_1\)から\(L_N\)とする。
\(c_{ij}\) は、クラス\(L_i\)と予測されたクラス\(L_j\)の件数を表す。
実際 (Actual) | |||||||
---|---|---|---|---|---|---|---|
\[L_1\] | \[L_2\] | \[\cdots\] | \[L_j\] | \[\cdots\] | \[L_N\] | ||
予測 (Predicted) | |||||||
\[L_1\] | \[c_{11}\] | \[c_{12}\] | \[\cdots\] | \[c_{1j}\] | \[\cdots\] | \[c_{1N}\] | |
\[L_2\] | \[c_{21}\] | \[c_{22}\] | \[\cdots\] | \[c_{2j}\] | \[\cdots\] | \[c_{2N}\] | |
\[\vdots\] | \[\vdots\] | \[\ddots\] | \[\vdots\] | \[\vdots\] | |||
\[L_i\] | \[c_{i1}\] | \[c_{i2}\] | \[\cdots\] | \[c_{ij}\] | \[\cdots\] | \[c_{iN}\] | |
\[\vdots\] | \[\vdots\] | \[\vdots\] | \[\ddots\] | \[\vdots\] | |||
\[L_N\] | \[c_{N1}\] | \[c_{N2}\] | \[\cdots\] | \[c_{Nj}\] | \[\cdots\] | \[c_{NN}\] |
多クラス分類におけるTP、FP、FN、TN
True Positive (\({TP}_i\))
クラス\(L_i\)のTrue Positive (\({TP}_i\))は、次の式で表される。
\[{TP}_i=c_{ii}\]
実際 (Actual) | |||||||
---|---|---|---|---|---|---|---|
\[L_1\] | \[L_2\] | \[\cdots\] | \[L_i\] | \[\cdots\] | \[L_N\] | ||
予測 (Predicted) | |||||||
\[L_1\] | \[c_{11}\] | \[c_{12}\] | \[\cdots\] | \[c_{1i}\] | \[\cdots\] | \[c_{1N}\] | |
\[L_2\] | \[c_{21}\] | \[c_{22}\] | \[\cdots\] | \[c_{2i}\] | \[\cdots\] | \[c_{2N}\] | |
\[\vdots\] | \[\vdots\] | \[\ddots\] | \[\vdots\] | \[\vdots\] | |||
\[L_i\] | \[c_{i1}\] | \[c_{i2}\] | \[\cdots\] | \[c_{ii}\] | \[\cdots\] | \[c_{iN}\] | |
\[\vdots\] | \[\vdots\] | \[\vdots\] | \[\ddots\] | \[\vdots\] | |||
\[L_N\] | \[c_{N1}\] | \[c_{N2}\] | \[\cdots\] | \[c_{Ni}\] | \[\cdots\] | \[c_{NN}\] |
False Positive (\({FP}_i\))
クラス\(L_i\)のFalse Positive (\({FP}_i\))は、次の式で表される。
\[{FP}_i=\sum_{\displaylines{j=1 \\ j\neq i}}^{N}c_{ij}\]
実際 (Actual) | |||||||
---|---|---|---|---|---|---|---|
\[L_1\] | \[L_2\] | \[\cdots\] | \[L_i\] | \[\cdots\] | \[L_N\] | ||
予測 (Predicted) | |||||||
\[L_1\] | \[c_{11}\] | \[c_{12}\] | \[\cdots\] | \[c_{1i}\] | \[\cdots\] | \[c_{1N}\] | |
\[L_2\] | \[c_{21}\] | \[c_{22}\] | \[\cdots\] | \[c_{2i}\] | \[\cdots\] | \[c_{2N}\] | |
\[\vdots\] | \[\vdots\] | \[\ddots\] | \[\vdots\] | \[\vdots\] | |||
\[L_i\] | \[c_{i1}\] | \[c_{i2}\] | \[\cdots\] | \[c_{ii}\] | \[\cdots\] | \[c_{iN}\] | |
\[\vdots\] | \[\vdots\] | \[\vdots\] | \[\ddots\] | \[\vdots\] | |||
\[L_N\] | \[c_{N1}\] | \[c_{N2}\] | \[\cdots\] | \[c_{Ni}\] | \[\cdots\] | \[c_{NN}\] |
False Negative (\({FN}_i\))
クラス\(L_i\)のFalse Negative (\({FN}_i\))は、次の式で表される。
\[{FN}_i=\sum_{\displaylines{k=1 \\ k\neq i}}^{N}c_{ki}\]
実際 (Actual) | |||||||
---|---|---|---|---|---|---|---|
\[L_1\] | \[L_2\] | \[\cdots\] | \[L_i\] | \[\cdots\] | \[L_N\] | ||
予測 (Predicted) | |||||||
\[L_1\] | \[c_{11}\] | \[c_{12}\] | \[\cdots\] | \[c_{1i}\] | \[\cdots\] | \[c_{1N}\] | |
\[L_2\] | \[c_{21}\] | \[c_{22}\] | \[\cdots\] | \[c_{2i}\] | \[\cdots\] | \[c_{2N}\] | |
\[\vdots\] | \[\vdots\] | \[\ddots\] | \[\vdots\] | \[\vdots\] | |||
\[L_i\] | \[c_{i1}\] | \[c_{i2}\] | \[\cdots\] | \[c_{ii}\] | \[\cdots\] | \[c_{iN}\] | |
\[\vdots\] | \[\vdots\] | \[\vdots\] | \[\ddots\] | \[\vdots\] | |||
\[L_N\] | \[c_{N1}\] | \[c_{N2}\] | \[\cdots\] | \[c_{Ni}\] | \[\cdots\] | \[c_{NN}\] |
True Negative (\({TN}_i\))
クラス\(L_i\)のTrue Negative (\({TN}_i\))は、次の式で表される。
\[{FN}_i=\sum_{\displaylines{j=1 \\ j\neq i}}^{N}\sum_{\displaylines{k=1 \\ k\neq i}}^{N}c_{jk}\]
実際 (Actual) | |||||||
---|---|---|---|---|---|---|---|
\[L_1\] | \[L_2\] | \[\cdots\] | \[L_i\] | \[\cdots\] | \[L_N\] | ||
予測 (Predicted) | |||||||
\[L_1\] | \[c_{11}\] | \[c_{12}\] | \[\cdots\] | \[c_{1i}\] | \[\cdots\] | \[c_{1N}\] | |
\[L_2\] | \[c_{21}\] | \[c_{22}\] | \[\cdots\] | \[c_{2i}\] | \[\cdots\] | \[c_{2N}\] | |
\[\vdots\] | \[\vdots\] | \[\ddots\] | \[\vdots\] | \[\vdots\] | |||
\[L_i\] | \[c_{i1}\] | \[c_{i2}\] | \[\cdots\] | \[c_{ii}\] | \[\cdots\] | \[c_{iN}\] | |
\[\vdots\] | \[\vdots\] | \[\vdots\] | \[\ddots\] | \[\vdots\] | |||
\[L_N\] | \[c_{N1}\] | \[c_{N2}\] | \[\cdots\] | \[c_{Ni}\] | \[\cdots\] | \[c_{NN}\] |
多クラス分類性能指標
Precision
クラス\(L_i\)の適合率\(P_i\)は、次の式で表される。
\[ P_i=\frac{{TP}_i}{{TP}_i+{FP}_i}=\frac{c_{ii}}{c_{ii}+\sum_{\displaylines{j=1 \\ j\neq i}}^{N}c_{ij}}=\frac{c_{ii}}{\sum_{j=1}^{N}c_{ij}} \]
Recall
クラス\(L_j\)の再現率\(R_j\)は、次の式で表される。
\[ R_j=\frac{{TP}_j}{{TP}_j+{FN}_j}=\frac{c_{jj}}{c_{jj}+\sum_{\displaylines{i=1 \\ i\neq j}}^{N}c_{ij}}=\frac{c_{jj}}{\sum_{i=1}^{N}c_{ij}} \]
F1-score
クラス\(L_i\)のF1スコア\(F_i\)は、次の式で表される。
\[
F_i=\frac{2{P_i}{R_i}}{{P_i}+{R_i}}
\]
Accuracy
正解率\(A\)は、次の式で表される。
\[
A=\frac{\sum_{i=1}^{N}c_{ii}}{\sum_{i=1}^{N}\sum_{j=1}^{N}c_{ij}}
\]
多クラス分類のPrecisionとRecallのまとめ
実際 (Actual) | Precision | |||||||
---|---|---|---|---|---|---|---|---|
\[L_1\] | \[L_2\] | \[\cdots\] | \[L_j\] | \[\cdots\] | \[L_N\] | |||
予測 (Predicted) | ||||||||
\[L_1\] | \[c_{11}\] | \[c_{12}\] | \[\cdots\] | \[c_{1j}\] | \[\cdots\] | \[c_{1N}\] | \[ \tiny \displaylines{ P_1=\frac{{TP}_1}{{TP}_1+{FP}_1}\\ =\frac{c_{11}}{\sum_{j=1}^{N}c_{1j}} }\] |
|
\[L_2\] | \[c_{21}\] | \[c_{22}\] | \[\cdots\] | \[c_{2j}\] | \[\cdots\] | \[c_{2N}\] | \[ \tiny \displaylines{ P_2=\frac{{TP}_2}{{TP}_2+{FP}_2}\\ =\frac{c_{22}}{\sum_{j=1}^{N}c_{2j}} }\] |
|
\[\vdots\] | \[\vdots\] | \[\vdots\] | \[\ddots\] | \[\vdots\] | \[\vdots\] | \[\vdots\] | ||
\[L_i\] | \[c_{i1}\] | \[c_{i2}\] | \[\cdots\] | \[c_{ij}\] | \[\cdots\] | \[c_{iN}\] | \[ \tiny \displaylines{ P_i=\frac{{TP}_i}{{TP}_i+{FP}_i}\\ =\frac{c_{ii}}{\sum_{j=1}^{N}c_{ij}} }\] |
|
\[\vdots\] | \[\vdots\] | \[\vdots\] | \[\ddots\] | \[\vdots\] | \[\vdots\] | |||
\[L_N\] | \[c_{N1}\] | \[c_{N2}\] | \[\cdots\] | \[c_{Nj}\] | \[\cdots\] | \[c_{NN}\] | \[ \tiny \displaylines{ P_N=\frac{{TP}_N}{{TP}_N+{FP}_N}\\ =\frac{c_{NN}}{\sum_{j=1}^{N}c_{Nj}} }\] |
|
Recall | \[ \tiny \displaylines{ R_1=\frac{{TP}_1}{{TP}_1+{FN}_1}\\ =\frac{c_{11}}{\sum_{i=1}^{N}c_{i1}} } \] |
\[ \tiny \displaylines{ R_2=\frac{{TP}_2}{{TP}_2+{FN}_2}\\ =\frac{c_{22}}{\sum_{i=1}^{N}c_{i2}} } \] |
\[\cdots\] | \[ \tiny \displaylines{ R_j=\frac{{TP}_j}{{TP}_j+{FN}_j}\\ =\frac{c_{jj}}{\sum_{i=1}^{N}c_{ij}} } \] |
\[\cdots\] | \[ \tiny \displaylines{ R_N=\frac{{TP}_N}{{TP}_N+{FN}_N}\\ =\frac{c_{NN}}{\sum_{i=1}^{N}c_{iN}} } \] |
Macro-average (マクロ平均)
データの分布に偏りがある不均衡な場合には、平均の取り方によって値が異なる。
マクロ平均は、各クラスに対する指標の平均を求めたものである。各クラスの指標を\(X_i\)とすると、マクロ平均\(X_{macro}\)は次の式で表される。
\[
X_{macro}=\frac{\sum_{i=1}^{N}X_i}{N}
\]
Macro-average of Precision (マクロ平均適合率)
マクロ平均適合率\(P_{macro}\)は、次の式で求められる。
\[
P_{macro}=\frac{\sum_{i=1}^{N}P_i}{N}
\]
Macro-average of Recall (マクロ平均再現率)
マクロ平均再現率\(P_{macro}\)は、次の式で求められる。
\[
R_{macro}=\frac{\sum_{j=1}^{N}R_j}{N}
\]
Macro-average of F1-score (マクロ平均F1スコア)
マクロ平均F1スコア\(F_{macro}\)は、次の式で求められる。
\[
F_{macro}=\frac{\sum_{i=1}^{N}F_i}{N}
\]
マクロ平均に基づくF1-score
マクロ平均適合率\(P_{macro}\)とマクロ平均再現率\(R_{macro}\)をF1-scoreの式に適用することでマクロ平均に基づくF1-score \(F^{macro}\) を求めることができる。
\[
F^{macro}=\frac{2P_{macro}R_{macro}}{P_{macro}+R_{macro}}
\]
一般に、先に示したマクロ平均F1スコア\(F_{macro}\)とは異なる値になる。
Micro-average (マイクロ平均)
マイクロ平均は、各要素の重みが等しいとして平均を求めたものである。
Micro-average of Precision (マイクロ平均適合率)
マイクロ平均適合率\(P_{micro}\)は、次の式で求められる。
\[
P_{micro}=\frac{\sum_{i=1}^{N}{TP}_i}{\sum_{i=1}^{N}\left({TP}_i+{FP}_i\right)}=\frac{\sum_{i=1}^{N}c_{ii}}{\sum_{i=1}^{N}\sum_{j=1}^{N}c_{ij}}=A
\]
\(P_{micro}\)は、正解率 \(A\) に等しくなる。したがって、マイクロ平均適合率ではなく正解率を示せばよい。
Micro-average of Recall (マイクロ平均再現率)
マクロ平均再現率\(R_{micro}\)は、次の式で求められる。
\[
R_{micro}=\frac{\sum_{j=1}^{N}{TP}_j}{\sum_{j=1}^{N}\left({TP}_j+{FN}_j\right)}=\frac{\sum_{j=1}^{N}c_{jj}}{\sum_{j=1}^{N}\sum_{i=1}^{N}c_{ij}}=A
\]
\(R_{micro}\)は、正解率 \(A\) に等しくなる。したがって、マイクロ平均再現率ではなく正解率を示せばよい。
マイクロ平均に基づくF1-score
マイクロ平均適合率\(P_{micro}\)とマイクロ平均再現率\(R_{micro}\)をF1-scoreの式に適用することでマイクロ平均に基づくF1-score \(F^{micro}\) を求めることができる。
\(P_{micro}\)、\(R_{micro}\)ともに正解率 \(A\)に等しいので\(F^{micro}\)も\(A\)になる。
\[
F^{micro}=\frac{2P_{micro}R_{micro}}{P_{micro}+R_{micro}}
=\frac{2A \cdot A}{A+A}=A
\]
多クラス分類では、マイクロ平均の適合率、再現率、F1スコアは正解率に等しくなるので、正解率を示せば十分である。
一つのデータに複数のラベルを割り当てる多ラベル分類(multi-label classification)では、(TP、FP、FN、TNの定義によって)一般的にマイクロ平均の適合率、再現率は異なる。
参考にした資料
Web
Data Science Performance Metrics for Everyone
Multi-Class Metrics Made Simple, Part I: Precision and Recall
Multi-Class Metrics Made Simple, Part II: the F1-score
YouTube
Performance measure on multiclass classification [accuracy, f1 score, precision, recall]