"Đường cong cơ sở" trong đồ thị đường cong PR là một đường nằm ngang có chiều cao bằng số lượng ví dụ tích cực trên tổng số dữ liệu đào tạo , nghĩa là. tỷ lệ các ví dụ tích cực trong dữ liệu của chúng tôi ( ).N PPNPN
OK, tại sao đây là trường hợp? Giả sử chúng ta có một "phân loại rác" . trả về một ngẫu nhiên khả cho -thứ dụ mẫu là trong lớp . Để thuận tiện, giả sử . Hàm ý trực tiếp của việc gán lớp ngẫu nhiên này là sẽ có độ chính xác (dự kiến) bằng với tỷ lệ của các ví dụ tích cực trong dữ liệu của chúng tôi. Nó chỉ là tự nhiên; mọi mẫu phụ hoàn toàn ngẫu nhiên của dữ liệu của chúng tôi sẽ có ví dụ được phân loại chính xác. Điều này sẽ đúng với mọi ngưỡng xác suấtC JCJCJ i y i A p i ∼ U [ 0 , 1 ] C J E { PpiiyiApi∼U[0,1]CJqE{PN}qchúng tôi có thể sử dụng làm ranh giới quyết định cho xác suất thành viên lớp được trả về bởi . ( biểu thị một giá trị trong trong đó các giá trị xác suất lớn hơn hoặc bằng được phân loại trong lớp ) Mặt khác, hiệu suất thu hồi của là (trong kỳ vọng) bằng nếu . Tại bất kỳ ngưỡng cho chúng tôi sẽ chọn (ước tính) tổng dữ liệu của chúng tôi mà sau đó sẽ chứa (xấp xỉ) trong tổng số các trường hợp của lớp q [ 0 , 1 ] q A C J q p i ∼ U [ 0 , 1 ] q ( 100 ( 1 - q ) ) % ( 100 ( 1 - q ) ) % ACJq[0,1]qACJqpi∼U[0,1]q(100(1−q))%(100(1−q))%Atrong mẫu. Do đó, đường ngang chúng tôi đã đề cập ở đầu! Với mỗi giá trị thu hồi ( giá trị trong biểu đồ PR), giá trị chính xác tương ứng ( giá trị trong biểu đồ PR) bằng với .y PxyPN
Một cách nhanh chóng phụ lưu ý: Ngưỡng là không thường bằng 1 trừ việc thu hồi dự kiến. Điều này xảy ra trong trường hợp được đề cập ở trên chỉ vì phân phối đồng đều ngẫu nhiên các kết quả của ; đối với một phân phối khác (ví dụ: ) mối quan hệ nhận dạng gần đúng giữa và thu hồi này không được giữ; đã được sử dụng vì nó dễ hiểu và dễ hình dung nhất. Đối với phân phối ngẫu nhiên khác nhau trong , cấu hình PR của sẽ không thay đổi. Chỉ cần vị trí của các giá trị PR cho các giá trị cho sẽ thay đổi.C J C J p i ∼ B ( 2 , 5 ) q U [ 0 , 1 ] [ 0 , 1 ] C J qqCJCJpi∼B(2,5)qU[0,1][0,1]CJq
Bây giờ về một phân loại hoàn hảo , người ta sẽ có nghĩa là một phân loại mà lợi nhuận khả để dụ mẫu phúc của lớp nếu thực sự là trong lớp và bổ sung trả về khả nếu không phải là một thành viên của lớp . Điều này ngụ ý rằng với bất kỳ ngưỡng chúng ta sẽ có độ chính xác (nghĩa là về mặt đồ thị, chúng ta có một dòng bắt đầu với độ chính xác ). Điểm duy nhất chúng tôi không nhận được độ chính xác là tại . Với 1 y i A y i A C P 0 y i A q 100 % 100 % 100 % q = 0 q = 0 PCP1yiAyiACP0yiAq100%100%100%q=0q=0, Độ chính xác rơi xuống tỷ lệ ví dụ tích cực trong dữ liệu của chúng tôi ( ) như (điên cuồng?) Chúng tôi phân loại thậm chí điểm với khả năng là của lớp như là trong lớp . Biểu đồ PR của chỉ có hai giá trị có thể có cho độ chính xác của nó là và . 0AACP1PPN0AACP1PN
OK và một số mã R để xem lần đầu tiên này với một ví dụ trong đó các giá trị dương tương ứng với mẫu của chúng tôi. Chú ý rằng chúng tôi làm một "mềm chuyển nhượng" của thể loại lớp theo nghĩa là các giá trị xác suất kết hợp với mỗi điểm định lượng để sự tự tin của chúng tôi rằng thời điểm này là của lớp .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);
trong đó các vòng tròn màu đen và hình tam giác lần lượt biểu thị và trong hai ô đầu tiên. Chúng tôi ngay lập tức thấy rằng các trình phân loại "rác" nhanh chóng đi đến độ chính xác bằng ; tương tự, bộ phân loại hoàn hảo có độ chính xác trên tất cả các biến thu hồi. Không có gì đáng ngạc nhiên, AUCPR cho phân loại "rác" bằng tỷ lệ của ví dụ tích cực trong mẫu của chúng tôi ( ) và AUCPR cho "phân loại hoàn hảo" xấp xỉ bằng .q=0.50q=0.20PN1≈0.401
Trên thực tế, biểu đồ PR của một bộ phân loại hoàn hảo là một chút vô dụng vì người ta không thể có nhớ lại bao giờ (chúng tôi không bao giờ dự đoán chỉ có lớp tiêu cực); chúng ta chỉ bắt đầu vẽ đường thẳng từ góc trên bên trái như một vấn đề quy ước. Nói đúng ra nó chỉ nên thể hiện hai điểm nhưng điều này sẽ tạo ra một đường cong khủng khiếp. : D0
Đối với hồ sơ, đã có một số câu trả lời rất tốt trong CV liên quan đến tiện ích của các đường cong PR: ở đây , ở đây và ở đây . Chỉ cần đọc qua chúng một cách cẩn thận sẽ cung cấp một sự hiểu biết chung về đường cong PR.