ROC 커브를 사용하면 두 개의 모델을 비교할 수 있다. 그림 9-20에 보인 모델 (A)와 모델 (B)를 보자. 모델 (B)는 모델 (A)에 비해 FP Rate 대비 TP Rate가 컸다. 따라서 모델 (B)가 모델 (A)보다 우수하다. 일반적으로는 ROC 커브를 그린 뒤 좌측 상단에 위치한 커브가 더 우수한 것으로 보면 된다.
이러한 이유로 ROC 커브를 그린 뒤 그 아래의 면적을 AUCArea Under the Curve라 하여 모델 간의 비교에 사용한다. 그림 9-21에 AUC를 보였다.
여기서는 ROCR 패키지를 사용하여 ROC 커브를 그리는 방법에 대해 살펴본다. 다음은 ROC 커브 관련 함수를 정리한 것이다.
ROCR::prediction : prediction 객체를 생성한다. |
ROCR::prediction( predictions, # 예측값 lables # 실제 값 ) 반환 값은 ROCR 패키지에서 사용하는 prediction 객체다. |
ROCR::performance : prediction 객체로부터 performance 객체를 생성한다. |
ROCR::performance( prediction.obj, # prediction 객체 # 성능 평가 메트릭. acc(Accuracy), fpr(FP Rate), tpr(TP Rate), rec(recall) 등을 지정할 수 있다. # 전체 목록은 도움말 ?performance를 참고하기 바란다. measure, # 두 번째 성능 평가 메트릭. x.measure를 지정하면 X 축은 x.measure, Y 축은 measure에 지정한 # 메트릭으로 그래프를 그린다. x.measure를 지정하지 않으면 기본값 "cutoff"가 사용된다. # cutoff는 표 9-15를 설명하면서 사용한 기준값에 해당한다. 즉, 서로 다른 기준값에 대한 # measure의 그래프가 그려지게 된다. x.measure="cutoff", ... # 성능 메트릭에 추가로 넘겨줄 인자들 ) 반환 값은 performance 객체로, plot( )을 사용해 그래프로 나타낼 수 있다. |