Matthews Correlation Coefficient (MCC) について勉強した

本記事の概要

最近 Google AI Blog で紹介された ELECTRA の論文 を読んだのですが、論文内に出てきた Matthews Correlation Coefficient (MCC) をそういえばわかってないなぁと思ったのでまとめておきます。

調べてみると使える場面は多そうで、kaggle でも例えば VSB Power Line Fault Detection (電線コンペ) はこの指標を使っていたりします。また、この指標を理解する過程で precision/recall の非対称性など、今まで意識できていなかった学びがありました。

ちなみに、このブログがすごく参考になったのでより深く知りたい人は是非読んでみて下さい。

MCC とは

MCC は二値分類問題の評価指標です。特に、TP (True Positive), TN (True Negative), FP (False Positive), FN (False Negative) の 4 つからなる混同行列に対して式 (\ref{eq1}) の様に定義されます。

\displaystyle{
      MCC = \frac{TP \cdot TN - FP \cdot FN}{\sqrt{(TP + FP)(TP + FN)(TN + FP)(TN + FN)}}. \tag{1}\label{eq1}
  }

この式からはどのあたりが Correlation Coefficient、つまり 相関係数 なの?って印象を受けると思うのですが、実は正解ラベル  y と予測ラベル  \hat{y}相関係数を変形することで導出されるという背景があります。導出は長くなるので本記事の下の方に記載します。

また、式 (\ref{eq1}) には分母が 0 になると定義できないという問題があります。この場合、wikipedia によると  MCC = 0 とするようです。

If any of the four sums in the denominator is zero, the denominator can be arbitrarily set to one; this results in a Matthews correlation coefficient of zero, which can be shown to be the correct limiting value.

ちなみに、コーナーケースの解釈をまとめると以下のようになります。

  •  MCC = 1
    •  FP = FN = 0 となる場合、つまり完璧に正しい分類ができている場合
  •  MCC = -1
    •  TP = TN = 0 となる場合、つまり完全に間違った分類をしている場合 (逆に言うとラベル付けが間違っているだけで分離は完璧にできている)
  •  MCC = 0
    • 分類がうまく行っておらず、ある意味ワーストケース。正解と予測がほぼ独立とみなせる場合 (特殊な 相関係数 であることを意識すればわかりやすい)

MCC の立ち位置

MCC には二値分類問題に使われる他の指標 (ex. precision, recall, f-score, accuracy) に比べて0, 1 のクラスについて対称0, 1 が imbalance な場合にも使いやすい の 2 つの性質をあわせ持つという特徴があります。

ちなみに、これら 2 つをあわせ持つ評価指標には ROC-AUC もあるなぁと思ったのですが、これは 0 ~ 1 の連続値に適用されるものなのでまた別の話だと自分は解釈しています。*1

二値分類指標の対称性

まず断っておきますが、対称性 という言葉は説明のために筆者が勝手に使っているだけでよく使われるか否かはわかりません。ここでは 対称性0, 1 の立場を入れ替えたときに評価値が変わるか否か という観点で使っています。

実は、二値分類問題で最も代表的な指標の一つである precision や recall はこの対称性が無い指標です。つまり、下記混同行列*2において、 precision = 18/(18+3) \simeq 0.86 recall = 18/(18+2) = 0.9 ですが、Positive と Negative を逆に考えると  precision = 1/(2+1) \simeq 0.33 recall = 1/(3+1) = 0.25 と全く異なる値になります。前者は非常に良い値に見えますが後者は逆にかなり悪い値に見え、これは場合によっては好ましくないはずです。

一方、MCC の場合はどちらの場合についても約  0.169 となります。

f:id:guchio3:20200313152750p:plain
混同行列例

imbalance なデータへの耐性

実は、二値分類問題において代表的な指標の一つである accuracy は、対称性を満たす指標です。つまり、上記の例においては  accuracy = (TP+TN)/(TP+FP+TN+FN) = 19/24 \simeq 0.79 となり、これは Positive と Negative を逆に考えても同じとなります。

一方、accuracy には 0, 1 のサンプル数が imbalance な場合に不都合があるという問題があります。つまり、上記の例において  0.79 の accuray は一見よく見えますが、これはサンプル数の多い Positive なラベルについての予測精度が高いためであり、サンプル数の少ない Negative なラベルについての予測精度が全体の accuray に与える影響が小さくなっています。MCC では Positive ならラベルと Negative なラベルの評価を分けて扱っているので imbalance なデータにも耐性があります。

MCC の導出

前述しましたが、式 (\ref{eq1}) は正解ラベル  y と予測ラベル  \hat{y}相関係数を変形することで下記のように導出できます。(ただし  (TP + FP)(TP + FN)(TN + FP)(TN + FN) \neq 0 においてです)

\displaystyle{
    \begin{align}
        MCC &= \frac{Cov(y, \hat{y})}{\sqrt{\sigma_y \sigma_{\hat{y}}}} \\ 
                  &= \frac{\sum_i (y_i - \mu_y)(\hat{y_i} - \mu_{\hat{y}})}{\sqrt{(\sum_i (y_i - \mu_y)^2)(\sum_i (\hat{y_i} - \mu_{\hat{y}})^2)}} \\
                  &= \frac{A}{B}, \\ \\ 

        A &= \sum_i (y_i - \mu_y)(\hat{y_i} - \mu_{\hat{y}}) \\ 
           &= \sum_i (y_i \hat{y_i} - \mu_{\hat{y}} y_i - \mu_y \hat{y_i} - \mu_y \mu_{\hat{y}}) \\
           &= \sum_i y_i \hat{y_i} - N \mu_y \mu_{\hat{y}} \\
           &= TP - \frac{1}{N}(TP + FN)(TP + FP) \\ 
           &= \frac{1}{N}[TP(TP + FP + FN + TN) - (TP + FN)(TP + FP)] \\
           &= \frac{1}{N}(TP \cdot TN - FP \cdot FN), \\ \\ 

       \sum_i (y_i - \mu_y)^2 &= \sum_i (y_i^2 - 2 \mu_y y_i + \mu_y^2) \\
                                              &= \sum_i y_i - N \mu_y \qquad  (\because y_i \in {0, 1} \to y_i^2 = y_i) \\
                                              &= TP + FN - \frac{1}{N}(TP + FN)^2 \\
                                              &= \frac{1}{N}(TP + FN)(N - (TP + FN)) \\
                                              &= \frac{a}{N}(N - a) \qquad (a = (TP + FN)), \\ \\

       \sum_i (\hat{y_i} - \mu_{\hat{y}})^2 &= \frac{b}{N}(N - b) \qquad (b = (TP + FP)), \\ \\

       B &= \sqrt{\frac{a}{N}(N - a) \frac{b}{N}(N - b)} \\
          &= \sqrt{\frac{ab}{N^2}(TN + FP)(TN + FN)} \\
          &= \frac{1}{N} \sqrt{(TP + FP)(TP + FN)(TN + FP)(TN + FN)}, \\ \\

        \therefore MCC &= \frac{TP \cdot TN - FP \cdot FN}{\sqrt{(TP + FP)(TP + FN)(TN + FP)(TN + FN)}}. \\ 

    \end{align}
}

なお、上記導出には以下を使っています。

\displaystyle{
    \begin{align}
        \sum_i y_i \hat{y_i} &= TP,   \qquad  \sum_i y_i = TP + FN,   \qquad   \sum_i \hat{y_i} = TP + FP,  \\ \\

        \mu_y &= \frac{1}{N} \sum_i y_i = \frac{1}{N} (TP + FN), \\ \\

        \mu_{\hat{y}} &= \frac{1}{N} \sum_i \hat{y_{i}} = \frac{1}{N} (TP + FP), \\ \\

        N &= TP + FP + TN + FN. \\ \\

    \end{align}
}

まとめ

本記事では Matthews Correlation Coefficient, MCC について筆者の興味がある点をまとめました。二値分類問題はシンプルゆえ非常に身近でかつ奥の深い問題ですが、MCC やその背景を知っているとよりうまく付き合っていけるのではないかと思いました。

*1:自信ないので、こうじゃないかという意見があれば是非ご指摘頂きたいです。

*2:冒頭でも紹介した素晴らしい記事から引っ張ってきています。