機械学習のクラス分類精度を評価するために、混同行列 (Confusion matrix)が用いられます。
In the field of machine learning and specifically the problem of statistical classification, a confusion matrix, also known as an error matrix,[4] is a specific table layout that allows visualization of the performance of an algorithm, typically a supervised learning one (in unsupervised learning it is usually called a matching matrix).
何かを予測した場合の精度を評価するには、予測した結果と、実際の結果と比較します。
また、結果には、正しい結果と誤った結果があります。
混同行列 (Confusion matrix)では、2つの軸を設定します。
予実の軸:予測 or 実際
正誤の軸:正答 or 誤答
予実と正誤それぞれの状態をかけ合わせると、以下の4通りになります。
パターン1:正答と予測して、実際正答だった場合
パターン2:正答と予測して、実際誤答だった場合
パターン3:誤答と予測して、実際正答だった場合
パターン4:誤答と予測して、実際誤答だった場合
混同行列(Confusion matrix)では、それぞれのパターンを、以下のように表現しています。
パターン1:真陽性: TP (True-Positive)
パターン2:偽陽性: FP (False-Positive)
パターン3:偽陰性: FN (False-Negative)
パターン4:真陰性: TN (True-Negative)
それぞれの頭文字の意味は、以下の通りです。
T(True, 真):予測と実際が一致している状態
F(False, 偽):予測と実際が一致していない状態
P(Positive, 陽):正答が予測された状態
N(Negative, 陰):誤答が予測された状態
TP,FP,FN,TNそれぞれのパターンを表にすれば、以下のようになります。
縦軸:予測、横軸:実際
では、scikit-learnで混同行列 (Confusion matrix)を使ってみますと、以下のようなコマンドになります。
from sklearn.metrics import confusion_matrix pred_result = [1, 1, 1, 0]#予測の結果 true_result = [0, 1, 0, 1]#実際の結果 #予実とも1は、1個なのでTP:1 #予測1で実際0なのは、2個なのでFP:2 #予測0で実際1なのは、1個なのでFN:1 #予実とも0は、0個なのでTN:0 tn, fp, fn, tp = confusion_matrix(true_result, pred_result).ravel()#混同行列で解きほぐした結果を取得 (tp, fp, fn, tn)#正正,正誤,誤正,誤誤に順番を整理して表示
実行結果 (1, 2, 1, 0)
他のパラメータは以下に詳述されています。
sklearn.metrics.confusion_matrix — scikit-learn 0.19.1 documentation
sklearn.metrics.confusion_matrix(y_true, y_pred, labels=None, sample_weight=None)
なお、
上記は、正答/誤答といった二値分類でしたが、多値分類でも可能です。
また、縦軸:予測、横軸:実際を逆にして、縦軸:実際、横軸:予測にする表現方法もあります。
それでは、
この混同行列の値TP,FP,FN,TNを使った指標については、後日まとめていきたいと思います。