phát hiện ngoại lệ: khu vực dưới đường cong thu hồi chính xác


7

Tôi muốn so sánh các thuật toán phát hiện ngoại lệ. Tôi không chắc chắn nếu khu vực dưới roc hoặc dưới đường cong thu hồi chính xác là biện pháp để sử dụng.

Một thử nghiệm nhanh trong matlab cho tôi kết quả kỳ lạ. Tôi cố gắng để có được các giá trị ROC và PR để phân loại hoàn hảo:

% true labels
outlier = 1;
normal  = 0;
% 99% normal data 1% outlier
label = normal*ones(1000,1); 
label(1:10) = outlier;  

% scores of the algorithm
% assume the prediction is perfect
score = label;

[~,~,~,AUC] = perfcurve(label,score,outlier)  % AUC = 1 
[~,~,~,PR] = perfcurve(label,score,outlier, 'xCrit', 'reca', 'yCrit', 'prec') % PR = 0

Tại sao diện tích dưới PR = 0? Không phải là 1 sao?

AUC ROC cũng cho kết quả mong đợi nếu được đánh giá với phân loại không đổi là 0,5:

label = real( rand(1000,1) > 0.99 );     % 99% normal data 1% outlier
score = zeros(1000,1);                   % always predicting zero
[~,~,~,AUC] = perfcurve(label,score,1)   % AUC = 0.5

Vậy tại sao khu vực dưới đường cong PR được coi là tốt hơn để so sánh các thuật toán phát hiện ngoại lệ?

Chỉnh sửa: Tôi không nhắm đến một câu trả lời cụ thể cho câu hỏi của tôi. Đây chỉ là một MWE cho bạn.

Tôi chỉ tự hỏi tại sao rất nhiều ấn phẩm khuyến nghị AUC PR phù hợp hơn ROC cho các bộ dữ liệu không cân bằng vì chúng là điển hình cho phát hiện ngoại lệ. Bằng chứng nhanh chóng của tôi về khái niệm trên dường như chỉ ra điều ngược lại.


Bạn có thể chỉ định ngôn ngữ mà mã của bạn đang ở? Có phải là MATLAB không?
Alex R.

Vâng, đó là MATLAB
Manuel Schmidt

Câu trả lời:


4

Vấn đề là với ví dụ của bạn rằng có thể có zero và zero , do đó độ chính xác trở nên không xác định vì chúng ta chia cho 0. Do đó, đường cong PR chỉ chứa các điểm cho một giá trị , và do đó, khu vực dưới đường cong PR trở thành số không cho ví dụ của bạn.tpfpprec=tp/(tp+fp)x

Bạn có thể thấy điều này bằng cách vẽ đường cong PR:

[X,Y,T,PR] = perfcurve(label,score,1, 'xCrit', 'reca', 'yCrit', 'prec') % PR = 0
figure
scatter(X,Y)
xlabel('recall')
ylabel('precision')

Vì vậy, vẽ đường cong PR không thực sự hoạt động tốt khi tất cả điểm số của bạn đều giống nhau.

Để hiểu rõ hơn về sự khác biệt của đường PR và đường cong ROC, hãy so sánh hai danh sách dự đoán này. Chúng tôi xem xét trường hợp chúng tôi dự đoán tất cả các số không và dự đoán 1, nhưng nó phải bằng 0 (điểm 1). Cái này không hoạt động tốt lắm, nó dự đoán 0 ở mọi nơi, ngoại trừ một đối tượng mà nó dự đoán 1 trong đó nó phải bằng 0. Chúng tôi xem xét một trường hợp khác, trong đó chúng tôi dự đoán đúng 1 và phần còn lại chúng tôi phân loại là 0. Ở đây chúng tôi dự đoán đúng 1 và phần còn lại chúng tôi phân loại là 0. Chúng tôi so sánh khu vực dưới đường cong PR và khu vực dưới ROC .

outlier = 1;
normal  = 0;
% 99% normal data 1% outlier
label = normal*ones(1000,1); 
label(1:10) = outlier;  

%label = real( rand(1000,1) > 0.99 );     % 99% normal data 1% outlier
score1 = [zeros(999,1);1]; % predict everything as zero, and one mistake 
score2 = [1;zeros(999,1)]; % predict everything as zero, and one 1 correct 

[X,Y,T,AUC1] = perfcurve(label,score1,1)
% AUC1 = 0.5
[X,Y,T,AUC2] = perfcurve(label,score2,1)
% AUC2 = 0.55

[X,Y,T,PR1] = perfcurve(label,score1,1, 'xCrit', 'reca', 'yCrit', 'prec') 
% PR1 = 0.005 
[X,Y,T,PR2] = perfcurve(label,score2,1, 'xCrit', 'reca', 'yCrit', 'prec') 
% PR2 = 0.4545

Quan sát rằng AUC thay đổi rất ít giữa điểm1 và điểm2. Tuy nhiên, khu vực dưới đường cong PR là khác nhau đáng kể. Nó thưởng điểm2 nhiều hơn nhiều so với điểm1. Điều này cho thấy nó phù hợp hơn với phát hiện ngoại lệ: nó thưởng cho việc phát hiện ngoại lệ nhiều hơn AUC. Trong trường hợp phát hiện ngoại lệ, bạn sẽ thích điểm2 hơn nhiều, vì nó dự đoán 1 mà bạn muốn phát hiện chính xác, trong khi điểm 1 dự đoán 1 cho số 0 và không bao giờ bắt được bất kỳ ngoại lệ nào.

Nói chung, AUC có nhiều thông tin hơn để đưa ra ý tưởng dự đoán của bạn hoạt động tốt như thế nào đối với các linh mục khác nhau. Do đó, AUC đặc trưng cho việc phân loại hoạt động tốt như thế nào đối với số lượng khác nhau và số không.

Các đường cong PR chỉ ra tốt hơn cách nó thực hiện đối với sự mất cân bằng lớp hiện tại được xem xét. Do đó, đường cong PR thú vị hơn đối với bạn: nó tính đến việc có ít 1 giây trong tập dữ liệu của bạn hơn 0. Bởi vì bạn chỉ quan tâm đến trường hợp này khi bạn quan tâm đến việc phát hiện ngoại lệ, đường cong PR có nhiều thông tin hơn.

Trong khi AUC mô tả cách dự đoán của bạn sẽ làm như thế nào nếu có nhiều hơn 1.

Để biết thêm thông tin xem thêm:

https://www.quora.com/What-is-Precision-Recall-PR-curve

Đường cong chính xác và thu hồi

Cuối cùng, bạn có thể quan tâm đến cách tính đường cong ROC / PR, một lời giải thích chi tiết được đưa ra ở đây cho các đường cong ROC:

http://bloss.sas.com/content/iml/2011/07/29/computing-an-roc-curve-from-basic-principles.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.