faP.RT.P.RZAC.do
T.P.R = ∑ Prawdziwie dodatni∑ Pozytywne przypadki
faP.R = ∑ Fałszywie dodatniCases Przypadki negatywne
ZAC.do=TP.R ⋅ ∑ Przypadki dodatnie + ( 1 - FP.R ) ⋅ ∑ Przypadki ujemneCases Przypadki pozytywne + ∑ Przypadki negatywne
ZAC.doT.P.RP.R. Jeśli liczba negatywów i pozytywów jest taka sama:
A C.do= TP.R + 1 - FP.R2)
Ale co gdyby N.-≫ N.+? Następnie:
A C.do( N-≫ N.+) ≈ 1 - FP.R
Tak więc w tym przypadku maksymalny
A C.do występuje minimalnie
faP.R
Zobacz ten przykład, liczba pozytywnych liczb przewyższa liczbę 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
Zobacz, kiedy fpr
0 acc
jest maksymalne.
A oto ROC, z adnotacją dokładności.
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)
The Udo jest
1-sum(res$fpr[-12]*0.1)
#[1] 0.74608
Najważniejsze jest to, że możesz zoptymalizować dokładność w taki sposób, aby uzyskać fałszywy model ( tpr
= 0 w moim przykładzie). To dlatego, że dokładność nie jest dobrym miernikiem, dychotomizacja wyniku powinna zostać pozostawiona decydentowi.
Mówi się, że optymalny próg to T.P.R = 1 - FP.R ponieważ w ten sposób oba błędy mają jednakową wagę, nawet jeśli dokładność nie jest optymalna.
Gdy masz niezrównoważone klasy, optymalizacja dokładności może być trywialna (np. Przewidzieć wszystkich jako klasę większościową).
Kolejna rzecz, której nie możesz tłumaczyć większość Udośrodki do oszacowania dokładności takiej jak ta; zobacz te pytania:
I najważniejsze: dlaczego AUC jest wyższy dla klasyfikatora, który jest mniej dokładny niż dla bardziej dokładnego?