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
110
混同行列/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
76
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
88
5.7k
A Tale of Four Properties
chriscoyier
157
23k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Building an army of robots
kneath
302
44k
What's in a price? How to price your products and services
michaelherold
244
12k
Writing Fast Ruby
sferik
628
61k
Documentation Writing (for coders)
carmenintech
67
4.5k
Designing for Performance
lara
604
68k
How to Think Like a Performance Engineer
csswizardry
22
1.2k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
The Cult of Friendly URLs
andyhume
78
6.1k
A Philosophy of Restraint
colly
203
16k
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