Akurasi vs area di bawah kurva ROC

16

Saya membuat kurva ROC untuk sistem diagnostik. Area di bawah kurva kemudian non-parametrik diperkirakan menjadi AUC = 0,89. Ketika saya mencoba menghitung akurasi pada pengaturan ambang optimal (titik terdekat dengan titik (0, 1)), saya mendapatkan akurasi sistem diagnostik menjadi 0,8, yang kurang dari AUC! Ketika saya memeriksa akurasi pada pengaturan ambang yang lain yang jauh dari ambang optimal saya mendapatkan akurasi sama dengan 0,92. Apakah mungkin untuk mendapatkan keakuratan sistem diagnostik pada pengaturan ambang terbaik yang lebih rendah daripada akurasi pada ambang lainnya dan juga lebih rendah dari area di bawah kurva? Silakan lihat gambar terlampir.

masukkan deskripsi gambar di sini

Ali Sultan
sumber
1
Bisakah Anda menunjukkan berapa banyak sampel dalam analisis Anda? Saya yakin itu sangat tidak seimbang. Juga, AUC dan akurasi tidak diterjemahkan seperti itu (ketika Anda mengatakan akurasi lebih rendah dari AUC), sama sekali.
Firebug
1
269469 negatif dan 37731 positif; ini mungkin masalah di sini sesuai jawaban di bawah ini (ketidakseimbangan kelas).
Ali Sultan
perlu diingat masalahnya bukan ketidakseimbangan kelas per se, itu adalah pilihan ukuran evaluasi. Secara keseluruhan, lebih masuk akal dalam skenario ini, atau Anda dapat menerapkan akurasi yang seimbang. AUC
Firebug
Satu hal lagi, jika Anda merasakan jawaban menjawab pertanyaan Anda, Anda dapat mempertimbangkan "menerima" jawabannya (tanda centang hijau). Ini tidak wajib, tetapi membantu orang yang menjawab dan juga membantu organisasi situs (pertanyaannya dianggap belum terjawab sampai Anda melakukannya), dan mungkin orang yang akan membuat pertanyaan yang sama di masa mendatang.
Firebug

Jawaban:

8

Memang mungkin. Kuncinya adalah untuk mengingat bahwa akurasinya sangat dipengaruhi oleh ketidakseimbangan kelas. Misalnya, dalam kasus Anda, Anda memiliki lebih banyak sampel negatif daripada sampel positif, sejak saat FPR (=FPFP+TN ) mendekati 0, dan TPR (= ) adalah 0,5, keakuratan Anda (=TP+TNTPTP+FN=TP+TNTP+FN+FP+TN ) masih sangat tinggi.

Dengan kata lain, karena Anda memiliki lebih banyak sampel negatif, jika classifier memprediksi 0 sepanjang waktu, ia masih akan mendapatkan akurasi tinggi dengan FPR dan TPR mendekati 0.

Apa yang Anda sebut pengaturan ambang optimal (titik terdekat dengan titik (0, 1)) hanyalah salah satu dari banyak definisi untuk ambang optimal: itu tidak selalu mengoptimalkan keakuratan.

masukkan deskripsi gambar di sini

Franck Dernoncourt
sumber
10

Oke, ingat hubungan antara FPR (Tingkat Positif Palsu), TPR (True Positive Rate) dan SEBUAHCC (Ketepatan):

TPR=Sangat positifKasus positif

FPR=Salah positifKasus negatif

SEBUAHCC=TPRKasus positif+(1-FPR)Kasus negatifKasus positif+Kasus negatif

Begitu, SEBUAHCC dapat direpresentasikan sebagai rata-rata tertimbang TPR dan FPR. Jika jumlah negatif dan positifnya sama:

SEBUAHCC=TPR+1-FPR2

Tetapi bagaimana jika N-N+? Kemudian:

SEBUAHCC(N-N+)1-FPR
Jadi, dalam hal ini, maksimal SEBUAHCC 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 fpr0 accmaksimum.

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)

enter image description here


Itu SEBUAHUC 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 SEBUAHUClangkah-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?

Pembakar
sumber