用語「多クラス分類の混同行列」について説明。多クラス分類のタスク(問題)における「そのクラス数分の行項目と同数分の列項目で構成される分割表」を指す。
「混同行列(Confusion Matrix)とは?」では、二値分類のタスク(問題)における混同行列について説明したが、混同行列は多クラス分類のタスクでも使われることがある。
統計学/機械学習における多クラス分類の混同行列(Confusion matrix for multi-class classification)とは、多クラス分類のタスク(問題)に対する「そのクラス数分の行項目と同数分の列項目で構成される分割表」で、行項目に「正解値×各クラス」を、列項目に「予測値×各クラス」を取る(図1)。※場合によっては、行と列の項目が逆の場合もあり、どちらでもよい。
例えば3つのクラスであれば3行×3列で9セルの分割表となる。図1は、犬/猫/熊という架空の3クラス分類問題に対する正解値(真の値)と予測値から混同行列を作成した例である。なお、この例では記載していないが、各セルには件数を記載する。
多クラス分類の場合でも、二値分類の場合と同様に、TP/FN/FP/TN値を計算することが可能だ(※TP/FN/FP/TN値の意味は、「混同行列とは?」を参考にしてほしい)。ただし多クラス分類では、クラスごとにTP/FN/FP/TN値を計算する必要があり、対象のクラスを陽性/正例(Positive)として、それ以外のクラスを陰性/負例(Negative)として扱う。図1では、犬(対象のクラス)を陽性として、猫や熊(それ以外のクラス)を陰性として扱っている。
「クラスごと」なので、犬を陽性とするバージョンと同様に、猫を陽性とするバージョンと、熊を陽性とするバージョンの計3パターンを考える必要がある。つまり、クラスの数だけ「二値分類の混同行列」を作るのと同じ作業が必要になるというわけだ。
ちなみにscikit-learnには、二値分類の混同行列を作成するためのsklearn.metrics.confusion_matrix()関数と、多クラス分類の混同行列を作成するためのsklearn.metrics.multilabel_confusion_matrix()関数が用意されている。これらの関数では、行項目が「正解値×(陰性|陽性)」、列項目が「予測値×(陰性|陽性)」の4セルで出力される。「混同行列とは?」や本稿の説明とは、表の行項目や列項目の並びが異なるので注意してほしい。詳しくはリンク先の公式ドキュメントを参照してほしい。
Copyright© Digital Advantage Corp. All Rights Reserved.