- 機械学習モデルの精度の評価方法について理解したい方
- ROC 曲線、AUC の用語は知っているが深く理解できていない方
こんにちは、機械学習講師の竹内です。皆さんは機械学習で分類モデルを作成した際、モデルの精度をどのように評価すべきかご存知でしょうか。
モデルを評価する際に使用されるものを評価指標と呼び、分類モデルの場合は正解率 (Accuracy) や再現率 (Recall) 等、様々な評価指標があります。
これらの指標は便利ですが、実は「閾値(いきち)」をどこに置くかで値が大きく変わってしまうという、悩ましい側面も持っています。
「閾値を変えるたびに、どのモデルが一番良いのか判断に迷う…」 そんな悩みを解決してくれるのが、今回ご紹介するROC曲線とAUCです。
これらは特定の閾値に依存せず、モデルが持つ「分類能力そのもの」を客観的に評価できるため、「複数のモデルのうち、どちらが本質的に優れているか」を判断する際によく使用されます。
この記事では、ROC曲線とAUCとは一体何なのか、そしてどのように計算され、どう解釈すればよいのかを、基礎から分かりやすく解説していきます。
「プログラミングの基礎」や「分類モデルの評価指標」を専門家から直接、体系的に学びたいという方は、未経験からプロを目指せるキカガクの長期コースがおすすめです。
真陽性率 (TPR) と偽陽性率 (FPR)
本題に入る前に、なぜ閾値の存在が悩ましいのかを簡単におさらいします。 モデルは通常、「陽性である確率」を0から1の間で算出します。例えば、あるメールが迷惑メールである確率を「0.8」と予測したとします。
- 閾値を0.5に設定 → 0.8は0.5より大きいので「迷惑メール」と判定
- 閾値を0.9に設定 → 0.8は0.9より小さいので「通常メール」と判定
このように、閾値の設定次第でモデルの予測結果は変わってしまい、それに伴って適合率や再現率の値も大きく変動します。ビジネスの要求によって最適な閾値は変わるため、「どの閾値で見ても、そもそもAのモデルはBのモデルより優秀だ」というような、モデル本来のポテンシャルを評価する指標が必要になるのです。
では次にROC 曲線の概要の前提知識として真陽性率 (TPR : True Positive Rate) と偽陽性率 (FPR : False Positive Rate) についてお伝えします。
TPR とは全ての Positive のうち、実際に Positive だったものを正しく Positive と判定できた割合です。そして FPR は全ての Negative のうち、実際には Negative だったが間違えて Positive と判定した割合です。ここで Positive と Negative の定義を行っていないため何を伝えたいのかわからないと思います。
そこでねじを生産する工場の具体例を用いて、TPR と FPR について理解を深めていきましょう。生産したねじが異常品か正常品かを分類する機械学習モデルを作成したとします。

このモデルを使用して 1000 個のねじを異常品、正常品に分類する作業を行いました。その結果以下のような分類を行いました。

上図の表を混同行列と呼びます。この時、正常品と異常品のそれぞれに Positive と Negative のラベルを付けます。今回は異常品を Positive、正常品を Negative とします。

今回は異常品を Positive、正常品を Negative と設定しましたが、もちろん異常品を Negative、正常品を Positive と設定しても問題ありません。
このように設定するという厳密なルールはありませんが、一般的には検出したい方(今回であれば異常品はなるべく検知したいので異常品)を Positive に設定することが多いです。
この時、全異常品のうち、実際に異常品だったものを正しく異常品と判定できた割合(40%)が TPR、そして全正常品のうち、実際は正常品だったが間違えて異常品と判定した割合(約 5%)が FPR になります。計算すると以下になります。

最初にお伝えした定義を再掲しておきます。
TPR とは全ての Positive のうち、実際に Postitive だったものを正しく Positive と判定できた割合です。
FPR は全ての Negative のうち、実際には Negative だったが間違えて Positive と判定した割合です。
上記の定義が理解できたのではないでしょうか。それではこの TPR と FPR を押さえた上で、ROC 曲線と AUC を理解していきましょう。
ROC 曲線とは
ROC 曲線とは以下の図のような曲線です。

各軸は TPR、FPR を表しており、Positive と Negative に分類する際の閾値を変更した際の TPR、FPR の値をプロットしています。こちらも定義だけではイメージが掴みにくいと思いますので、具体例を使用してお伝えします。
ROC 曲線の理解を深めるため今回も異常品検知の例(ねじを生産する工場)を使用します。正常品、異常品を分類するモデルを使用して 1000 個のねじの分類を行った結果、以下の表のようなデータが得られました。(異常品が Positive、正常品が Negative です。)

この結果をヒストグラムで表すと以下になりました。

実際に異常品だったものは赤色、実際に正常品だったものは青色で表しています。この時、Positive(異常品)である確率が 0.5 以上かそれ未満で Positive と Negative を分類すると仮定すると以下の図になります。

上図で示すように正しく Positive と分類できているところと、間違って Positive と分類しているところがあります。それでは Positive(異常品)である確率が 0.8 以上かそれ未満で Positive と Negative を分類するように変更すると以下の図になります。

ここで、閾値を変更すると TPR と FPR の値が変わっていることがわかります。(閾値を 0.8 に設定した際は FPR=0 になっています。)ここで定義を再掲します。
Positive と Negative に分類する際の閾値を変更した際の TPR、FPR の値をプロットしています。
上記の定義を実際に行うと以下のようになります。

そしてプロットされた点を直線で結んだものが ROC 曲線です。

この ROC 曲線が理解できれば AUC は非常にわかりやすいです。
AUC とは
AUC は Area Under the Curve の略であり、ROC 曲線の下部分の面積のことです。

この AUC がなぜ分類モデルの評価として有効なのかを考えてみます。例えば以下のように分類できていたとします。

かなりきれいに分類できています。上図の結果を ROC 曲線で表すと以下のようになります。

この時の AUC は 1 になります。それでは以下のような分類の場合はどうでしょうか。

すべての確率に均等にサンプルが存在しているので適切な分類ができていません。上図の結果を ROC 曲線で表すと以下のようになります。

この時の AUC は 0.5 になります。つまり Positive と Negative をきれいに分類できていれば AUC は 1 に近づき、ランダムな分類をしていると AUC は 0.5 に近づくことがわかります。
このことから AUC が 1 に近いほど、優れた分類モデルであるといえます。
この記事を通して、ROC曲線とAUCがモデルの真の実力を評価するための強力なツールであることをご理解いただけたかと思います。
「でも、理論は分かったけど、実際に使ってみないと身につきそうにない…」
そう感じた方も多いのではないでしょうか。
キカガクの長期コースでは、学習の集大成として、オリジナルのAIアプリ開発や、実践的なデータ分析レポートの作成(受講生の成果物一覧)に挑戦します。
学んだ知識を、自分の手で「使えるスキル」に変える経験をしてみませんか?まずは無料説明会で、あなたがどんなものを作れるようになるのか、話を聞きに来てください。
最後に:定義のまとめ
最後に本記事で紹介した用語とその定義をまとめておきます。
閾値を変更し、各閾値時の TPR、FPR をプロットしたグラフ。
この他にも機械学習のモデルに使用される評価指標は様々ありますので、好評であれば他の指標もまとめていきたいと思います!
最速で学びたい方:キカガクの長期コースがおすすめ

キカガクの長期コースはプログラミング経験ゼロの初学者が最先端技術を使いこなすAIエンジニアになるためのサポート体制が整っています!
実際に未経験からの転職・キャリアアップに続々と成功中です
まずは無料説明会で、キカガクのサポート体制を確認しにきてください!
- 国も企業も育成に力を入れている先端 IT 人材とは
- キカガクの研修実績
- 長期コースでの学び方、できるようになること
- 料金・給付金について
- 質疑応答
まずは無料で学びたい方: Python&機械学習入門コースがおすすめ

AI・機械学習を学び始めるならまずはここから!経産省の Web サイトでも紹介されているわかりやすいと評判の Python&機械学習入門コースが無料で受けられます!
さらにステップアップした脱ブラックボックスコースや、IT パスポートをはじめとした資格取得を目指すコースもなんと無料です!
キカガクブログ 
