본문 바로가기

R programming

ROC 커브와 AUC (를 이해하기 전 민감도와 특이도 이해하기)

반응형

일부내용은 ADsP 시험 공부할 때도 나왔던 내용이다.

오분류표를 살펴보면 다음표와 같다.

 

  predict
Positive Negative
Actual  Positive TP FN
Negative FP TN

ROC커브를 이해하기 위해서는 
민감도와 특이도를 알아야한다.

민감도(Recall or Sensitivity) : TP/(TP+FN)-실제로 P인 것들 중 P로 예측한 비율

특이도(Specificity): TN/(FP+TN): 실제로 N인 것들 중 N으로 예측한 비율

 

ROC 그래프는 X축에  '1-특이도',

                   Y축에  '민감도' 를 두어 두 평가값의 관계를 모형으로 나타낸다.

1-특이도와 민감도는 서로 반비례의 관계를 가진다.
어느 한 쪽을 올리려고 하면, 다른 한 쪽은 떨어진다.
예컨대 모든 것을 Positive라고 예측한다면, 민감도는 1에 가까워지는 반면, 1-특이도(위양성률)은 0에 가까워진다.

반대로 예측을 전부 Negative라고 한다면, '1-특이도'(위양성률) 값은 1에 가까워진다. 

 

따라서 두개의 값을 적절하게 타협을 해야한다.
ROC는 이 두개의 값을 모형으로 평가해준다. 그리고 그래프의 밑부분 면적이 넓을수록 좋은 모형으로 평가된다.

AUC는 ROC 그래프의 밑부분 면적을 측정한다.

AUC가 1이라는 것은 ROC커브의 모양이 사각형모양임을 나타내고,

AUC가 0.5라는 것은 ROC커브가 Y=X 형태의 일차함수 모양임을 알 수 있다.

AUC가 1에 가까울수록 좋은 모형이고, 실제 AUC는 0.5와 1 사이에 존재한다.
AUC의 값이 같더라도, ROC커브의 모양은 다를 수 있다. 그렇기 때문에 ROC커브의 모양을 확인하고

적절한 모델을 선택하는 것도 중요하다.

 

library(pROC)

a<-ROC( , )
plot(a)
auc(a)

 ROC그래프를 그리고 AUC를 평가하기 위해서는 pROC라는 라이브러리를 불러오고,

위와 같은 코드를 수행할 수 있다. 

반응형