ROC 곡선 아래의 정확도 대 면적


16

진단 시스템을위한 ROC 곡선을 구성했습니다. 곡선 아래 면적은 비모수 적으로 AUC = 0.89 인 것으로 추정되었다. 최적의 임계 값 설정 (점 (0, 1)에 가장 가까운 지점)에서 정확도를 계산하려고 할 때 진단 시스템의 정확도는 0.8로 AUC보다 작습니다! 최적의 임계 값과는 다른 다른 임계 값 설정에서 정확도를 확인했을 때 정확도는 0.92와 같습니다. 최상의 임계 값 설정에서 진단 시스템의 정확도를 다른 임계 값의 정확도보다 낮고 곡선 아래의 영역보다 낮게 얻을 수 있습니까? 첨부 된 그림을 참조하십시오.

여기에 이미지 설명을 입력하십시오


1
분석에 몇 개의 샘플이 있는지 알려주시겠습니까? 나는 그것이 매우 불균형이라고 내기하고 있습니다. 또한 AUC와 정확도는 (AUC보다 정확도가 낮을 ​​때) 그렇게 해석되지 않습니다.
Firebug

1
269469는 음수이고 37731은 양수입니다. 이것은 아래 답변 (클래스 불균형)에 따라 여기에 문제가 될 수 있습니다.
알리 술탄

문제는 클래스 불균형 자체가 아니라 평가 척도의 선택이라는 점을 명심하십시오. 모두 모두, U C는 좀 더 합리적이 시나리오에서, 또는 당신은 균형 잡힌 정확성을 구현할 수 있습니다.
Firebug

마지막으로, 귀하의 질문에 대한 답변이 있다고 생각되면 답변 (녹색 확인 표시)을 "수락"하는 것을 고려할 수 있습니다. 이것은 필수 사항은 아니지만 답변 한 사람을 도와주고 사이트 구성 (질문이 답변하기 전까지는 답변되지 않은 것으로 간주) 및 향후 동일한 질문을하는 사람을 도와줍니다.
Firebug

답변:


8

실제로 가능합니다. 핵심은 정확도가 클래스 불균형에 크게 영향을 받는다는 것을 기억하는 것입니다. 예를 들어, 귀하의 경우 FPR ( )은 0에 가까우며 TPR (=T=에프에프+ )은 0.5이며 정확도 (=TP+T+에프=++에프+에프+ )은 여전히 ​​매우 높습니다.

달리 말하면, 더 많은 음수 샘플이 있으므로 분류자가 항상 0을 예측하면 FPR 및 TPR이 0에 가까울수록 여전히 높은 정확도를 얻습니다.

당신이 전화를 최적의 임계 값 설정 (점 (0, 1)에 가장 가까운 지점은) 최적의 임계 값에 대한 여러 정의 중 하나에 불과합니다 : 그것은 반드시 정확성을하지 않습니다.

여기에 이미지 설명을 입력하십시오


10

좋아, 사이의 관계를 기억 (위양성률), T P R (진정한 긍정적 비율) 및 C C (정확도) :에프아르 자형아르 자형

아르 자형=진정한 긍정적긍정적 인 경우

에프아르 자형=거짓 긍정부정적인 경우

=아르 자형긍정적 인 경우+(1에프아르 자형)부정적인 경우긍정적 인 경우+부정적인 경우

아르 자형에프아르 자형

=아르 자형+1에프아르 자형2

+

(+)1에프아르 자형
에프아르 자형

이 예에서 음수는 양수보다 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

언제 fpr0인가acc 이 최대 .

그리고 여기에는 정확한 주석이 달린 ROC가 있습니다.

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)

여기에 이미지 설명을 입력하십시오


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

결론은 가짜 모델을 만드는 방식으로 정확도를 최적화 할 수 있다는 것입니다 (이 tpr예제에서는 = 0). 정확도가 좋은 척도가 아니기 때문에 결과의 이분법을 의사 결정자에게 맡겨야합니다.

아르 자형=1에프아르 자형

균형이 잡힌 수업이있는 경우 정확도를 최적화하는 것이 쉽지 않을 수 있습니다 (예 : 모든 사람을 대다수 수업으로 예측).


그리고 가장 중요한 것은 : AUC가 더 정확한 분류기보다 정확도가 낮은 분류기에서 왜 더 높은가?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.