"Kurva garis dasar" dalam plot kurva PR adalah garis horizontal dengan ketinggian yang sama dengan jumlah contoh positif atas jumlah total data pelatihan N , yaitu. proporsi contoh positif dalam data kami ( PPN ).PN
OK, mengapa demikian? Mari kita asumsikan kita memiliki "sampah classifier" . C J mengembalikan acak probabilitas p i ke i th sampel contoh y saya berada di kelas A . Untuk kenyamanan, ucapkan p i ∼ U [ 0 , 1 ] . Implikasi langsung dari tugas kelas acak ini adalah bahwa C J akan memiliki (diharapkan) presisi sama dengan proporsi contoh positif dalam data kami. Itu wajar; sub-sampel yang benar-benar acak dari data kami akan memiliki ECJCJpiiyiApi∼U[0,1]CJcontoh diklasifikasikan dengan benar. Ini akan menjadi benar untuk setiap probabilitas thresholdqkita mungkin menggunakan sebagai batas keputusan untuk probabilitas keanggotaan kelas dikembalikan olehCJ. (Qmenunjukkan nilai di[0,1]di mana nilai-nilai probabilitas lebih besar atau sama denganqdiklasifikasikan dalam kelasA.) Di sisi lain kinerja recall dariCJadalah (dengan harapan) sama untukqjikapi~U[0,1]. Pada ambang tertentuE{PN}qCJq[0,1]qACJqpi∼U[0,1] kami akan memilih (kurang-lebih) ( 100 ( 1 - q ) ) % dari total data kami yang kemudian akan berisi (kurang-lebih) ( 100 ( 1 - q ) ) % dari total jumlah instance kelas A dalam sampel. Maka garis horizontal yang kami sebutkan di awal! Untuk setiap nilai penarikan (nilai x dalam grafik PR) nilai presisi yang sesuai (nilai y dalam grafik PR) sama dengan Pq(100(1−q))%(100(1−q))%Axy .PN
Sebuah cepat catatan samping: Ambang adalah tidak umum sama dengan 1 minus recall diharapkan. Hal ini terjadi dalam kasus C J disebutkan di atas hanya karena distribusi seragam acak C J hasil 's; untuk distribusi yang berbeda (mis. p i ∼ B ( 2 , 5 ) ) ini perkiraan hubungan identitas antara q dan recall tidak berlaku; U [ 0 , 1 ] digunakan karena paling mudah dipahami dan divisualisasikan secara mental. Untuk distribusi acak yang berbeda dalam [ 0qCJCJpi∼B(2,5)qU[0,1] profil PR dari C J tidak akan berubah sekalipun. Hanya penempatan nilai PR untuknilai q yang diberikanakan berubah.[0,1]CJq
Sekarang mengenai classifier sempurna , orang akan berarti classifier yang mengembalikan probabilitas 1 untuk sampel contoh y saya menjadi kelas A jika y i memang di kelas A dan juga C P mengembalikan probabilitas 0 jika y saya bukan anggota kelas A . Ini menyiratkan bahwa untuk setiap ambang batas q kita akan memiliki presisi 100 % (mis. Dalam istilah grafik kita mendapatkan garis mulai dari presisi 100 % ). Satu-satunya poin kami tidak mendapatkan 100CP1yiAyiACP0yiAq100%100% presisi pada q = 0 . Untuk q = 0 , presisi jatuh ke proporsi contoh positif dalam data kami ( P100%q=0q=0 ) sebagai (gila-gilaan?) Kita mengklasifikasikan bahkan poin dengan0probabilitas menjadi kelasAsebagai kelasA. Grafik PR dariCPmemiliki dua nilai yang mungkin untuk presisi,1danPPN0AACP1 .PN
OK dan beberapa kode R untuk melihat ini diserahkan dengan contoh di mana nilai positif sesuai dengan dari sampel kami. Perhatikan bahwa kita melakukan "soft-tugas" dari kategori kelas dalam arti bahwa nilai probabilitas yang terkait dengan setiap titik mengkuantifikasi untuk keyakinan kita bahwa titik ini adalah kelas A .40%A
rm(list= ls())
library(PRROC)
N = 40000
set.seed(444)
propOfPos = 0.40
trueLabels = rbinom(N,1,propOfPos)
randomProbsB = rbeta(n = N, 2, 5)
randomProbsU = runif(n = N)
# Junk classifier with beta distribution random results
pr1B <- pr.curve(scores.class0 = randomProbsB[trueLabels == 1],
scores.class1 = randomProbsB[trueLabels == 0], curve = TRUE)
# Junk classifier with uniformly distribution random results
pr1U <- pr.curve(scores.class0 = randomProbsU[trueLabels == 1],
scores.class1 = randomProbsU[trueLabels == 0], curve = TRUE)
# Perfect classifier with prob. 1 for positives and prob. 0 for negatives.
pr2 <- pr.curve(scores.class0 = rep(1, times= N*propOfPos),
scores.class1 = rep(0, times = N*(1-propOfPos)), curve = TRUE)
par(mfrow=c(1,3))
plot(pr1U, main ='"Junk" classifier (Unif(0,1))', auc.main= FALSE,
legend=FALSE, col='red', panel.first= grid(), cex.main = 1.5);
pcord = pr1U$curve[ which.min( abs(pr1U$curve[,3]- 0.50)),c(1,2)];
points( pcord[1], pcord[2], col='black', cex= 2, pch = 1)
pcord = pr1U$curve[ which.min( abs(pr1U$curve[,3]- 0.20)),c(1,2)];
points( pcord[1], pcord[2], col='black', cex= 2, pch = 17)
plot(pr1B, main ='"Junk" classifier (Beta(2,5))', auc.main= FALSE,
legend=FALSE, col='red', panel.first= grid(), cex.main = 1.5);
pcord = pr1B$curve[ which.min( abs(pr1B$curve[,3]- 0.50)),c(1,2)];
points( pcord[1], pcord[2], col='black', cex= 2, pch = 1)
pcord = pr1B$curve[ which.min( abs(pr1B$curve[,3]- 0.20)),c(1,2)];
points( pcord[1], pcord[2], col='black', cex= 2, pch = 17)
plot(pr2, main = '"Perfect" classifier', auc.main= FALSE,
legend=FALSE, col='red', panel.first= grid(), cex.main = 1.5);
di mana lingkaran hitam dan segitiga menunjukkan dan q = masing-masing 0,20 dalam dua plot pertama. Kita segera melihat bahwa pengklasifikasi "sampah" dengan cepat mencapai presisi sama dengan Pq=0.50q=0.20PN1≈0.401
0
Sebagai catatan, sudah ada beberapa jawaban yang sangat baik di CV mengenai kegunaan kurva PR: di sini , di sini dan di sini . Hanya dengan membacanya dengan seksama harus menawarkan pemahaman umum yang baik tentang kurva PR.
Jawaban yang bagus di atas. Inilah cara berpikir intuitif saya tentang hal itu. Bayangkan Anda memiliki banyak bola merah = positif dan kuning = negatif, dan Anda melemparkannya secara acak ke dalam ember = pecahan positif. Kemudian jika Anda memiliki jumlah bola merah dan kuning yang sama, ketika Anda menghitung PREC = tp / tp + fp = 100/100 + 100 dari ember Anda merah (positif) = kuning (negatif), oleh karena itu, PREC = 0,5. Namun, jika saya memiliki 1000 bola merah dan 100 bola kuning, maka dalam ember saya akan secara acak mengharapkan PREC = tp / tp + fp = 1000/1000 + 100 = 0,91 karena itu adalah garis dasar kesempatan dalam fraksi positif yang juga RP / RP + RN, di mana RP = nyata positif dan RN = nyata negatif.
sumber