分類タスクのメトリクス振り返り

[We Need to Talk About Classification Evaluation Metrics in NLP](https://aclanthology.org/2023.ijcnlp-main.33/)
こちらの論文で触れられていた既存のMetricと提案Metricの内容を自分なりにまとめた記事です。

# 論文について
### Abstract
自然言語処理 (NLP) の分類タスク (トピック分類や感情分析など) においては、精度 (Accuracy)、F値 (F-Measure)、AUC-ROC などが標準的な指標となっているが、指標が多様であることや適用方法の恣意性があることから、NLPにおいて単一の最適な指標について合意が形成されていないのが現状。
本論文では、ランダム推測を基準とした Informedness (インフォームドネス) 指標がタスクパフォーマンスの簡潔なベースラインとなることを示す。

現在一般的に使用される評価指標は、以下がポピュラー；
- Accuracy
- F1-Measure 
- Area Under the Curve - Receiver Operating Characteristics(AUC-ROC)

事実、NLPベンチマークのGLUE(Wang et al.,2018)タスクでは、９タスクのうち7つのタスクでAccuracyかF1が採用されている。
このような指標は、真のクラス (y) と予測クラス (ŷ) の全体集合を、単一のスカラー値に圧縮することになるが、（例えば、Accuracy は、一致した予測クラスの割合に等しい）分類モデルの特性すべてを単一の値で表現することは事実上不可能 (Chicco et al., 2021)。

### 提案手法: Informedness
一般的な指標である Accuracy や F1 に代わり、公平で認知的に妥当な多クラス分類指標である Informedness (Powers, 2003, 2013) を用いて異なるモデル間の性能比較することを推奨する。Informedness は、推測やバイアスを利用する手法よりも優れた判断を行う時間を割合で示す指標であり、主流の分類モデル間の比較を歪めるような要素の加点を避けることができる。
Informedness は、モデルが情報を基にした判断を行う割合、すなわち、バイアスを利用する戦略よりも優れた判断を行う割合を示す。 さらに、この指標は、異なるバイアスや複雑さを持つタスク間での比較を可能にし、"指標に合わせる" ためだけにデータセットの再構成を行う必要性を無くす。

### Conclusion
クラス不変指標である Informedness を使用することで、モデルの汎化能力をより公平に順位付け、理解することができることが実験で示された。Informedness は最も直感的な指標であるだけでなく、モデル間およびモデル内部の比較においても最も公平。
NIT と Informedness の実装を sklearn.metrics スタイルで提供した。

### Limitations
トレーニングデータとテストデータのクラス分布が同一であることを前提としている。
この研究では、情報を持たないモデルは訓練分布を再現すると仮定しているが、モデルのパラメータ設定が不十分な場合、またはテストセットが非常に小さい場合は当てはまらない可能性がある。
よって、以下の可能性がある。
- 入力データを使用していないモデルでも Informedness スコアが0以外になる
- 「最も一般的なものを推測する」システムも、Informedness スコアが0以外になる

また、他の指標と同様に、
- Informedness は、分類システムのすべての特性を単一のスカラー値で完全に表すことは不可能。
- 評価サンプル数に敏感であり、サンプル数が少ない場合 (< 50) はモデルの性能推定が安定しなくなる可能性がある。


# そもそも、分類性能の指標とは何か？
### 混同行列(Confusion Matrix)
分類結果の集合を表すシンプルな形は混同行列である。　
Nをクラス数として、N × N の行列で表す。
慣例として列は真のクラス、行は予測クラスを表し、各セルには、特定の実際クラスと予測クラスの分類回数を記入する（各クラスについて、2 × 2　の行列をN個用意しても良い)。

#### バイナリ分類の混同行列
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641587/6896c3cc-a62a-e977-f07f-01c9b834b529.png)

#### マルチクラス分類の混同行列の例
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641587/a1681ada-6448-ed50-a213-181e0c0b45af.png)

特にNLPの場合は、分類結果を混同行列にすることで失われる情報は分類の順序のみであり、非破壊的に分類モデルの性能を表現できるのが混同行列の良いところである。
しかしモデル同士の比較を行う場合、 N × N の行列は複雑すぎるため、何かしらの指標を用いて単一の値に簡略化することが一般的となる。
この簡略化は情報破壊的操作であるため (Chicco et al., 2021)、指標が単一の値を得るために適用するヒューリスティックルール (Valverde-Albacete et al., 2013) が、指標がどのモデルを「良い」とみなすかを決定することになる。

# 現在ポピュラーな評価指標と、その問題点
# Accuracy (正解率)
### ✏️定義
評価サンプル全体のうち、正しく識別されたサンプルの割合。

混同行列から
```math
Accuracy = \dfrac{TP + TN}{TP + FP + FN + TN}
```

Cはクラス数
TPcはクラスcについてのTrue Positivesの数
Sは全サンプル数　
として、以下のようにも定義できる。
```math
Accuracy = \dfrac{1}{S} \sum_{c=0}^{C}TP_c
```
### 😕問題点
「最良のモデルは最も多く正しく予測する」というヒューリスティックを表現しているが、**Accuracy Paradox(BenDavid, 2007)**　を抱えている。
これは、**最も出現頻度の高いクラスを推測するだけで、テストセットにおけるそのクラスの出現率と同じスコアを得ることができてしまう**ことを意味する。 このパラドックスを2つの現象に拡張すると、
- より頻繁に出現する (優勢な) クラスを多く予測するモデルに報酬が与えられる (Lafferty et al., 2001)。
- ランダム推測モデルの精度の下限がほとんどの現実的なシナリオにおいてゼロよりも大幅に高くなる(Youden, 1950)。これを、ベースラインクレジットと呼ぶ


# F1-Score (F-measure)
### ✏️定義
Precision（適合率）とRecall(再現率)の調和平均で表す。
- Recall：　本来Positiveと分類すべき全データをどれほど回収できたか
- Precision:　Positiveと分類されたデータの中で本当にPositiveだった割合
```math
Recall = \dfrac{TP}{TP + FN}\qquad Precision = \dfrac{TP}{TP + FP}
```
```math
F1Score = \dfrac{2}{\dfrac{1}{Recall}+\dfrac{1}{Precision}} = \dfrac{2TP}{2TP + FP + FN}
```
PrecisionとRecallはトレードオフの関係にあるため、調和平均を用いることで両者のバランスを見ることができる（PrecisionとRecallの値が大きく異なる場合、調和平均は小さくなる）。

### 😕問題点
F1スコアの算出に使うPrecisionとRecallは1つのクラスに対して定義されているため、バイナリ分類でもクラスを入れ替えると値が変わることに注意しなければならない。数が多いクラスを正(Positive)に設定してしまうと、F1スコアは全く意味のない値になってしまう。
また、PrecisionとRecallの重み付けはモデル自体に依存するため (Hand and Christen, 2018)、異なるモデル同士の比較には適さない。

# Macro-F1
### ✏️定義
F1スコアを多クラス分類に拡張したもの。
各クラスについて、one-vs-allの考え方でF1スコアを算出し、その算術平均をMacro-F1スコアとする。
Cをクラス数として、
```math
MacroF1Score = \dfrac{\sum_{c=0}^{C}F1Score_c}{C} 
```
### 😕問題点
各クラスのF1スコアの算術平均をとるだけ（＝どのクラスも同じ重みで扱う）なので、クラス不均衡を考慮していない。少数クラスについての性能が非常に悪かったとしても、多数クラスについての高いF1スコアがそれをカバーしてしまう。
つまり、Macro-F1スコアは、データセットの各クラスに含まれるデータ数が同じ場合しか真に役立たない。
この問題に対処する指標として、Weighted-MacroF1スコアがある。

# Micro-F1
### ✏️定義
F1スコアを多クラス分類に拡張したもの。
各クラスについて、one-vs-allの考え方でて混同行列を作成する。TP、FN、FPを全クラスについてそれぞれ合計してNet TP、Net FN、Net FPを求める。これを用いてF1スコアを計算する。
```math
MicroF1Score = \dfrac{2Net\;TP}{2Net\;TP+(Net\;FP+Net\;FN)} 
```
バイナリ分類の場合に限り、Accuracyと同じ値になる。

### 😕問題点
各予測に等しい重みを与えるので少数クラスに対する性能には敏感だが、Weighted-MacroF1とは異なり、その計算においてクラス不均衡は本質的に考慮されていない。また、クラスごとのパフォーマンスに注目したい場合には他の指標や分析で補完する必要がある。

# AUC-ROC (Area Under the Curve of Receiver Operating Characteristics)
### ✏️定義
ROC曲線の下側の面積。
- ROC曲線
Positive と Negative に分類する際の閾値を変更しながら、縦軸にTPR(=Recall)、横軸にFPRをプロットしたもの。
FPRは、実際の陰性のうち誤って陽性とラベル付けされた割合。
```math
TPR = \dfrac{TP}{TP+FN}\qquad FPR = \dfrac{FP}{FP+TN}
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641587/bf2c89ca-ad30-d543-d840-077ce53dfe93.png)

### 😕問題点
陽性データ数が少ない不均衡データに対して過度に高く算出される。
特定の分類器のFPRに依存するコスト関数を適用しているため、FPRが異なるシステムを比較することはできない。

<details><summary>ちなみに、なぜTPRとFPRのプロットを使うのか（TPRとTNRのプロットではダメなのか）、GPT-4に聞いてみた;</summary><div>
User: 
Why does the ROC curve plot True Positive Rate and False Positive Rate? For example, why not True Positive Rate and True Negative Rate?

ChatGPT4:
The ROC (Receiver Operating Characteristic) curve plots the True Positive Rate (TPR) against the False Positive Rate (FPR) to evaluate the diagnostic ability of a binary classifier system as its discrimination threshold is varied. The choice of TPR and FPR, rather than TPR and True Negative Rate (TNR, also known as specificity), is purposeful and has historical and practical reasons:

1. Historical Context: The ROC curve originates from signal detection theory, which was developed during World War II for detecting enemy objects in battlefields and distinguishing them from noise (false alarms). The key was to detect true positives (enemy objects) while minimizing false positives (mistaking noise for an enemy object). This context emphasizes the importance of balancing the detection of positives with the rate of false alarms, directly corresponding to TPR and FPR.
1. Discriminative Performance: TPR (or sensitivity) and FPR provide direct measures of a classifier's ability to distinguish between the two classes—positives and negatives. TPR measures the proportion of actual positives that are correctly identified, while FPR measures the proportion of actual negatives that are incorrectly identified as positives. This pairing effectively captures the classifier's discriminative ability at various threshold settings.
3. Complementary Metrics: TPR and FPR are complementary in assessing model performance. While TPR focuses on the model's ability to detect positives, FPR assesses how often the model mistakenly identifies negatives as positives. Plotting these against each other allows for a clear visualization of the trade-off between benefiting from true positives and suffering from false positives.
4. Threshold Independence: The ROC curve's design allows it to illustrate a model's performance across all possible threshold values, providing a comprehensive view of its ability to separate classes without being tied to a specific threshold. This is crucial for comparing models and choosing optimal thresholds based on the cost or importance of different types of errors.
5. Informative for Imbalanced Datasets: In datasets where one class significantly outnumbers the other, TPR and FPR can still provide useful information about the model's performance, whereas metrics like accuracy can be misleading. The ROC curve's focus on the rates of correctly and incorrectly identified instances, rather than their absolute numbers, helps in evaluating models on imbalanced datasets.

Using TPR and TNR (specificity) would essentially plot sensitivity against specificity. While this can provide insights into a model's ability to correctly identify positives and negatives, it doesn't directly address the trade-off involved in increasing sensitivity at the cost of increasing false alarms (decreasing specificity). The ROC curve, by focusing on TPR and FPR, directly visualizes this trade-off, making it a powerful tool for evaluating and comparing classifiers.
</div></details>
簡単にいえば、偽陽性の増加（特異度の減少）を犠牲にして感度（Recall）を増加させるトレードオフを表現するため、ということらしい

# AUC-PR （Area Under the Precision-Recall Curve)
### ✏️定義
PR曲線の下側の面積。
- PR曲線
Positive と Negative に分類する際の閾値を変更しながら、縦軸にPrecision、横軸にRecallをプロットしたもの。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641587/d0c00030-2da4-727a-bc0b-258bbb37f168.png)

### 😕問題点
ROC曲線においてはPositiveをPositiveであると判断できていること、NegativeをNegativeと判断できること両方を観点として持つが、PR曲線はPositiveをPositiveと判断できるていることのみに着目している。
よって、クラス不均衡がない場合は、ROC曲線を使用すると良いが、Positiveが非常に少ない場合は、Positiveクラスについての性能に着目したPR曲線を使用する方が良い。

# Mathew’s Correlation Coefficient (MCC)
### ✏️定義
予測クラス (ŷ) と真のクラス (y) の相関関係を測定する指標。
```math
MCC = \dfrac{Cov(\hat{y},y)}{σ_\hat{y}・ σ_y}
```
または、
```math
MCC =  \frac{TP \times TN - FP \times FN}{\sqrt{(TP+FP)(TP+FN)(TN+FP)(TN+FN)}} 
```
混同行列の相関（完璧に当てることができた理想のテーブルと予測結果のテーブルがどれくらい一致しているか）とも言える。

ランダム推測の場合は0 、全問不正解の場合は-1になるように定義されている。
F1スコアはどのクラスをPositiveに設定するかによって変化するが、MCCはPositiveクラスの設定に依存しないので、クラス不均衡な場合のバイナリ分類モデルの評価に最適である。

### 😕問題点
MCCはテストセットにおける各クラスの出現頻度に依存するため、異なるデータセットで評価されたモデルを比較することはできない (Chicco et al., 2021)。
クラス分布が同じか似ているタスク間の比較に適する。

# Informedness
### ✏️定義
**モデルがランダムに推定するよりも優れている**確率を評価するために、「利益」と「損失」 の概念を用いて、分類評価を「オッズゲーム (勝率ゲーム)」として捉える。
クラスの経験的確率 (出現率) が p(y = c) である場合、単一の予測におけるgain(またはlossすなわちペナルティ) i を以下の式で表す。
```math
\begin{equation}
  i(y,\hat{y})=
  \begin{cases}
    \dfrac{1}{p(y=c)} & \text{if }\hat{y}=c \\
    -\dfrac{1}{1-p(y=c)}  & \text{if }\hat{y}≠c
  \end{cases}
\end{equation}
```
ここで p(y = c) は、テスト集合から計算されたクラス c の経験確率、
y: 正しいクラスラベル
ŷ: モデルが予測したクラスラベル
とする。
出現確率の逆数を用いることで、レアなクラスを正しく予測することの価値を反映できる。

Informednessスコアは、分類集合全体にわたって次のように集約される：
```math
I= \sum_{c=0}^{C}\dfrac{p(\hat{y}=c)}{N}\sum_y{\mathbb1(y=c)i(y,\hat{y})} 
```
ここで、$\mathbb1(y = c)$は、y = cのときに1、それ以外のときに0をとる指標関数である。
Informedness は、利益と損失の平均値と言える。

予測能力のないモデルは、ラベルバイアス (クラス偏り) やベースラインクレジット (偶然の一致による評価) を得ることができないようになっている。
これにより、
異なるバイアスを持つタスク (e.g. CoLA と SST-2) や、
異なるクラス数を持つタスク (e.g. CoLA と MNLI) を直接比較できる。
また、クラスごとの出現率を調整する必要がない。

<details><summary>Informednessについて、Geminiに解説してもらった;</summary><div>　Informedness は、モデルがランダムに推定するよりも優れている確率を評価するために、「利益」と「損失」 の概念を用いています。

出現確率の逆数 を用いる理由は、レアなクラスを正しく予測することの価値 を反映するためです。

例:

    ある病気の罹患率が 1% であるとします。
    モデル A は 100 人中 1 人を正しく診断し、99 人を誤診します (精度 1%)。
    モデル B は 100 人中 99 人を正しく診断し、1 人を誤診します (精度 99%)。

一見すると、モデル B の方が精度が高い と考えられます。しかし、Informedness では以下の理由により、モデル A の方が高く評価されます。

    モデル A は、レアな病気であるにもかかわらず、1 人を正しく診断しました。
    モデル B は、ほとんどの人が病気ではないという情報を単に利用しているだけです。

利益と損失の計算:

    利益: モデルが レアなクラスを正しく予測 した場合、その価値は高くなります。
        利益 = 1 / 出現確率
        例: モデル A が 1% の病気患者を正しく診断した場合、利益は 1 / 0.01 = 100 となります。
    損失: モデルが レアなクラスを誤診 した場合、その損失は大きくなります。
        損失 = -1 / (1 - 出現確率)
        例: モデル B が 1% の病気患者を誤診した場合、損失は -1 / (1 - 0.01) = -99 となります。

Informedness の解釈:

    Informedness は、利益と損失の平均値 です。
    Informedness の値が高ければ、モデルがランダムに推定するよりも優れている確率が高いことを示します。

まとめ:

    出現確率の逆数を使うことで、レアなクラスを正しく予測することの価値 を反映することができます。
    Informedness は、モデルの性能を評価する際に、精度だけでなく、レアなクラスに対する性能も考慮 することができます。

参考資料:

    Informedness - Wikipedia: https://en.wikipedia.org/wiki/Informedness
    Powers, D. M. W. (2003). Evaluation: From precision, recall and F-measure to ROC, informedness, markedness and correlation. Journal of Machine Learning Technologies, 2(1), 37-63.: [無効な URL を削除しました]

ソース

    medinform.jmir.org/2020/11/e19679/ 
</div></details>

### 😕問題点
論文の[Limitations](https://qiita.com/lighlighlighlighlight/items/345e8f16966b8f81264e#limitations)に同じ。

# Normalized Information Transfer (NIT)
### ✏️定義
モデルが情報転送を通じて入力分布の不確実性をどれだけ減少させるかを表す。
```math
NIT =  2^{MI_{\hat{y},y}-H_{U_y}}
```
$ MI_{\hat{y},y} $は真のクラスと予測クラス間の相互情報量 (Mutual Information) 

$H_{U_y}$は真のクラスが均一分布に従う場合のエントロピー

Informedness と同様に、NITはクラス出現率を考慮に入れており、モデルがスコアを上げるためには、シャノン情報量を増やす (つまり、サンプルを正しく分類する) ことを求める。
<details><summary>NITについて、Geminiに解説してもらった;</summary><div>　
NIT（正規化情報転送） は、分類器がどれだけ情報量を伝達し、入力データの不確実性を減らすかを測る指標です。簡単に言えば、分類器がどれだけ正確にデータを分類できるかを表します。

MIy,ŷ は、真のクラスと予測クラスの間の相互情報量です。これは、2つの変数間の依存関係を表す指標です。相互情報量が高いほど、2つの変数は互いに関連していることを意味します。つまり、真のクラスと予測クラスが一致するほど、相互情報量が高くなります。

HUy は、真のクラスが均一分布に従う場合のエントロピーです。エントロピーとは、変数の不確実性を表す指標です。エントロピーが高いほど、変数は不確実であることを意味します。つまり、真のクラスがランダムに分布しているほど、エントロピーが高くなります。

NIT は、MIy,ŷ と HUy を使って、分類器がどれだけ情報量を伝達し、入力データの不確実性を減らすかを計算します。NIT の値は 0 から 1 の範囲で、値が高いほど、分類器が情報量を伝達し、入力データの不確実性を減らす能力が高いことを意味します。

NIT は、MIy,ŷ と HUy の差を 2 で指数化したもので定義されます。これは、情報量とエントロピーの差を強調するためです。

MIy,ŷ は、真のクラスと予測クラスの間の相互情報量です。これは、2つの変数間の依存関係を表す指標です。相互情報量が高いほど、2つの変数は互いに関連していることを意味します。

HUy は、真のクラスのエントロピーです。エントロピーとは、変数の不確実性を表す指標です。エントロピーが高いほど、変数は不確実であることを意味します。

MIy,ŷ - HUy は、情報量とエントロピーの差を表します。この差が大きければ大きいほど、分類器は情報量を伝達し、入力データの不確実性を減らす能力が高いことを意味します。

2^(MIy,ŷ - HUy) は、情報量とエントロピーの差を強調します。これは、小さな差でも、指数化することで大きな違いになるためです。
相互情報量とエントロピーの差は、2つの確率変数間の依存関係を表します。

相互情報量 は、2つの確率変数 X と Y が互いにどれだけ情報を持っているかを表す指標です。相互情報量が大きければ大きいほど、2つの確率変数は互いに依存していることを意味します。

エントロピー は、確率変数の不確実性を表す指標です。エントロピーが大きければ大きいほど、確率変数は不確実であることを意味します。

相互情報量とエントロピーの差 は、2つの確率変数間の依存関係によって減少する不確実性の量を表します。つまり、相互情報量とエントロピーの差が大きければ大きいほど、2つの確率変数は互いに依存し、その依存関係によって不確実性が減少していることを意味します。

例

以下は、2つの分類器の例です。

    分類器 A は、すべてのデータをクラス A に分類します。
    分類器 B は、すべてのデータを真のクラスに分類します。

分類器 A の MIy,ŷ は 0 です。これは、真のクラスと予測クラスの間には依存関係がないことを意味します。HUy は、データセットのクラス数によって決まります。NIT は 0 です。

分類器 B の MIy,ŷ は、データセットのエントロピーと同じです。これは、真のクラスと予測クラスが完全に一致することを意味します。HUy は 0 です。NIT は 1 です。

</div></details>

### 😕問題点
guessing(ランダム推論のこと？)による正解にも報奨を与えてしまうため、タスク間の比較には注意が必要


# Ref
- https://aclanthology.org/2023.ijcnlp-main.33/
- https://www.datarobot.com/jp/blog/matthews-correlation-coefficient/
- https://datawokagaku.com/f1score/
- https://chat.openai.com/share/e345ae93-876e-44c1-bf5b-1bde9e575633
- https://www.v7labs.com/blog/f1-score-guide
- https://zenn.dev/d2c_mtech_blog/articles/38dd54be656ba9