"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.