Precision and Recall

MikuHatsune2016-09-05

機械学習の分野で分類性能の評価に適合率と再現率というものがある。
医学分野での分類には、たいてい病気/非病気のラベルの分類にはReceiver Operating Characteristic (ROC) 曲線と曲線下面積AUC を使うが、情報系ではPrecision-Recall curve (PRC) とF1 値で評価されていることが多い。
ググればよく書いてあることだが、例えばラベルの片方、病気もしくは非病気が1件しかなくて、もう片方のラベルが1000とか十分あるときにどう評価するか、ということが問題になる。
 
RPC のほうがいいんでない? という話。PLoS One. 2015 Mar 4;10(3):e0118432. ROC とPRC の対応が図で出ていて非常にわかりやすい。
同じグループがprecrec (Bioinformatics. 2016 Sep 1. pii: btw570.) (vignettes) というパッケージを作っているのでやってみる。
ggplot を使えば信頼区間とかそういうのをいろいろやれる。
S3 オブジェクトにroc とprc がはいっているのでggplot 使わなくてもゴリ押しはできる。

library(precrec)
# Load a test dataset
data(P10N10)

# Calculate ROC and Precision-Recall curves
sscurves <- evalmod(scores = P10N10$scores, labels = P10N10$labels)

dev.new(width=14)
plot(sscurves)