pythonコード プログラミング系 データサイエンス 非エンジニア向け

混同行列(Confusion Matrix)を「混乱」しないように解説します

こんにちは、TAKです。
今回は、機械学習やデータサイエンスの分野で出てくる「混同行列」について解説していきます。
その名の通り、混乱しやすいマトリックスになっているので、出来るだけわかりやすくシンプルに解説していきたいと思います。

【こんな人に読んで欲しい記事です】
1. 「混同行列(Confusion Matrix)」について学びたい方
2. データサイエンスやAIの勉強をしている方
2020年の2月にJDLAが主催するE資格を受験したのですが、その時にも機械学習範囲から「混同行列」が実際に出題されました。それだけメジャー論点とも言えるので、同じくE資格の受験を目指している人や、データサイエンスの勉強をしている方の参考になれば幸いです。
【E資格 2020#1】実際に出題された内容を振り返ります(過去問対策にどうぞ)
AIエンジニアを目指すため、キャリアアップのために「E資格」を受けてみようと思っている方向けに、2020年#1のE資格を実際に受験した僕の受験後記です。実際にどのような論点が出題されたかを記憶ベースではありますが紹介しているので、これから受

混同行列の概要

混同行列の目的

まずは、混同行列の目的を確認しておきます。
混同行列が使われる場面と言い換えてもいいですが、「モデルの性能評価」をする段階で使われます。

■ モデリングフェーズ:ビッグデータをもとに、モデルにデータを学習させていく段階
■ スコアリングフェーズ:構築したモデルの汎化性能(未知データへの対応力)を評価する段階(←ココ)
そして、解きたいタスクは「二値分類」です。
具体的な例はこの後紹介していきますが、二値分類タスクの場面で評価指標の一つとして用いられるのが「混同行列」と理解してもらえればOKです。
混同行列内の「4象限の意味」

では実際に混同行列の中身についてみていきます。
最終的には、下記表を自分で書けるくらいに理解しておくことをオススメします。
この表は、僕がE資格受験前にアウトプット兼ねてまとめた表なのですが、表内の用語を確認していきます。

まず、そもそもとなる「表の見方」なのですが、予測クラスのPositiveとNegativeに着目してください。
これは、構築したモデルがPositiveを予想したか、Negativeを予想したかにわけられます。
その後、予測したクラスが実際のクラスと一致しているかを確認するために、実際クラスを追加します。
これによって、マトリックス内には4つの象限が存在することになります。

4つの各象限の意味をざっくりとまとめると下記になります。

①左上の象限(True Positive|真陽性)
モデルが「Positive」と予想して、実際に「Positive」だった場合
②左下の象限(False Positive|偽陽性)
モデルが「Positive」と予想したが、実際には「Negative」だった場合
③右上の象限(False Negative|偽陰性)
モデルが「Negative」と予想したが、実際には「Positive」だった場合
④右下の象限(True Negative|真陰性)
モデルが「Negative」と予想して、実際に「Negative」だった場合
青色で囲っている部分は、モデルが正解だったことを意味します。
そのため、「真(True)」が付いているのです。
赤色で囲っている部分は、モデルが不正解だったことを意味します。
そのため、「偽(False)」が付いているのです。
この段階で「なるほど、わかった!」となった方は、イメージが付いていると思います。
「まだ今一つしっくりこない」という方は、最後まで読んでもらった上で、もう一度上記部分を読んで理解出来るようにしてみてください。下記「噛み砕いて表現」でざっくりとした具体例をあげていますので、イメージがつくようになるはずです。
混同行列で使われる「4つの指標」

混同行列では「4象限」の理解を前提として、さらに「4つの指標」に展開されます。
(スクロールしなくていいように再掲します。)

その指標とは、「正解率(Accuracy)」「適合率(Precision)」「再現率(Recall)」「F値」の4つです。

各指標の求め方は上記図の通りなのですが、4指標の意味をざっくりまとめると下記になります。

① 正解率(Accuracy)
予測クラス総数のうち、正しく予想したクラスの割合
② 適合率(Precision)
Positiveと予想したクラスのうち、実際にPositiveだった割合
③ 再現率(Recall)
実際のPositiveクラスのうち、正しくPositiveと予想出来た割合
④ F値(F-measure)
適合率(PRE)と再現率(REC)の調和平均
ここまでが理解出来ていれば、「混同行列」の基本的な理解はOKと言えます。
次からは、具体例を用いてよりイメージしやすいように解説していきます。

混同行列を噛み砕いて表現

以上が「混同行列」の基本的な解説になります。
「どのような時に使われるのか」「マトリックス内の4象限の意味は何か」「そこから展開される4指標は何か」を理解出来れば、この論点は十分理解出来ていると思います。

ただ、しばらく時間が経つと忘れてしまうので、最後に具体例と僕の覚え方を紹介しておきます。
噛み砕いた表現を用いて説明するので、その点ご理解ください。

■ 具体例:日本メーカーから「不良品予測」を依頼された場合
・サンプルは10,000個と仮定
・構築モデルは、サンプル10,000個のうち不良品は2個と予測した。
・実際には、サンプル10,000個のうち不良品は5個しかなかった。
日本の製造業は「欠陥ゼロ」を目指しているのが特徴なので、このような例はよくあります。
ここでポイントとなるのが、「正解率」を使ってはいけないという点です。
なぜなら、この例だと正解率は99.97%となり、良いモデルと評価されてしまうためです。
不良品と予測した2個は正しいので、適合率は100%となってしまいます。
実際の不良品5個のうち、正しく予想出来たのは2個なので、再現率は40%となりますね。
ここからわかるのは、一律に正解率を用いるのではなく、目的に合わせた指標を選択することが大切ということです。
そして、適合率(PRE)と再現率(REC)については僕は下記のように解釈しています。
■ 適合率(PRE)・・・構築モデルの「ポンコツ率」
■ 再現率(REC)・・・構築モデルの「インシデント回避率」
適合率は、Positiveと予想したうち、どの程度正しかったかを見る指標なので、この数値が低ければ低い程、モデルがポンコツと言えますよね。不良品予測以外にも、「医者の診断」がわかりやすい例でよく使うのですが、「100名に対して、風邪と診断(陽性判断)したにもかかわらず、実際風邪にかかってたのが10名だった」場合、適合率は10%となります。つまりモデル(医者)がポンコツということです。
再現率は、実際にPositiveクラスのうち、いくつ正しく予想出来てたかを見る指標なので、この数値が低ければ低い程、ヤバイ状況を起こしてしまいます。不良品予測の例であれば、「不良品でないことを信じて製品化したのに、実際は不良品でクレームが入った」というインシデント(事故)に繋がりかねません。医者の例であれば、「病気でないと診断したのに、実際は病気にかかっていた」ことになり、これも場合によっては一大事に繋がりますよね。
以上は一例ではありますが、自分なりの理解を促進してくれる具体例を持っていると、いざという時にイメージがしやすくなるので、良ければ参考にしてみてください。

まとめ

今回は「混同行列」について解説してみました。
記事を書いている間も思いましたが、本当に混乱しそうな論点ですよね(笑)

また別の機会に、混同行列の指標を使ったコードも紹介していきたいと思います。
みなさんの理解の助けになれば幸いです。

では今回はこのへんで。