マシューズ相関係数について
概要
- 混合行列から計算できるカイ二乗検定の数式を変形した指標
- F1などと同様に非対称データに対してロバストであると言われている
- /ピアソンの相関係数/が連続値を取れるのに対して、マシューズ相関係数は
0 ~ 1
のバイナリ表現の対応になる
定義
\[\text{MCC} = \frac{TP \times TN-FP \times FN}{\sqrt{(TP + FP)(TP + FN)(TN + FP)(TN+FN)}}\]これは
\[|\text{MCC}| = \sqrt{\frac{\chi^{2}}{n}}\]と同じである
最大値は+1で最悪値は-1である
AUCとの比較
from sklearn.metrics import matthews_corrcoef
from sklearn.metrics import roc_auc_score
data = []
for k in range(1, 12):
minus_num = k
plus_num = 12 - k
y_true = [-1] * minus_num + [+1] * plus_num
for y_pred in itertools.product(*[[+1,-1] for i in range(len(y_true))]):
mcc = matthews_corrcoef(y_true, y_pred)
auc = roc_auc_score(y_true, y_pred)
data.append( (mcc, auc, plus_num) )
df = pd.DataFrame(data)
df.columns = ["mcc", "auc", "plus_num"]
df.sort_values(by=["auc"], ascending=[False], inplace=True)
df
このようなことをすると、以下の散布図が得られる
このことから、あるAUCの値に対してMCCはある程度のブレがある値を取るが概ね一致することがわかった