FPRTPRA CC (Độ chính xác):
TPR = Σ Đúng dươngTrường hợp dương tính
FPR = Σ dương tính giảTrường hợp tiêu cực
A CC= TPR ⋅ Σ trường hợp dương + ( 1 - FPR ) ⋅ Σ trường hợp âmΣ trường hợp dương + Σ trường hợp âm
Vì thế, A CC có thể được biểu diễn dưới dạng trung bình có trọng số của TPR và FPR. Nếu số lượng tiêu cực và tích cực là như nhau:
A CC= TPR + 1 - FPR2
Nhưng nếu N-» N+? Sau đó:
A CC( N-» N+) ≈ 1 - FPR
Vì vậy, trong trường hợp này, tối đa
A CC 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 fpr
là 0 acc
là 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)
Các Một chữ UC Là
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ột chữ UCcá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?