Oke, ingat hubungan antara FPR (Tingkat Positif Palsu), TPR (True Positive Rate) dan A CC (Ketepatan):
TPR = ∑ Benar positifΣ kasus Positif
FPR = ∑ Salah positifΣ kasus Negatif
A CC= TPR ⋅ ∑ Kasus positif + ( 1 - FPR ) ⋅ ∑ Kasus negatifΣ kasus positif + Σ kasus Negatif
Begitu, A CC dapat direpresentasikan sebagai rata-rata tertimbang TPR dan FPR. Jika jumlah negatif dan positifnya sama:
A CC= TPR + 1 - FPR2
Tetapi bagaimana jika N-≫ N+? Kemudian:
A CC( N-≫ N+) ≈ 1 - FPR
Jadi, dalam hal ini, maksimal
A CC terjadi minimal
FPR
Lihat contoh ini, negatif melebihi positif 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
Lihat, kapan fpr
0 acc
maksimum.
Dan inilah ROC, dengan akurasi beranotasi.
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)
Itu A UC adalah
1-sum(res$fpr[-12]*0.1)
#[1] 0.74608
Intinya adalah bahwa Anda dapat mengoptimalkan akurasi dengan cara menghasilkan model palsu ( tpr
= 0 dalam contoh saya). Itu karena akurasi bukan metrik yang baik, dikotomisasi hasilnya harus diserahkan kepada pembuat keputusan.
Ambang batas optimal dikatakan sebagai TPR = 1 - FPR garis karena cara itu kedua kesalahan memiliki bobot yang sama, bahkan jika akurasi tidak optimal.
Ketika Anda memiliki kelas yang tidak seimbang, akurasi pengoptimalan bisa sepele (mis. Perkirakan semua orang sebagai kelas mayoritas).
Hal lain, Anda tidak dapat menerjemahkan paling banyak A UClangkah-langkah untuk perkiraan akurasi seperti itu; lihat pertanyaan ini:
Dan yang paling penting: Mengapa AUC lebih tinggi untuk pengklasifikasi yang kurang akurat daripada untuk yang lebih akurat?