リハビリ 人工知能 理学療法 Deep learning Deep Neural Network ディープラーニング AI 鍼灸

人工知能・リハビリ・日記・理学療法

タイトルはAIですが、個人的な日記なので、あまり気になさらないように。

マシューズ相関係数は直感的ではなかったが保守的説。

どうも、すみません、まだまだ素人です。

 

 

いきなりのカミングアウトすみません!

 

マシューズ相関係数は直感的ではなかったが保守的説。

マシューズ相関係数;Matthews Correlation Coefficient (MCC)

 

まず、この指標はなんやねんと思った方も多いでしょう。私もそのうちの一人です。w 

ただ、最近の論文ではよく使用されています。

 

MCCは、混同行列のすべてのフィールドを評価して、分類器の偏りのない比較に適した尺度と見なされています。

MCCの参考文献はこちら↓

arxiv.org

 

混同行列の話や予測精度(F値)についてはこちら↓

F値は2つある?F statistics and F measure! - 人工知能・リハビリ・日記・理学療法

 

MCCは1から-1までの相関係数です。

1だと完璧な分類性能0は完全にランダムな分類性能-1は完全に逆の分類性能

 

計算して見ましょう。

MCCの計算式はこちら↓

f:id:Takuma_AI:20210504095307p:plain

 

さっそく、実際に計算。

まずは、インポート

import numpy as np
import pandas as pd

 

混同行列の各要素

N_TP = 15
N_FP = 1
N_FN = 2
N_TN = 10

 

混同行列

conf_MX = pd.DataFrame({"Positive":[N_TP,N_FN], "Negative":[N_FP,N_TN]},
    index=["Positive","Negative"])
print(conf_MX)

 

TP = [[1,1] for i in range(N_TP)]  
FP = [[1,0] for i in range(N_FP)]  
FN = [[0,1] for i in range(N_FN)] 
TN = [[0,0] for i in range(N_TN)]

 

df = pd.DataFrame(TP + FP + FN + TN, columns=["pred", "truth"])
print(df.head(5))

 

MCCを出して行きましょう!!!(一部、編集してください)

f:id:Takuma_AI:20210504142850p:plain

出力

print("MCC:" + str(mcc))

 

混同行列の結果

f:id:Takuma_AI:20210504092416p:plain

上記の数値だと、直感的にMCCも高くなりそうですよね。

 

マシューズ相関係数の結果

f:id:Takuma_AI:20210504092812p:plain

 


 

少し、混同行列の数字を変えてみましょう!!

 

こちらで計算↓

f:id:Takuma_AI:20210504095507p:plain

 

ちなみに感度は、非常に高いですよね。

MCCはどうでしょうか?

f:id:Takuma_AI:20210504095608p:plain

大分、下がりましたね。

 

感度が高くても、混同行列全体の分類能が悪くなればMCCは低下しますね。

感度の方が直感的ですが、MCCは分類能力は反映しそうです。

 

私の中では直感的ではないですが、保守的に考えてMCCが高いと、予測・分類精度が高いのかなという感じですね。

 

F値ですと、偏りがあった場合に、精度が高く見積もられたりすることがあります。

(例えば、感度は高いけど特異度が低い場合など)

 

医学的には、F値や感度・特異度の方が直感的でわかりやすいです。

 

MCCが高い場合は、ある意味安全なので、保守的な指標になりそうです。

(ちなみに、MCCは、ほぼピアソンの相関係数と同じです。)