Độ chính xác so với diện tích dưới đường cong ROC


16

Tôi đã xây dựng một đường cong ROC cho một hệ thống chẩn đoán. Khu vực dưới đường cong sau đó được ước tính không tham số là AUC = 0,89. Khi tôi cố gắng tính toán độ chính xác ở cài đặt ngưỡng tối ưu (điểm gần điểm nhất (0, 1)), tôi nhận được độ chính xác của hệ thống chẩn đoán là 0,8, nhỏ hơn AUC! Khi tôi kiểm tra độ chính xác ở một cài đặt ngưỡng khác cách xa ngưỡng tối ưu, tôi có độ chính xác bằng 0,92. Có thể lấy độ chính xác của hệ thống chẩn đoán ở ngưỡng tốt nhất cài đặt thấp hơn độ chính xác ở ngưỡng khác và cũng thấp hơn khu vực dưới đường cong? Xem hình đính kèm xin vui lòng.

nhập mô tả hình ảnh ở đây


1
Bạn có thể vui lòng cho biết có bao nhiêu mẫu trong phân tích của bạn? Tôi cá là nó rất mất cân bằng. Ngoài ra, AUC và độ chính xác không dịch như vậy (khi bạn nói độ chính xác thấp hơn AUC), tất cả.
Firebug

1
269469 là tiêu cực và 37731 là tích cực; đây có thể là vấn đề ở đây theo các câu trả lời dưới đây (sự mất cân bằng lớp học).
Ali Sultan

Hãy nhớ rằng vấn đề không phải là mất cân bằng lớp học, đó là sự lựa chọn của biện pháp đánh giá. Nói chung, hợp lý hơn trong kịch bản này hoặc bạn có thể thực hiện độ chính xác cân bằng. AUC
Firebug

Một điều cuối cùng, nếu bạn cảm thấy một câu trả lời đã trả lời câu hỏi của bạn, bạn có thể xem xét "chấp nhận" câu trả lời (dấu kiểm màu xanh lá cây). Điều này không bắt buộc, nhưng giúp người trả lời và cũng giúp tổ chức trang web (câu hỏi được tính là chưa được trả lời cho đến khi bạn làm điều đó), và có lẽ những người sẽ đưa ra câu hỏi tương tự trong tương lai.
Firebug

Câu trả lời:


8

=FPFP+TNTPTP+FN= =TP+TNTP+FN+FP+TN

Nói cách khác, vì bạn có nhiều mẫu âm tính hơn, nếu bộ phân loại dự đoán 0 mọi lúc, nó vẫn sẽ có độ chính xác cao với FPR và TPR gần bằng 0.

Cái bạn gọi là cài đặt ngưỡng tối ưu (điểm gần nhất với điểm (0, 1)) chỉ là một trong nhiều định nghĩa cho ngưỡng tối ưu: không nhất thiết phải tối ưu hóa độ chính xác.

nhập mô tả hình ảnh ở đây


10

FPRTPRMộtCC (Độ chính xác):

TPR= =ΣĐúng tích cựcΣTrường hợp tích cực

FPR= =ΣDương tính giảΣTrường hợp tiêu cực

MộtCC= =TPRΣTrường hợp tích cực+(1-FPR)ΣTrường hợp tiêu cựcΣTrường hợp tích cực+ΣTrường hợp tiêu cực

Vì thế, MộtCC có thể được biểu diễn dưới dạng trung bình có trọng số của TPRFPR. Nếu số lượng tiêu cực và tích cực là như nhau:

MộtCC= =TPR+1-FPR2

Nhưng nếu N-»N+? Sau đó:

MộtCC(N-»N+)1-FPR
Vì vậy, trong trường hợp này, tối đa MộtCC xảy ra ở mức tối thiểu FPR

Xem ví dụ này, số âm vượt trội hơn 1000: 1.

data = c(rnorm(10L), rnorm(10000L)+1)
lab = c(rep(1, 10L), rep(-1, 10000L))
plot(data, lab, col = lab + 3)
tresh = c(-10, data[lab == 1], 10)
do.call(function(x) abline(v = x, col = "gray"), list(tresh))

pred = lapply(tresh, function (x) ifelse(data <= x, 1, -1))
res = data.frame(
  acc = sapply(pred, function(x) sum(x == lab)/length(lab)),
  tpr = sapply(pred, function(x) sum(lab == x & x == 1)/sum(lab == 1)),
  fpr = sapply(pred, function(x) sum(lab != x & x == 1)/sum(lab != 1))
)

res[order(res$acc),]

#> res[order(res$acc),]
#           acc tpr    fpr
#12 0.000999001 1.0 1.0000
#11 0.189110889 1.0 0.8117
#9  0.500099900 0.9 0.5003
#2  0.757742258 0.8 0.2423
#5  0.763136863 0.7 0.2368
#4  0.792007992 0.6 0.2078
#10 0.807292707 0.5 0.1924
#3  0.884215784 0.4 0.1153
#7  0.890709291 0.3 0.1087
#6  0.903096903 0.2 0.0962
#8  0.971428571 0.1 0.0277
#1  0.999000999 0.0 0.0000

Xem, khi nào fprlà 0 acclà tối đa.

Và đây là ROC, với độ chính xác được chú thích.

plot(sort(res$fpr), sort(res$tpr), type = "S", ylab = "TPR", xlab = "FPR")
text(sort(res$fpr), sort(res$tpr), pos = 4L, lab = round(res$acc[order(res$fpr)], 3L))
abline(a = 0, b = 1)
abline(a = 1, b = -1)

enter image description here


Các MộtBạnC

1-sum(res$fpr[-12]*0.1)
#[1] 0.74608

Điểm mấu chốt là bạn có thể tối ưu hóa độ chính xác theo cách dẫn đến mô hình không có thật ( tpr= 0 trong ví dụ của tôi). Đó là bởi vì độ chính xác không phải là một thước đo tốt, nên phân đôi kết quả cho người ra quyết định.

Ngưỡng tối ưu được cho là TPR= =1-FPR dòng vì cách đó cả hai lỗi có trọng số bằng nhau, ngay cả khi độ chính xác không tối ưu.

Khi bạn có các lớp không cân bằng, tối ưu hóa độ chính xác có thể là chuyện nhỏ (ví dụ: dự đoán mọi người là lớp đa số).


Một điều nữa, bạn không thể dịch nhất MộtBạnCcác biện pháp để ước tính chính xác như thế; xem những câu hỏi sau

Và quan trọng nhất trong tất cả: Tại sao AUC cao hơn đối với phân loại kém chính xác hơn so với phân loại chính xác hơn?

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.