ROC曲線下の精度と面積


16

診断システムのROC曲線を作成しました。曲線の下の面積は、AUC = 0.89とノンパラメトリックに推定されました。最適なしきい値設定(ポイント(0、1)に最も近いポイント)で精度を計算しようとすると、診断システムの精度は0.8になりました。これはAUCよりも低い値です。最適なしきい値とはかけ離れた別のしきい値設定で精度を確認すると、精度は0.92になりました。最適なしきい値設定での診断システムの精度を、別のしきい値での精度よりも低く、曲線の下の領域よりも低くすることは可能ですか?添付の写真をご覧ください。

ここに画像の説明を入力してください


1
分析に含まれるサンプルの数を教えてください。かなり不均衡だったに違いない。また、AUCと精度はそのように変換されません(精度がAUCより低いと言う場合)。
Firebug

1
269469はマイナスで、37731はプラスです。これは、以下の回答(クラスの不均衡)による問題です。
アリスルタン

問題はそれ自体がクラスの不均衡ではなく、評価尺度の選択であることに留意してください。全体として、このシナリオではがより合理的であるか、バランスの取れた精度を実装できます。AUC
Firebug

最後に、答えが質問に答えたと感じたら、答えを「受け入れる」ことを検討してください(緑色のチェックマーク)。これは必須ではありませんが、回答した人やサイトの組織(あなたがそれを行うまで質問は未回答としてカウントされます)、およびおそらく同じ質問を将来行う人を支援します。
Firebug

回答:


8

それは確かに可能です。重要なことは、クラスの不均衡が精度に大きく影響することを覚えておくことです。たとえば、あなたの場合、FPR()は0に近く、TPR(=TP=FPFP+TN)は0.5で、精度(=TP+TNTPTP+FN)はまだ非常に高いです。=TP+TNTP+FN+FP+TN

別の言い方をすれば、より多くの負のサンプルがあるため、分類子が常に0を予測する場合、FPRとTPRが0に近い場合でも、高い精度が得られます。

あなたが呼び出す最適なしきい値の設定(ポイント(0、1)に最も近い点)は、最適なしきい値の多くの定義のひとつである:それは必ずしも正確さを最適化しません。

ここに画像の説明を入力してください


10

さて、関係覚え(偽陽性率)、T P R(真の陽性率)およびA C C(精度)。FPRTPRACC

TPR=真のポジティブ陽性の場合

FPR=偽陽性負の場合

ACC=TPR陽性の場合+1FPR負の場合陽性の場合+負の場合

ACCTPRFPR

ACC=TPR+1FPR2

NN+

ACCNN+1FPR
ACCFPR

この例を参照してください。負の数は正の数の1000:1を上回っています。

data = c(rnorm(10L), rnorm(10000L)+1)
lab = c(rep(1, 10L), rep(-1, 10000L))
plot(data, lab, col = lab + 3)
tresh = c(-10, data[lab == 1], 10)
do.call(function(x) abline(v = x, col = "gray"), list(tresh))

pred = lapply(tresh, function (x) ifelse(data <= x, 1, -1))
res = data.frame(
  acc = sapply(pred, function(x) sum(x == lab)/length(lab)),
  tpr = sapply(pred, function(x) sum(lab == x & x == 1)/sum(lab == 1)),
  fpr = sapply(pred, function(x) sum(lab != x & x == 1)/sum(lab != 1))
)

res[order(res$acc),]

#> res[order(res$acc),]
#           acc tpr    fpr
#12 0.000999001 1.0 1.0000
#11 0.189110889 1.0 0.8117
#9  0.500099900 0.9 0.5003
#2  0.757742258 0.8 0.2423
#5  0.763136863 0.7 0.2368
#4  0.792007992 0.6 0.2078
#10 0.807292707 0.5 0.1924
#3  0.884215784 0.4 0.1153
#7  0.890709291 0.3 0.1087
#6  0.903096903 0.2 0.0962
#8  0.971428571 0.1 0.0277
#1  0.999000999 0.0 0.0000

fprが0 accが最大の場合を参照してください。

そして、ここにROCがあり、精度が注釈されています。

plot(sort(res$fpr), sort(res$tpr), type = "S", ylab = "TPR", xlab = "FPR")
text(sort(res$fpr), sort(res$tpr), pos = 4L, lab = round(res$acc[order(res$fpr)], 3L))
abline(a = 0, b = 1)
abline(a = 1, b = -1)

ここに画像の説明を入力してください


AうんC

1-sum(res$fpr[-12]*0.1)
#[1] 0.74608

一番下の行は、偽のモデル(tprこの例では= 0)になるような方法で精度を最適化できることです。これは、精度が良い指標ではないため、結果の二分法は意思決定者に任されるべきです。

最適なしきい値は TPR=1FPR これは、精度が最適でなくても、両方のエラーの重みが等しいためです。

不均衡なクラスがある場合、精度の最適化は簡単な場合があります(たとえば、全員を多数派クラスとして予測する)。


もう1つ、ほとんど翻訳できない AうんCそのような精度推定値への測定。これらの質問を参照してください。

そして何よりも重要なのは、なぜより正確な分類器よりも精度の低い分類器の方がAUCが高いのでしょうか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.