でーたさいえんすって何それ食えるの?

JuliaとかRとかPythonとかと戯れていたい

ROC曲線とPR曲線を直観的に把握するウェブアプリをつくった

機械学習で二値分類タスクのモデル評価時によく使うROC曲線と、特に不均衡データの評価時に使うPR曲線、そして混同行列
これらは元をたどれば予測とその結果の正誤について別々な表現方法で見ているので、相互に関係しあった評価方法です

しかし、これらを横串に理解でいるリソースが見当たらないので、自分でつくってみたので調節部分の補足説明を残しておきます。

ウェブアプリのURLはこちら https://masato.shinyapps.io/ROC_exp/

補足説明の画像はこちら f:id:masato_613:20201101000421p:plain

補足:最適閾値の計算方法

ROC曲線を用いた分析については次の論文をとりあえず読んでおくと良い。

[PDF] Basic principles of ROC analysis. | Semantic Scholar

もしTP, TN, FP, FNそれぞれのコストがわかっているのであれば、The foundations of Cost-Sensitive Learningで説明あれている通り
混同行列の各要素とそれに対応するコストの掛け算の総和を最小化すれば良い。
しかし、実際に予測結果を活用する上では
1. 施策を実施する上でそこまで決まっていない
2. コストが複雑すぎてすぐには把握できない
といった理由で、とりあえず実行効率が最も良い閾値を置いてほしいというケースがある。

そういった場合Youden-index(Youden's J statistics)を用いて設定するのがまずは手っ取り早い。 この指標のコンセプトは単純で、ROC曲線で見たときに曲線とAUC=0.5の直線との距離が最大となるポイントを探せばよく、TPRとFPRの差を最大とする値閾値にとることになる。 PR曲線で見るとPR曲線の最の最も高い部分で閾値を取るのと同義となる。

一方、ROC曲線の左上(0, 1)のポイントから最も距離が最も短くなるポイントを探す方法も採ることができる。 これは実質的にYouden-indexとほぼ同じ値をとることになるので説明の仕方次第となる。

他にも目的に応じて取り得る指標はいろいろあり
* LR+:Positive likelihood ratio (TPR/FPR)
* LR-:Negative likelihood ratio (FNR/TNR)
* DOR:Diagnostic Odds Ratio (LR+/LR-)
といった指標で決めることもできる。