Python でマシューズの相関係数を計算する方法
マシューズ相関係数(MCC) は、分類モデルのパフォーマンスを評価するために使用できる指標です。
次のように計算されます。
MCC = (TP*TN – FP*FN) / √ (TP+FP)(TP+FN)(TN+FP)(TN+FN)
金:
- TP : 真陽性者数
- TN : 真陰性の数
- FP : 誤検知数
- FN : 偽陰性の数
このメトリクスは、2 つのクラスのバランスが崩れている場合、つまり、一方のクラスが他方のクラスよりも多く表示される場合に特に役立ちます。
MCC の値は -1 ~ 1 です。ここで、
- -1 は、予測されたクラスと実際のクラスがまったく一致しないことを示します
- 0 は完全にランダムな推測を意味します
- 1 は、予測されたクラスと実際のクラスが完全に一致していることを示します
たとえば、スポーツ アナリストがロジスティック回帰モデルを使用して、400 人の大学バスケットボール選手が NBA にドラフトされるかどうかを予測するとします。
次の混同行列は、モデルによって行われた予測を要約したものです。
モデルの MCC を計算するには、次の式を使用できます。
- MCC = (TP*TN – FP*FN) / √ (TP+FP)(TP+FN)(TN+FP)(TN+FN)
- MCC = (15*375-5*5) / √ (15+5)(15+5)(375+5)(375+5)
- MCC = 0.7368
マシューズの相関係数は0.7368であることがわかります。この値は 1 にやや近く、モデルが選手がドラフトされるかどうかを適切に予測していることを示しています。
次の例は、Python のsklearnライブラリのmatthews_corrcoef()関数を使用して、この特定のシナリオの MCC を計算する方法を示しています。
例: Python でのマシューズ相関係数の計算
次のコードは、予測クラスの配列と実際のクラスの配列を定義し、Python でモデルのマシューズ相関係数を計算する方法を示しています。
import numpy as np from sklearn. metrics import matthews_corrcoef #define array of actual classes actual = np. repeat ([1, 0], repeats=[20, 380]) #define array of predicted classes pred = np. repeat ([1, 0, 1, 0], repeats=[15, 5, 5, 375]) #calculate Matthews correlation coefficient matthews_corrcoef(actual, pred) 0.7368421052631579
MCC は0.7368です。これは、以前に手動で計算した値と一致します。
注: matthews_corrcoef()関数の完全なドキュメントはここで見つけることができます。
追加リソース
次のチュートリアルでは、Python で分類モデルの他の一般的なメトリクスを計算する方法について説明します。
Python のロジスティック回帰の概要
Python で F1 スコアを計算する方法
Python でバランスのとれた精度を計算する方法