Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
混同行列/ROC曲線/AUCを理解する
Search
Hachimada
February 05, 2024
0
100
混同行列/ROC曲線/AUCを理解する
混同行列/ROC曲線/AUCについてボトムアップで解説します。
Hachimada
February 05, 2024
Tweet
Share
More Decks by Hachimada
See All by Hachimada
Forward Propagation in Neural Networks
hachimada
0
75
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
Typedesign – Prime Four
hannesfritz
40
2.4k
Become a Pro
speakerdeck
PRO
25
5k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
Done Done
chrislema
181
16k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
Happy Clients
brianwarren
98
6.7k
Transcript
混同⾏列/ROC曲線/AUC とは結局何なのか
そもそもなんなのか
そもそもなんなのか 学習した分類モデルの性能を評価する際に⽤いるもの
そもそもなんなのか 学習した分類モデルの性能を評価する際に⽤いるもの 2クラス分類でも多クラス分類でも使えるが、 まずは2クラス分類で考える
【前提】 • 2クラス分類モデルは、0か1かの確率を出⼒ • クラス1の確率p、クラス0の確率1-pを出⼒ • 閾値αを決めて、p > α の時、分類結果を1とし、それ以外の場合は0とする
【前提】 • 2クラス分類モデルは、0か1かの確率を出⼒ • クラス1の確率p、クラス0の確率1-pを出⼒ • 閾値αを決めて、p > α の時、分類結果を1とし、それ以外の場合は0とする
モデルの出⼒(分類結果)と実際の値とを⽐較して、性能を測りたい
【前提】 • 2クラス分類モデルは、0か1かの確率を出⼒ • クラス1の確率p、クラス0の確率1-pを出⼒ • 閾値αを決めて、p > α の時、分類結果を1とし、それ以外の場合は0とする
モデルの出⼒(分類結果)と実際の値とを⽐較して、性能を測りたい モデルの出⼒と実際の値の組み合わせは4パターン
TP FP FN TN 1 0 1 0 実際 判
断 4パターン 実際1であるものを1と出⼒ →True Positive 実際0であるものを1と出⼒ →False Positive 実際0であるものを0と出⼒ →True Negative 実際1であるものを0と出⼒ →False Negative 出 ⼒
TP FP FN TN 1 0 1 0 実際 判
断 実際1であるものを1と出⼒ →True Positive 実際0であるものを1と出⼒ →False Positive 実際0であるものを0と出⼒ →True Negative 実際1であるものを0と出⼒ →False Negative 当たっている 間違っている 間違っている 当たっている 出 ⼒
TP FP FN TN 1 0 1 0 実際 判
断 これが混同⾏列 出 ⼒
TP FP FN TN 1 0 1 0 実際 判
断 TP, FP, FN, TN を使って⾊々な評価指標を作れる 出 ⼒
どんな評価指標がある?
【例】 画像に写っている動物を「1:⽝」「0:⽝以外」 で分類するモデルに、100枚の画像を分類させてみたとする 30 10 15 45 1 0 1
0 実際 予 測 実際は「⽝」 45枚 実際は「⽝以外」 55枚 予測は「⽝以外」だった 60枚 予測は「⽝」だった 40枚 出 ⼒
正解率 30 10 15 45 1 0 1 0 実際
予 測 全ての判断の数 当たってる判断の数 正解率 = 100 30+45 = = 0.75 TP+FP+FN+FP TP+TN = TP FP FN TN 1 0 1 0 実際 予 測
「⽝以外」の予測は外れてもいいが、 「⽝」の予測は確実に当たって欲しい場合 (⽝の画像がたくさん欲しい時とか) 正解率では不⼗分! 30 10 15 45 1 0
1 0 実際 予 測 ⽝と分類したもののうち ほんとに⽝である割合を⾒るべき 出 ⼒
評価指標は状況に応じて使い分けが必要
TP FP FN TN 1 0 1 0 実際 出
⼒ TP FP FN TN 1 0 1 0 実際 出 ⼒ TP FP FN TN 1 0 1 0 実際 出 ⼒ TP FP FN TN 1 0 1 0 実際 出 ⼒ TP FP FN TN 1 0 1 0 実際 出 ⼒ TP FP FN TN 1 0 1 0 実際 出 ⼒ TP FP FN TN 1 0 1 0 実際 出 ⼒ TP FP FN TN 1 0 1 0 実際 出 ⼒ ・0であるものを1と出⼒した割合 ・ False Positive Rate ・ ・偽陽性率 ・0と出⼒したのもが0である割合 ・ ・ ・陰性適中率 ・ 0であるものを0と出⼒した割合 ・True Negative Rate ・特異度, Specificity ・真陰性率 ・1と出⼒したものが1である割合 ・ ・適合率,精度,Precision ・陽性適中率 ・1であるものを1と出⼒した割合 ・True Positive Rate ・再現率, Recall ・真陽性率 ど う 判 断 さ れ る か 実 際 ど う で あ る か ・ 1であるものを0と出⼒した割合 ・False Negative Rate ・ ・偽陰性率 ・1と出⼒したのもが0である割合 ・(特に名前はなさそう) ・0と出⼒したのもが1である割合 ・(特に名前はなさそう) どんな評価指標がありうるか(⼀例)
モデルの出⼒する確率に対して、閾値を決めて、0か1かを決めていた ↓ 閾値αを変えると、 TP, FP, FN, TN も変わる 【前提(再掲)】 •
2クラス分類モデルは、 0か1かの確率を出⼒ • クラス1の確率p、クラス0の確率1-pを出⼒ • 閾値αを決めて、p > α の時、分類結果を1とし、それ以外の場合は0とする
【⽝画像分類では】 • 分類モデルは、 「⽝」か「⽝以外」かの確率を出⼒ • 「⽝」の確率p、「⽝以外」の確率1-pを出⼒ • 閾値αを決めて、p > α
の時、分類結果を「⽝」とし、それ以外の場合は「⽝以外」とする 【⼀般的には】 「⽝の画像」 を⽝を分類する割合(TPR)は⾼い⽅がいい 「⽝以外の画像」を⽝と分類する割合(FPR)は低い⽅がいい TP FP FN TN 1 0 1 0 実際 出 ⼒ TP FP FN TN 1 0 1 0 実際 予 測 TPR = TP/TP+FN FPR = FP/FP+TN
【⽝画像分類では】 • 分類モデルは、 「⽝」か「⽝以外」かの確率を出⼒ • 「⽝」の確率p、「⽝以外」の確率1-pを出⼒ • 閾値αを決めて、p > α
の時、分類結果を「⽝」とし、それ以外の場合は「⽝以外」とする 【閾値を変えると】 α=0としてしまえば(モデルの出⼒が何であろうと全部「⽝」にしちゃう) TPRは100%になる(嬉しい)が、FPRも100%になる(嬉しくない) 【⼀般的には】 「⽝の画像」 を⽝を分類する割合(TPR)は⾼い⽅がいい 「⽝以外の画像」を⽝と分類する割合(FPR)は低い⽅がいい TP FP FN TN 1 0 1 0 実際 出 ⼒ TP FP FN TN 1 0 1 0 実際 予 測 TPR = TP/TP+FN FPR = FP/FP+TN
【⽝画像分類では】 • 分類モデルは、 「⽝」か「⽝以外」かの確率を出⼒ • 「⽝」の確率p、「⽝以外」の確率1-pを出⼒ • 閾値αを決めて、p > α
の時、分類結果を「⽝」とし、それ以外の場合は「⽝以外」とする 【閾値を変えると】 α=0としてしまえば(モデルの出⼒が何であろうと全部「⽝」にしちゃう) TPRは100%になる(嬉しい)が、FPRも100%になる(嬉しくない) α=1とすれば(モデルの出⼒が何であろうと全部「⽝以外」にしちゃう) FPRは0%になる(嬉しい)が、 TPRが0%になる(嬉しくない) 【⼀般的には】 「⽝の画像」 を⽝を分類する割合(TPR)は⾼い⽅がいい 「⽝以外の画像」を⽝と分類する割合(FPR)は低い⽅がいい TP FP FN TN 1 0 1 0 実際 出 ⼒ TP FP FN TN 1 0 1 0 実際 予 測 TPR = TP/TP+FN FPR = FP/FP+TN
【⽝画像分類では】 • 分類モデルは、 「⽝」か「⽝以外」かの確率を出⼒ • 「⽝」の確率p、「⽝以外」の確率1-pを出⼒ • 閾値αを決めて、p > α
の時、分類結果を「⽝」とし、それ以外の場合は「⽝以外」とする 【閾値を変えると】 α=0としてしまえば(モデルの出⼒が何であろうと全部「⽝」にしちゃう) TPRは100%になる(嬉しい)が、FPRも100%になる(嬉しくない) α=1とすれば(モデルの出⼒が何であろうと全部「⽝以外」にしちゃう) FPRは0%になる(嬉しい)が、 TPRが0%になる(嬉しくない) 【⼀般的には】 「⽝の画像」 を⽝を分類する割合(TPR)は⾼い⽅がいい 「⽝以外の画像」を⽝と分類する割合(FPR)は低い⽅がいい TP FP FN TN 1 0 1 0 実際 出 ⼒ TP FP FN TN 1 0 1 0 実際 予 測 TPR = TP/TP+FN FPR = FP/FP+TN 様々な閾値も加味してモデルを評価したい
そこで使えるのが、ROC曲線とAUC
そこで使えるのが、ROC曲線とAUC 学習の完了したモデルの出⼒に対して閾値αを変更してTPRとFPRを計算する → αによってTPRとFPRがどう変化するかを確認するのがROC曲線
TPR (⾼い⽅が良い) FPR (低い⽅が良い) αを変化させてTPRとFPRの変化を⾒てみる
TPR (⾼い⽅が良い) FPR (低い⽅が良い) α=0 → TPR=1, FPR=1 α=0.0 αを変化させてTPRとFPRの変化を⾒てみる
TPR (⾼い⽅が良い) FPR (低い⽅が良い) α=0 → TPR=1, FPR=1 α=0.3 →
TPR=0.95, FPR=0.7 α=0.0 α=0.3 0.7 0.95 αを変化させてTPRとFPRの変化を⾒てみる
TPR (⾼い⽅が良い) FPR (低い⽅が良い) α=0 → TPR=1, FPR=1 α=0.3 →
TPR=0.95, FPR=0.7 α=0.4 → TPR=0.9, FPR=0.4 α=0.0 α=0.3 α=0.4 0.4 0.9 αを変化させてTPRとFPRの変化を⾒てみる
TPR (⾼い⽅が良い) FPR (低い⽅が良い) α=0 → TPR=1, FPR=1 α=0.3 →
TPR=0.95, FPR=0.7 α=0.4 → TPR=0.9, FPR=0.4 α=0.0 α=0.3 α=0.4 0.4 0.9 ⼀般的なグラフでは横軸と⽴って軸の値 が決まってから点がプロットできるが、 ROC曲線では、点がプロットされてから 横軸縦軸の値が決まると考えた⽅がわか りやすいかもしれない αを変化させてTPRとFPRの変化を⾒てみる
TPR (⾼い⽅が良い) FPR (低い⽅が良い) α=0 → TPR=1, FPR=1 α=0.3 →
TPR=0.95, FPR=0.7 α=0.4 → TPR=9, FPR=0.4 α=0.5 → TPR=0.85, FPR=0.3 α=0.6 → TPR=0.6, FPR=0.2 α=0.8 → TPR=0.3, FPR=0.1 α=1.0 → TPR=0, FPR=1 α=0.0 α=0.3 α=0.4 α=0.5 α=0.6 α=0.8 α=1.0 αを変化させてTPRとFPRの変化を⾒てみる
TPR (⾼い⽅が良い) FPR (低い⽅が良い) これがROC曲線 ROC (Receiver operating Characteristic) 直訳すると受信受信機動作特性
ROC曲線は、第⼆次世界⼤戦中の1941年から、 戦場で敵の物体を探知するために電気技師とレーダー 技師によって開発されたのが最初で、これがその名前 「受信機動作特性」の由来となっている。 (Wikipediaより)
TPR (⾼い⽅が良い) FPR (低い⽅が良い) ROC曲線の下の⾯積がAUC(Area Under Curve)
完璧な分類ができるモデルのROC曲線 TPR (⾼い⽅が良い) FPR (低い⽅が良い) AUC = 1
全く逆の分類をしてしまうモデルのROC曲線 FPR (低い⽅が良い) TPR (⾼い⽅が良い) AUC = 0
全くデタラメな(ランダムな)分類をしてしまうモデルのROC曲線 FPR (低い⽅が良い) TPR (⾼い⽅が良い) AUC = 0.5
現実のROC曲線 FPR (低い⽅が良い) TPR (⾼い⽅が良い) いくつかのモデルの中で、AUCが1に近いものを選択し、 ROC曲線を⾒るなどして閾値を決定する 閾値をどんな値にするかは TPRとFPRのどちらを重視するのかなどのビジネス要件にも左右される また、どうしても許容できない場合は、
モデルのアーキテクチャや学習データそのものの⾒直しも必要になる
多クラス分類の場合はどうするか
多クラス分類の場合は混同⾏列が⼤きくなる クラス1 クラス2 クラス3 クラス4 クラス5 クラス1 クラス2 クラス3 クラス4
クラス5
どのクラスを1とするのかを決め、それ以外は0とする クラス1 クラス2 クラス3 クラス4 クラス5 クラス1 クラス2 クラス3 クラス4
クラス5 1 0 0 0 0 1 0 0 0 0
あとは2クラス分類の時と同じ クラス1 クラス2 クラス3 クラス4 クラス5 クラス1 クラス2 クラス3 クラス4
クラス5 1 0 0 0 0 1 0 0 0 0 FP TN TP FN