"เส้นโค้งพื้นฐาน" ในพล็อตกราฟโค้ง PR เป็นเส้นแนวนอนที่มีความสูงเท่ากับจำนวนตัวอย่างบวกในจำนวนข้อมูลการฝึกอบรมทั้งหมดNเช่น สัดส่วนของตัวอย่างที่เป็นบวกในข้อมูลของเรา ( PPยังไม่มีข้อความ )Pยังไม่มีข้อความ
ตกลงทำไมเป็นเช่นนี้ สมมติว่าเรามี "ลักษณนามขยะ" J C Jส่งกลับสุ่มความน่าจะเป็นหน้าฉันไป -th เช่นตัวอย่างที่จะอยู่ในระดับ เพื่ออำนวยความสะดวกพูด[0,1] ความหมายโดยตรงของการมอบหมายคลาสแบบสุ่มนี้คือจะมีความแม่นยำ (คาดหวัง) เท่ากับสัดส่วนของตัวอย่างเชิงบวกในข้อมูลของเรา มันเป็นธรรมชาติเท่านั้น ตัวอย่างย่อยของข้อมูลทั้งหมดของเราจะมีตัวอย่างที่ถูกจัดประเภทอย่างถูกต้อง นี้จะเป็นจริงสำหรับการใด ๆ เกณฑ์ความน่าจะเป็นคJคJพีผมy i A p i ∼ U [ 0 , 1 ] C J E { PผมYผมAพีผม∼ คุณ[ 0 , 1 ]คJqCJq[0,1]qACJqpi∼U[0,1E{ Pยังไม่มีข้อความ}Qเราอาจจะใช้เป็นขอบเขตการตัดสินใจสำหรับความน่าจะเป็นของการเป็นสมาชิกระดับที่ส่งกลับโดยC_J(หมายถึงค่าในโดยที่ความน่าจะเป็นค่าที่มากกว่าหรือเท่ากับถูกจัดประเภทในคลาส ) ในทางกลับกันประสิทธิภาพการเรียกคืนของคือ (โดยคาดหวัง) เท่ากับถ้า . ในเกณฑ์ใดก็ตามเราจะเลือก (โดยประมาณ)ของข้อมูลทั้งหมดของเราซึ่งต่อมาจะมี (โดยประมาณ)ของจำนวนเสียงทั้งหมดของอินสแตนซ์ของคลาสคJQ[ 0 , 1 ]QAคJQq ( 100 ( 1 - q ) ) % ( 100 ( 1 - q ) ) % A x y Pพีผม∼ คุณ[ 0 , 1 ]Q( 100 ( 1 - q) ) %( 100 ( 1 - q) ) %Aในตัวอย่าง ดังนั้นเส้นแนวนอนที่เราพูดถึงตอนแรก! สำหรับค่าทุกการเรียกคืน (ค่าในการประชาสัมพันธ์กราฟ) ค่าความแม่นยำที่สอดคล้องกัน (ค่าในกราฟประชาสัมพันธ์) เท่ากับ{N}xYPยังไม่มีข้อความ
รวดเร็วด้านหมายเหตุ: เกณฑ์คือไม่ได้โดยทั่วไปเท่ากับ 1 ลบที่คาดว่าจะเรียกคืน สิ่งนี้เกิดขึ้นในกรณีของC J ที่กล่าวถึงข้างต้นเท่านั้นเนื่องจากการกระจายแบบสุ่มของผลลัพธ์ของC J สำหรับการแจกแจงแบบต่าง ๆ (เช่นp i ∼ B ( 2 , 5 ) ) ความสัมพันธ์ที่เป็นตัวตนโดยประมาณนี้ระหว่างqและการเรียกคืนไม่ได้เก็บไว้; ใช้[ 0 , 1 ]เพราะง่ายที่สุดในการทำความเข้าใจและมองเห็นภาพทางจิตใจ สำหรับการแจกแจงแบบสุ่มที่แตกต่างกันใน[ 0QคJคJพีผม∼ B ( 2 , 5 )Qยู[ 0 , 1 ]โปรไฟล์ประชาสัมพันธ์ของ C Jจะไม่เปลี่ยนแปลงแม้ว่า เพียงตำแหน่งของค่า PR สำหรับค่า q ที่กำหนดจะเปลี่ยนไป[ 0 , 1 ]คJQ
ตอนนี้เกี่ยวกับการจําแนกที่สมบูรณ์แบบหนึ่งจะหมายถึงลักษณนามว่าผลตอบแทนที่น่าจะเป็น1ตัวอย่างตัวอย่างY ฉันเป็นของชั้นถ้าY ฉันเป็นจริงในชั้นเรียนและนอกจากนี้ซีพีส่งกลับน่าจะเป็น0ถ้าy ที่ฉันไม่ได้เป็นสมาชิกของชั้นเรียนก . นี่ก็หมายความว่าสำหรับเกณฑ์ใด ๆqเราจะมีความแม่นยำ100 % (เช่นในคำศัพท์กราฟเราจะได้รับบรรทัดเริ่มต้นที่ความแม่นยำ100 % ) จุดเดียวที่เราไม่ได้รับ100คP1YผมAYผมAคP0YผมAQ100 %100 %ความแม่นยำที่ Q = 0 สำหรับ q = 0ความแม่นยำจะลดลงตามสัดส่วนของตัวอย่างที่เป็นบวกในข้อมูลของเรา ( P100%q=0q=0 ) เช่น (เมามัน?) เราจัดจุดแม้จะมี0ความน่าจะเป็นของการเป็นของชั้นว่าอยู่ในระดับ กราฟ PR ของCPมีเพียงสองค่าที่เป็นไปได้สำหรับความแม่นยำ1และPPN0AACP1 .PN
ตกลงและรหัส R เพื่อดูตัวอย่างแรกที่ส่งค่าที่ตรงกับของตัวอย่างของเรา ขอให้สังเกตว่าที่เราทำ "อ่อนมอบหมาย" ของหมวดหมู่ชั้นในแง่ที่ว่าค่าความน่าจะเป็นที่เกี่ยวข้องกับแต่ละประเมินชี้ไปที่ความเชื่อมั่นของเราที่จุดนี้เป็นของชั้น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);
โดยที่วงกลมสีดำและสามเหลี่ยมแสดงถึงและq = 0.20ตามลำดับในสองแปลงแรก เราจะเห็นทันทีว่าตัวแยกประเภท "ขยะ" จะไปที่ความแม่นยำเท่ากับPอย่างรวดเร็วq=0.50q=0.20PN1≈0.401
0
สำหรับบันทึกที่มีอยู่แล้วมีบางคำตอบที่ดีมากในการ CV เกี่ยวกับประโยชน์ของเส้นโค้งประชาสัมพันธ์: ที่นี่ , ที่นี่และที่นี่ เพียงแค่อ่านผ่านพวกเขาอย่างระมัดระวังควรให้ความเข้าใจทั่วไปที่ดีเกี่ยวกับเส้นโค้งการประชาสัมพันธ์