대각선을 가로 지르는 ROC 곡선


12

현재 이진 분류기를 실행하고 있습니다. ROC 곡선을 플롯하면 처음에 좋은 리프트를 얻은 다음 방향이 바뀌고 대각선을 교차 한 다음 다시 위로 올라가 곡선을 기울어 진 S 모양으로 만듭니다.

이 효과에 대한 해석 / 설명은 무엇입니까?

감사


1
ROC 곡선을 어떻게 생각하게 되었습니까? 직접 확률 모델 대신 분류기를 선택하게 된 이유는 무엇입니까?
Frank Harrell

답변:


18

두 결과의 표준 편차가 동일한 경우에만 훌륭한 대칭 ROC 플롯을 얻을 수 있습니다. 그것들이 다소 다르다면 당신이 묘사 한 결과를 정확하게 얻을 수 있습니다.

다음 Mathematica 코드가이를 보여줍니다. 우리는 목표가 반응 공간에서 정규 분포를 산출하고, 소음 또한 정규 분포를 산출하지만, 대체 된 것으로 가정합니다. ROC 매개 변수는 결정 기준의 왼쪽 또는 오른쪽의 가우시안 곡선 아래 영역에 따라 결정됩니다. 이 기준에 따라 ROC 곡선이 설명됩니다.

Manipulate[
 ParametricPlot[{CDF[NormalDistribution[4, \[Sigma]], c], 
                 CDF[NormalDistribution[0, 3], c]
                }, {c, -10, 10}, 
                Frame -> True, 
                Axes -> None, PlotRange -> {{0, 1}, {0, 1}}, 
                Epilog -> Line[{{0, 0}, {1, 1}}]], 
 {{\[Sigma], 3}, 0.1, 10, Appearance -> "Labeled"}]

표준 편차가 동일합니다. 여기에 이미지 설명을 입력하십시오

이것은 다소 구별되는 것입니다.

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

또는 몇 가지 추가 매개 변수를 가지고 놀 수 있습니다.

Manipulate[
 ParametricPlot[{CDF[NormalDistribution[\[Mu]1, \[Sigma]1], c], 
   CDF[NormalDistribution[\[Mu]2, \[Sigma]2], c]}, {c, -100, 100}, 
  Frame -> True, Axes -> None, PlotRange -> {{0, 1}, {0, 1}}, 
  Epilog -> Line[{{0, 0}, {1, 1}}]], {{\[Mu]1, 0}, 0, 10, 
  Appearance -> "Labeled"},
 {{\[Sigma]1, 4}, 0.1, 20, Appearance -> "Labeled"},
 {{\[Mu]2, 5}, 0, 10, Appearance -> "Labeled"},
 {{\[Sigma]2, 4}, 0.1, 20, Appearance -> "Labeled"}]

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


1

FPR이 높은 곡선 부분에 일련의 음수 인스턴스가 있으면 이러한 종류의 곡선이 만들어 질 수 있습니다. ROC 곡선을 생성하기 위해 올바른 알고리즘을 사용하는 한 괜찮습니다.

2m 포인트 세트의 절반이 긍정적이고 절반이 부정적 인 조건은 모델에 대해 정확히 동일한 점수를 갖는 것은 까다 롭습니다. 점수 (ROC 플로팅의 표준 절차)를 기준으로 포인트를 정렬하는 동안 모든 부정적인 예가 먼저 발생하면 ROC 곡선이 평평하게 유지되고 오른쪽으로 이동합니다. :

포셋 | ROC 곡선 플로팅


1

(@Sjoerd C. de Vries와 @Hrishekesh Ganu의 답변은 정확합니다. 그럼에도 불구하고 아이디어를 다른 방법으로 제시하여 일부 사람들에게 도움이 될 수 있다고 생각했습니다.)


모델이 잘못 지정되면 ROC를 얻을 수 있습니다. 아래 R답변 ()으로 수정 된 아래 예제를 고려 하십시오. 상자 그림을 사용하여 다른 조건에서 값이 올 가능성이 높은 지점을 찾는 방법은 무엇입니까?

## data
Cond.1 = c(2.9, 3.0, 3.1, 3.1, 3.1, 3.3, 3.3, 3.4, 3.4, 3.4, 3.5, 3.5, 3.6, 3.7, 3.7,
           3.8, 3.8, 3.8, 3.8, 3.9, 4.0, 4.0, 4.1, 4.1, 4.2, 4.4, 4.5, 4.5, 4.5, 4.6,
           4.6, 4.6, 4.7, 4.8, 4.9, 4.9, 5.5, 5.5, 5.7)
Cond.2 = c(2.3, 2.4, 2.6, 3.1, 3.7, 3.7, 3.8, 4.0, 4.2, 4.8, 4.9, 5.5, 5.5, 5.5, 5.7,
           5.8, 5.9, 5.9, 6.0, 6.0, 6.1, 6.1, 6.3, 6.5, 6.7, 6.8, 6.9, 7.1, 7.1, 7.1,
           7.2, 7.2, 7.4, 7.5, 7.6, 7.6, 10, 10.1, 12.5)
dat    = stack(list(cond1=Cond.1, cond2=Cond.2))
ord    = order(dat$values)
dat    = dat[ord,]  # now the data are sorted

## logistic regression models
lr.model1 = glm(ind~values,             dat, family="binomial")  # w/o a squared term
lr.model2 = glm(ind~values+I(values^2), dat, family="binomial")  # w/  a squared term
lr.preds1 = predict(lr.model1, data.frame(values=seq(2.3,12.5,by=.1)), type="response")
lr.preds2 = predict(lr.model2, data.frame(values=seq(2.3,12.5,by=.1)), type="response")

## here I plot the data & the 2 models
windows()
  with(dat, plot(values, ifelse(ind=="cond2",1,0), 
                 ylab="predicted probability of condition2"))
  lines(seq(2.3,12.5,by=.1), lr.preds1, lwd=2, col="red")
  lines(seq(2.3,12.5,by=.1), lr.preds2, lwd=2, col="blue")
  legend("bottomright", legend=c("model 1", "model 2"), lwd=2, col=c("red", "blue"))

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

빨간색 모델에 데이터 구조가 누락되어 있음을 쉽게 알 수 있습니다. ROC 곡선이 아래에 표시 될 때 어떻게 보이는지 확인할 수 있습니다.

library(ROCR)  # we'll use this package to make the ROC curve

## these are necessary to make the ROC curves
pred1 = with(dat, prediction(fitted(lr.model1), ind))
pred2 = with(dat, prediction(fitted(lr.model2), ind))
perf1 = performance(pred1, "tpr", "fpr")
perf2 = performance(pred2, "tpr", "fpr")

## here I plot the ROC curves
windows()
  plot(perf1, col="red",  lwd=2)
  plot(perf2, col="blue", lwd=2, add=T)
  abline(0,1, col="gray")
  legend("bottomright", legend=c("model 1", "model 2"), lwd=2, col=c("red", "blue"))

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

이제 잘못 지정된 (빨간색) 모델의 경우 오 탐지율이 보다 커지면 오 탐지율이 실제 포지티브 율보다 더 빠르게 증가 함을 알 수 있습니다. 위의 모델을 살펴보면 그 지점이 왼쪽 아래에서 빨간색과 파란색 선이 교차하는 지점임을 알 수 있습니다. 80%

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