ROC curve 개념 - ROC curve gaenyeom

업데이트: February 20, 2019

머신러닝 성능 평가 - ROC 커브 개념 정리

참고링크

  • ROC 커브 복습하기
  • 교차검증(cross validataion)
  • k-means클러스터링 복습하기
  • k-최근접 이웃 알고리즘 복습하기
  • 선형회귀분석 복습하기
  • 로지스틱 회귀분석 복습하기
  • 릿지, 라쏘 회귀분석 북습하기
  • 의사결정나무 복습하기
  • 서포트벡터머신 복습하기
  • LDA 복습하기
  • 가우시안 혼합 모형(GMM) 복습하기
  • 딥러닝 기초 복습하기
  • 부스팅(boosting) 복습하기
  • 사이킷런 실습하기

1. ROC 커브란 무엇일까요?

여러분이 머신러닝 모델을 만들었다고 가정합시다. 모델을 만들었으면 이 모델이 성능이 좋은지 안좋은지 평가를 해야 하겠죠? ROC 커브는 머신러닝 모델을 평가할 때 쓰입니다.

2. 민감도와 특이도

ROC 커브를 이야기 하기전에 민감도(Sensitivity)와 특이도(Specificity)의 개념을 아셔야 합니다. 흔히 민감도와 특이도를 설명하기 위해 의사의 진단을 예를 듭니다. 의사는 환자를 진단해 병에 걸렸느냐 안 걸렸느냐를 판단합니다. 이때 발생할 수 있는 경우는

모수실제론 병에 걸림실제론 정상인
검사결과 양성 양성판정을 내렸는데 실제로 병에 걸린 경우(TP)(1) 양성판정을 내렸는데 실제로는 정상인(FP)(2)
검사결과 음성 음성판정을 내렸는데 실제로 병에 걸린 경우(FN)(3) 음성판정을 내렸는데 실제로는 정상인(TN)(4)

위의 표를 좀 더 간략히 표현하면

ROC curve 개념 - ROC curve gaenyeom

위 그림처럼 크게는 정답과 오답으로 나눌수 있으며 자세히는 아래처럼 나타냅니다.

  • 민감도(Sensitivity, True positive rate(TPR), Recall): 실제 병에 걸린 사람이 양성(Positive) 판정을 받는 비율입니다.
  • 특이도(Specificity, True Negative rate(TNR) ): 정상인이 음성(Negative) 판정을 받는 비율입니다.
  • False positive rate(FPR) = 1-specificity
  • 정확도(Accuracy): 전체 데이터 중 제대로 분류된 데이터 비율
  • 에러율(Error Rate): 전체 데이터 중 제대로 분류되지 않은 데이터 비율
  • 정밀도(Precision): Positive로 예측했을 때, 실제로 Positive인 비율

$ \texttt{민감도(Sensitivity, Recall, True Positive Rate)} = \frac{(1)}{(1)+(3)} = \frac{TP}{TP + FN} $

$ \texttt{특이도(Specificity, True Negative rate)} = \frac{(4)}{(2)+(4)} = \frac{TN}{FP + TN}$

$ \texttt{False positive rate(FPR)} = \frac{(2)}{(2)+(4)} = \frac{FP}{FP + TN}$

$ \texttt{정확도(Accuracy)} = \frac{(1)+(4)}{(1)+(2)+(3)+(4)} = \frac{TP + TN}{TP + FP + FN + TN}$

$ \texttt{에러율(Error Rate)} = \frac{(2)+(3)}{(1)+(2)+(3)+(4)} = \frac{FP + FN}{TP + FP + FN + TN} $

$ \texttt{정밀도(Precision)} = \frac{(1)}{(1)+(2)} = \frac{TP}{TP + FP}$

2-1. 정밀도(Precision)와 민감도(Recall)

$ \texttt{정밀도(Precision)} = \frac{TP}{TP + FP}$

$ \texttt{민감도(Recall)} = \frac{TP}{TP + FN} $

Precision과 Recall의 차이는 무엇일까요? 위 식을 보시면 분모는 같습니다. True Positive가 분모의 일부라는 것도 같네요. Precision을 보시면 분모가 TP + FP이므로 Positive 라는 판정을 내렸다는 뜻입니다. 즉, 자신의 ‘양성판정’이 기준이라는 것입니다. 반면 Recall을 보면 분모가 TP + FN 이므로 ‘옳은판정’이 기준입니다. 즉, Precision과 recall은 기준이 다르다는 차이가 있습니다.

3. ROC 커브

결국 모형이 좋다는 말의 뜻을 생각해보면, 모든 환자에게 양성 판정을 내리고, 모든 정상인에게 음성 판정을 내리면 완벽합니다. 만약 모든 진단에 대해 양성 판정을 내리면 어떻게 될까요? 이 경우 병에 걸린 모든 환자를 찾을 수 있습니다. 왜냐면 모든 사람이 양성 판정을 받기 때문이죠. 하지만 정상인도 환자로 판정 받는 다는 단점이 있습니다. 그럼 모든 진단에 대해 음성 판정을 내리면 어떻게 될까요? 이 경우에는 모든 정상인에 대해 올바른 판정이 내려집니다. 하지만 병에 걸린 환자 또한 정상인이라고 판정 받으므로 병을 치료할 수 없습니다.

ROC curve 개념 - ROC curve gaenyeom

ROC 커브는 이러한 다양한 부분을 한눈에 볼 수 있는 판정법입니다. Figure1에서 보면, 병에 걸린 사람을 양성 판정하고, 정상인을 정상인이라 판정하는 가장 이상적인 판정, 즉, TPR = 1 이고, FPR = 0 인 경우가 가장 이상적입니다.(Perfect Classification)

ROC curve 개념 - ROC curve gaenyeom

ROC 커브에서 모델의 평가가 좋다는 것은 커브의 밑면적 즉 AUC의 넓이가 넓을 수록 그 모델의 성능이 좋다는 것.

ROC curve 개념 - ROC curve gaenyeom

잠깐! 선형대수, 머신러닝에 대해 좀 더 자세히 알고 싶다면?

선형대수와 통계학으로 배우는 머신러닝 with 파이썬

*통계학 전공자가 아닌 심리학도라 이하 포스팅은 100% 정확하지 않을 수 있습니다. 공부하다가 생긴 궁금증에 대해 나름의 답을 찾은 것이므로 전공자가 보기에는 부족할 수 있습니다. 논리적으로 잘못된 부분이 있다면 지적 부탁드립니다.*

방학은 방학인데 방학아닌 방학을 보내는 즁... 요즘 완전 우울;;;

한동안 R에 꼳혀서(지금도 빠져있음ㅋ) 명령어를 신나게 짜고 있는데, 개인적으로 블로그 내에서 가장 신경쓰고 오랜 작업기간이 들어가는 포스팅은 대부분 '통계Q&A' 파트에 있는 것 같다. 공부한 걸 복습하고 다진다는 의미가 커서 그런 것 같기도 하다. 이번에는 작년에 특강을 듣고 그때부터 조금씩 정리해서 방학 초에 정리를 끝낸 ROC Curve를 다뤄보고자 한다.

ROC 분석과 관련해서는 총 5번에 걸쳐 풀어쓰도록 하겠다(ROC 분석의 일부에 불과하지만 개인적으로 이 이상에 대해서는 알아도 써먹을 데가 없음).

Part. 1-ROC Curve란 무엇이고 어떻게 그려지는가?[현재 포스팅]

Part. 2-ROC Curve로 척도의 절단점(Cut Point)은 어떻게 찾는가?

Part. 3-Youden's Index와 Euclidean Method의 공통점과 차이점

Part. 4-ROC Curve의 분석과 해석은 어떻게 하는가?(Using SPSS & R)

Part. 5-ROC Curve가 심리학에서 많이 쓰이지 않는 이유

사실, ROC Curve는 심리학에서 많이 쓰이는 분석기법은 아니다. 심리학보다는 의학, 보건학, 간호학 쪽에서 훨씬 많이 쓰이는 분석기법(이외에도 다양한 분야에서 쓰임)이고, 국내 심리학 학술지에서는 ROC 분석을 사용한 논문은 흔하지 않은 편이다. 그 이유에 대해서는 Part. 5에서 다루는 걸로 하겠고, 필자가 분석기법의 원리에 관심이 큰 건 사실이나 그에 앞서 심리학을 전공하고 있는 학부생이기에 심리학에서 활용가능한 예시를 들어서 설명하도록 하겠다.

자, Part .1을 시작해보자^^

ROC Curve가 어떻게 그려지는지 알아보기에 앞서 ROC분석이 어떤 건지 개략적으로 알아보고, 핵심 개념 중 하나인 민감도와 특이도에 대해 알아보자.

1.ROC 분석이란?

ROC Curve는 Receiver Operating Characteristic Curve의 약자민감도(Sensitivity)와 1-특이도(Specificity)로 그려지는 곡선을 의미한다. ROC 분석은 주로 검사도구의 유용성을 판단하거나 검사의 정확도를 평가하는데 사용되고, 진단을 위한 도구 개발에서 검사의 기준점(Cut Point)을 설정하는 경우에도 활용될 수 있다.

(이후에 다룰 포스팅(Part. 2)에서는 척도의 최적 절단점을 찾는 방법에 초점을 둘 것이며 민감도와 특이도를 고려하여 집단을 분류하는 최적화 된 의사결정 기준점을 평가하는 방법에 대해 알아보도록 함. 참고로 검사 도구의 목적에 따라 기준점은 달라질 수 있음.)

분석을 위해서는 최소한 2개 이상의 변수가 있어야 하고 두개의 변수 중 하나는 반드시 진단(확진) 결과 또는 검사결과를 나타낸 이분형 변수여야 한다.

2.개념 설명

ROC Curve를 그리기 위해서는 아래 표를 먼저 익혀야 한다. ROC Curve에서 가장 핵심적인 개념들이 모두 여기서 파생되는데 매우 중요하니 아래 표를 반드시 이해해야 한다.

*표기는 이후에 TP, TN, FP, FN으로 함*

예측값

(Positive / Negative)

양성(1)

음성(0)

실제값(진단결과)

(Ture / False)

양성(1)

①True Positive(TP)

②False Negative(FN)

음성(0)

③False Positive(FP)

④True Negative(TN)

표를 놓고 보면 가설 검정 표와 유사한 것을 볼 수 있는데 사실, 가설 검정의 원리와 크게 차이가 없는 게 의사결정 과정에서 나타나는 4가지 경우의 수를 표현한 것이기 때문이다. 굳이 비교하자면 FP가 1종 오류(Type 1 Error)에 해당하고 FN이 2종 오류(Type 2 Error)에 해당한다.

자, 위의 표를 이해해보자. 필자도 이 표를 매번 그릴 때마다 정말 혼동이 오는데 이 부분이 추후에 정말 헷갈리는 부분 중 하나이므로 확실하게 짚고 넘어가도록 하겠다. 먼저, 예측값은 Positive와 Negative로 구분하는데 이는 양성(P)과 음성(N)에 대한 사전 예측값이고 실제값 True, False는 실제 진단결과예측값과의 일치여부를 나타낸다. 표에 표기된 4가지 경우는 예측값(P or N)과, 예측값과 진단결과의 일치여부(T or F)로 표기된다. 따라서 TP, FN, FP, TN은 다음과 같이 설명될 수 있다.

①TP: 양성(P)이라고 예측했는데 진단이 양성이므로 예측(양성)과 진단(양성)이 일치(Ture)

∴True Positive(예측: 양성 / 진단: 양성 → 일치 )

②FN: 음성(N)이라고 예측했는데 진단은 양성이므로 예측(음성)과 진단(양성)이 불일치(False)

∴False Negative(예측: 음성 / 진단: 양성 → 불일치)

③FP: 양성(P)이라고 예측했는데 진단은 음성이므로 예측(양성)과 진단(음성)이 불일치(False)

∴False Positive(예측: 양성 / 진단: 음성 → 불일치)

④TN: 음성(N)이라고 예측했는데 진단이 음성이므로 예측(음성)과 진단(음성)이 일치(True)

∴True Negative(예측: 음성 / 진단: 음성 → 일치)

3.민감도(Sensitivity)와 특이도(Specificity)

ROC분석에서 등장하는 모든 개념들(민감도, 특이도, 양성 예측도, 정밀도, 음성 예측도, 위양성율, 위음성율, 오분류율, 유병율)은 위의 4가지(TP, FN, FP, TN)가 조합되어 계산된다. 하지만 실제 ROC Curve를 그리는데 활용되는 값은 민감도(Sensitivity)와 특이도(Specificity)이고 가장 핵심 개념이므로 이 두 가지를 중점적으로 설명하도록 하겠다. 추후에 그래프를 그릴 때 설명해야 하는 위양성율(False Positive Rate)은 아래 4번에서 설명하도록 하겠다.

a.민감도(Sensitivity)

민감도는 '실제 양성 대 맞춘 양성의 비율'을 의미한다. 위에서 실제 양성인 것은 TP와 FN이다. 양성으로 예측해서 맞췄거나 음성으로 예측했는데 틀린 경우를 합친 것이 실제 진단 결과가 양성인 것이 된다. 그리고 여기서 맞춘 양성은 TP만 해당하므로 이를 비율로 표현한 민감도는 다음과 같이 구해진다.

오판(FN)의 비중이 낮을 수록 검사의 정확성(양성인 것을 제대로 예측할 확률)이 증가하기 때문에 민감도는 클수록 좋다.

b.특이도(Specificity)

특이도는 '실제 음성 대 맞춘 음성의 비율'을 의미한다. 위에서 실제 음성인 것은 TN과 FP이다. 음성으로 예측해서 맞췄거나 양성으로 예측했는데 틀린 경우를 합친 것이 실제 진단 결과가 음성인 경우에 속한다. 그리고 여기서 맞춘 음성은 TN만 해당하므로 이를 비율로 표현한 특이도는 아래와 같이 계산된다.

특이도도 민감도와 마찬가지로 클수록 좋다.검사가 양성인 사람을 제대로 판단하는 비율이 크더라도 음성인 사람을 제대로 걸러내지 못한다면 검사 전체의 정확성은 떨어질 수있다. 따라서 민감도와 마찬가지로 특이도 역시 값이 클수록 음성인 사람을 잘 필터링한다는 것이기 때문에 FP의 비중이 낮을 수록 좋다.

--------------------------------------------------------------------------------------------------------------------------------------------------

민감도와 특이도의 개념을 쉽게 적용해서 암을 진단하는 진단도구A가 있다고 가정해보자. 암을 진단하는 도구인 만큼 진단의 정확성은 높을수록 좋을 것이다. 여기서의 정확성은 실제 양성인 사람을 양성이라고 제대로 진단하는 것과 음성인 사람을 음성이라고 제대로 진단하는 것 모두를 충족해야 한다. 실제로 양성인 사람만 걸러내고 음성인 사람은 제대로 필터링하지 못한다면, 실제로는 음성인데 양성이라고 진단하는 사람이 생겨 과잉진료 문제가 생길 수 있다. 마찬가지로 실제로 음성인 사람은 잘 걸러내는데 양성인 사람을 제대로 필터링하지 못한다면, 실제로는 양성인데 음성이라고 진단되는 사람이 생길 수 있다. 이 경우에 환자는 암세포를 가지고 있는데 음성판정을 받은 셈이 되기 때문에 오진의 위험(경우에 따라서는 생명에도 지장)에 노출된다. 따라서 검사도구에서 정확성은 단순히 양성 판정을 제대로 내리는 것에만 해당하는 것이 아니라 음성 판정을 제대로 내리는 것 또한 포함되므로 민감도와 특이도 모두 높을수록 검사도구의 정확성이 높다고 할 수 있겠다.

--------------------------------------------------------------------------------------------------------------------------------------------------

4.ROC Curve 그리기

자, 이제 메인 게임인 ROC Curve 그리기를 해보자! ROC Curve는 민감도(SE)와 1-특이도(SP)로 그려진다. 어떤 툴을 이용해서 분석하든 간에 x축은 1-특이도로 구성되고 y축은 민감도가 된다. 여기서 하나 궁금증이 생기는데 왜 x축이 특이도가 아니라 1-특이도 일까? 이 부분에 대한 답은 제대로 설명된 책이나 논문이 없었다. 그래프가 다 민감도와 1-특이도로 그려져서 그러려니 했는데 최근에 나름의 답을 찾아서 이 부분은 5번 AUC면적에 대한 설명에서 다루는 것으로 하고 일단 1-특이도가 어떤 의미인지만 알아두도록 하자. 1-특이도 수식으로 정리하면 다음과 같이 정리된다.

그리고 여기서의 FP/TN+FP는 실제로는 음성인 것과 양성으로 잘못 예측한 것의 비율로 위양성율(False Positive Rate;FPR) 의미한다.

민감도와 1-특이도가 어떤 관계인지는 아래 5번에서 심층적으로 다루는 것으로 하고, 이제 아래 두가시 예시를 가지고 그래프를 직접 그려보자. 필자는 심리학도이기에 본 포스팅은 우울을 측정하는 가장 대표적인 도구인 BDI-Ⅱ를 통해 우울증 환자들의 우울수준을 측정하고 이들을 대상으로 자살 시도 여부를 측정한 데이터가 있다는 '가정'하에 임의로 데이터를 생성해서 분석하도록 하겠다(SPSS와 R을 이용한 실제 분석은 Part. 4에서 설명함).

데이터에 대한 기본적인 설명을 하자면, 변수 DEP(Depression)는 BDI-Ⅱ를 가지고 측정한 데이터이며 변수 DS(Diagnosis)는 BDI검사를 받은 사람들의 우울증 환자로 진단 내린 결과이다. DS는 진단 결과(실제 우울증 환자 여부)이므로 우울증 환자로 진단된 사람은 1, 정상인 사람은 0으로 코딩한 것이고, DEP는 우울 수준을 연속형 변수로 나타낸 것이다. 참고로 BDI-Ⅱ는 총 21문항이며 0~3점으로 코딩해서 총점은 0에서 63점까지 나타난다.

a.예시1(n=10)

ROC curve 개념 - ROC curve gaenyeom

ROC_1.xlsx

위와 같은 10명의 데이터가 있다고 가정하고 이를 가지고 ROC Curve를 그려보자. 먼저 위에 있는 TP, FN, FP, TN열을 모두 채워보자. 데이터를 코딩할 때에는 ID에 따라 행을 채워 넣지만 여기서는 그렇게 하면 엄청나게 헷갈리기 때문에 열을 하나씩 채워나가도록 하겠다.

TP, FN, FP, TN을 채우는 원리는 다음과 같다. 먼저, 진단기준점(Cut Point)을 잡고, 예측값이 P(양성)이면 기준점 이상을 1로 예측하고 예측값이 N(음성)이면 기준점 미만을 0으로 예측한다.

ROC curve 개념 - ROC curve gaenyeom

채우고자 하는 열의 예측값(P/N)을 먼저 확인하자

이때, 기준점 이상을 양성으로 예측했을때 실제 진단(DS)과 일치하면 TP가 되는 것이고 일치하지 않으면 FP가 된다. 마찬가지로 기준점 미만을 음성으로 예측했을때 실제 진단(DS)과 일치하면 TN이 되는 것이고 일치하지 않으면 FN이 된다.

ROC curve 개념 - ROC curve gaenyeom

기준점을 토대로 예측한 값과 실제 진단의 일치여부(T/F)를 판단하자

따라서 위의 표를 채워넣으면 다음과 같이 된다(주의: 기준점 '이상'과 '미만'을 잘 확인할 것).

ROC curve 개념 - ROC curve gaenyeom

표 안의 값들을 일일히 다 설명하기는 힘들기 때문에 각 열당 1개의 값에 대한 설명만 덧붙이도록 하겠다.

㉠TP(True Positive) 채우기

ROC curve 개념 - ROC curve gaenyeom

위에서 노란색으로 칠해진 D4셀을 보면 TP에 속하는데 기준점을 DEP:20으로 잡았을 때, 해당 기준점 이상의 값(DEP:20점 이상)을 가지는 사람을 모두 양성(우울증)으로 예측하고 실제로 20점 이상인 사람들 중 우울증 환자로 진단된 케이스를 세면 된다. 여기서는 DEP가 20, 21, 22점인 사람 모두 우울증 환자(=1)로 진단되었기 때문에 D4셀에 입력되는 True Positive 값은 3이 된다. 나머지 셀들(D2:D11)도 동일한 원리로 채워 넣으면 된다.

㉡FN(False Negative) 채우기

ROC curve 개념 - ROC curve gaenyeom

위에서 연녹색으로 칠해진 E5셀을 보면 FN에 속하는데 기준점을 DEP:19로 잡았을 때, 해당 기준점 미만의 값(DEP:13~18점)을 가지는 사람을 모두 음성(정상)으로 예측했는데 실제로 19점 미만인 사람들 중에 우울증 환자로 진단된 케이스를 세면 된다. 여기서는 DEP가 18점인 사람 1명만이 우울증 환자(=1)로 진단되었기 때문에 E5에 입력되는 False Negative 값은 1이 된다. 나머지 셀들(E2:E11)도 같은 원리로 채워 넣으면 된다.

㉢FP(False Positive) 채우기

ROC curve 개념 - ROC curve gaenyeom

위에서 주황색으로 칠해진 F9셀을 보면 FP에 속하는데 기준점을 DEP:15로 잡았을 때, 해당 기준점 이상의 값(DEP:15~22점)을 가지는 사람들을 양성(우울증)으로 예측하였으나, 실제로는 15점 이상인 사람들 중에 정상으로 진단된 케이스를 세면 된다. 여기서는 DEP가 15,16,17점인 사람들이 정상(=0)으로 진단되었기 때문에 F9에 입력되는 False Positive 값은 3이 된다. 나머지 셀들(F2:F11)도 같은 방식으로 채워 넣으면 된다.

㉣TN(True Negative) 채우기

ROC curve 개념 - ROC curve gaenyeom

위에서 분홍색으로 칠해진 G7셀을 보면 TN에 속하는데 기준점을 DEP:17로 잡았을 때, 해당 기준점 미만의 값(DEP: 13~16점)을 가지는 사람들을 음성(정상)으로 예측하였고, 실제로 17점 미만인 사람들 중에 정상으로 진단된 케이스를 세면 된다. 여기서는 DEP가 13,14,15,16점인 사람들이 정상(=0)으로 진단되었기 때문에 G7에 입력되는 True Negative 값은 4가 된다. 나머지 셀들(G2:G11)도 동일한 방식으로 채워 넣으면 된다.

㉤SE(Sensitivity), SP(Specificity), 1-SP(False Positive Rate;FPR)구하기

후... 이제 1/2정도 왔다(ㅋ). 절반밖에 못온 것 같지만 ㉠~㉣까지의 과정이 ROC분석의 기초이자 그래프 그리기의 출발점이다. 이제 그래프의 x축과 y축을 담당하는 민감도와 1-특이도를 구해보자. 민감도는 앞에서 'TP/TP+FN'으로 계산되고 특이도는 'TN/TN+FP'로 구해진다는 것을 확인했기 때문에 엑셀에서 수식을 이용해서 구하면 된다.

ROC curve 개념 - ROC curve gaenyeom

ROC curve 개념 - ROC curve gaenyeom

1-특이도(1-SP) 값도 계산해주고 자동채우기 기능으로 H2:J11을 모두 채워주자.

ROC curve 개념 - ROC curve gaenyeom

위와 같이 채워졌다면 제대로 따라온 것이고 SE열과 1-SP열에는 서식을 지정해서 굵은 빨간글씨로 표시했는데 여기에 이 값들이 실제 ROC Curve에서 곡선을 그리는 좌표로 활용된다.

자, 그래프를 그려보자! 모눈종이나 종이에 직접 그려보길 추천한다(ㅎ).

ROC curve 개념 - ROC curve gaenyeom

점들을 모두 이으면 ROC Curve가 완성됨

민감도와 특이도는 진단에 대한 정확성을 확률로 나타낸 것이기 때문에 0과 1사이의 값을 가지며 ROC Curve도 (0,0)에서 출발해서 (1,1) 수렴하게 된다.

실제로 위 데이터를 SPSS에서 분석했을 때의 결과는 아래와 같다(결과해석에 대해서는 Part. 4에서 다룰 것이므로 여기서는 그래프가 그려지는 원리만 이해하자).

ROC curve 개념 - ROC curve gaenyeom

SPSS 출력 결과

복습하는 차원에서 하나만 더 연습해보자. 예시1은 18점을 기준으로 명확하게 진단이 나뉘도록 데이터를 만든 것이지 실제로 이런 경우는 절대로 없다. 예시2는 똑같은 변수명이나 데이터를 2개 더 늘리고, 우울점수(DEP)와 진단결과(DS)를 일부 수정해서 만든 데이터이다. 예시 1과 똑같이 한번 그려보자.

b.예시2(n=12)

ROC curve 개념 - ROC curve gaenyeom

ROC_2.xlsx

위의 표를 예시 1과 같은 절차로 채워넣으면 다음과 같다.

ROC curve 개념 - ROC curve gaenyeom

마찬가지로 각 열마다 색이 칠해진 셀 4개의 값만 구하는 방법을 설명하도록 하겠다. 그리고 아마 분명히 혼동이 오겠지만 확진결과(T/F)값을 먼저보기 보다는 Positive냐 Negative냐에 따라 Cut-off 값을 기준으로 위(이상)를 볼지 아래(미만)을 볼지를 우선적으로 고려하는 것이 위 표를 채우기에 수월할 것이다.

㉠TP(D7='5')

DEP:18을 Cut-off로 잡았을 때, 18점 이상을 우울증(=1)으로 예측하여 맞춘 케이스의 수를 세면 된다. 18점 이상인 사람들은 총 6명이고 이들 중 우울증(=1)으로 제대로 진단된 사람은 총 5명이므로 D7은 5가 된다.

㉡FN(E4='3')

DEP:23을 Cut-off로 잡았을 때, 23점 미만을 정상(=0)으로 예측하여 틀린 케이스의 수를 세면 된다. 23점 미만인 사람들은 총 9명이고 이들 중 우울증(=1)으로 잘못 진단된 사람은 총 3명이므로 E4는 3이 된다.

㉢FP(F10='4')

DEP:15를 Cut-off로 잡았을 때, 15점 이상을 우울증(=1)으로 예측하여 틀린 케이스의 수를 세면 된다. 15점 이상인 사람들은 9명이고 이들 중 정상(=0)으로 잘못 진단된 사람은 총 4명이므로 F10은 4가 된다.

㉣TN(G5='6')

DEP:22를 Cut-off로 잡았을 때, 22점 미만을 정상(=0)으로 예측하여 맞춘 케이스의 수를 세면 된다. 22점 미만인 사람들은 총 8명이고 이들 중 정상(=0)으로 제대로 진단된 사람은 총 6명이므로 G5는 6이 된다.

이제 [D2:G13]을 하나하나 잘 채워 넣고 SE, SP, 1-SP를 구하면 아래와 같이 완성될 것이다.

ROC curve 개념 - ROC curve gaenyeom

소수점 자리수가 좀 지저분하게 나와서 소수점 둘째자리까지만 표기함.

ROC curve 개념 - ROC curve gaenyeom

점들을 모두 이으면 ROC Curve가 완성됨

아래는 SPSS에서 ROC 분석을 한 결과이다. 위 결과와 동일한 것을 확인할 수 있다.

ROC curve 개념 - ROC curve gaenyeom

SPSS 출력 결과

참고로 ROC 'Curve'인데 예시 1,2 모두 곡선형태가 아닌 것을 확인할 수 있을 것이다. 이는 데이터의 개수가 적어서 그런 것이다. 즉, 표본의 개수가 늘어나면 ROC 분석을 통해 그려지는 그래프는 곡선에 근접하게 된다.

5.AUC의 의미

이제 거의 다왔다(헥;;;). ROC Curve를 그려보았으니 이제 AUC의 의미를 알아보자(전반적인 ROC분석의 해석은 Part. 4에서 다룸).

먼저, AUC는 'Area Under Curve'의 약자로 ROC분석을 통해 그려지는 '곡선 밑의 면적'을 의미한다.

ROC curve 개념 - ROC curve gaenyeom

ROC_1.xlsx의 ROC 분석 결과

여기서 AUC는 0.5보다 커야 하고, 위 그림에서 'y=x'선을 참조선이라고 하는데 이보다 위로 그려져야 한다. 왜 그런것일까? (크... 이놈의 궁금증...)

ROC Curve의 x축과 y축을 자세히 보자. x축은 1-특이도(SP), y축은 민감도(SE)라고 했는데 수식을 보면서 다시한번 살펴보자.

위에서 1-SP는 다시 위양성율(FPR)이라고 정리했고 다음과 같다.

위에서 민감도를 '양성으로 예측하고 실제로 양성인 케이스와의 비율'이라고 설명했고, 특이도는 '음성으로 예측하고 실제로 음성인 케이스와의 비율'이라고 설명했었다. 이는 달리 말해 민감도는 '양성인 케이스를 양성으로 예측한 비율(True Positive Rate;TPR)'이고 특이도는 '음성인 케이스를 음성으로 예측한 비율(True Negative Rate;TNR)'을 의미한다. 이때 1-특이도는 위양성율(False Positive Rate;FPR)이 되고 위의 공식을 보면 실제 음성인 케이스들과 양성으로 잘못 예측한 케이스간의 비율을 의미하는 것을 확인할 수 있을 것이다. 정리하자면 ROC Curve에서 x축(1-특이도)은 '음성인 케이스를 양성으로 잘못 예측한 비율'이고 y축(민감도)은 '양성인 케이스를 양성으로 제대로 예측한 비율'이 된다. 그리고 당연한 말이지만 민감도는 클수록 좋고, 1-특이도(위양성율)는 작을수록 좋다.

만약, 민감도와 1-특이도(위양성율)가 1:1로 대응(TPR=FPR)된다면 어떻게 될까?ROC Curve에서 그래프는 참조선상인 y=x의 일차함수 위에 찍힐 것이다. 이때 AUC면적은 0.5가 되는데 이 경우의 진단도구의 정확성은 가장 최악이라고 볼 수 있다. 예를 들어보자. 우울증 환자(양성)를 검사해서 우울증(양성)으로 진단하는 확률과 정상(음성)인 사람을 검사해서 우울증으로 진단하는 확률(양성)이 50대 50이라면 그 검사는 말그대로 '무용지물'이다. 양성이라고 진단내리는데 50%확률로 절반은 실제 양성이고 절반은 실제 음성이라는 것은 극단적으로 비유하자면 '동전던지기'와 다를바가 없기 때문에 진단도구로써의 가치 자체가 없어진다.

따라서, ROC Curve에서 그려지는 곡선 밑 면적(AUC)는 반드시 0.5보다는 커야하고 일반적으로 0.7이상은 되어야 수용할만한 수준이라고 평가한다. 즉, AUC 면적이 클수록 해당 검사도구의 정확도가 높다고 보면 된다. 끝으로, AUC 면적에 대하여 Muller등(2005)이 언급한 평가 기준은 다음과 같다.

Area Under Curve(AUC)

Evaluation

AUC≥0.9

Excellent

0.8≤AUC〈0.9

Good

0.7≤AUC〈0.8

Fair

AUC<0.7

Poor

cf 1) 그래프가 참조선(y=x) 밑으로 그려지는 경우는 대개 진단 결과 코딩(0/1)을 반대로 코딩하였거나 양성 진단값을 1대신 0으로 입력한 경우에 발생한다. 그래프가 역전된 경우에는 원자료의 코딩상태를 확인해보자.

cf 2) 위양성율은 작고 민감도는 커야하므로 그래프는 (0,1)에 근접할 수록 좋고 확률이기 때문에 최대값은 1로 수렴한다. 따라서 그래프는 (0,0)에서 시작하여 좌측 상단으로 굴곡진 형태로 나타난다.

cf 3) 후... 포스팅 하나 쓰기가 왜이리 힘들징;;; 그래프도 그리고 곡선 밑면적의 의미도 알아보았으니 이제 Part. 2에서 절단점을 찾아보자. Part. 2는 다음 포스팅에...

[참고문헌] Muller, Matthew P, et al. "Can routine laboratory tests discriminate between severe acute respiratory syndrome and other causes of community-acquired pneumonia?" Clinical Infectious Diseases 2005;40:1079-86.

Sharp Kiss