ROC 곡선(Receiver Operating Characteristic Curve)

ROC 곡선(Receiver Operation Characteristic Curve:  수신자 조작 특성 곡선)은 모든 분류 임계값(Classification Thresholds)에서 분류 모델의 성능을 보여주는 그래프입니다. 이 곡선은 두 매개변수를 갖습니다.

  • TPR(True Positive Rate): 참 양성 비율(= 재현율)
    => TPR = TP / (TP + FN)

  • FPR(False Positive Rate): 허위 양성 
    => FPR = FP / (FP + TN)

ROC 곡선은 다양한 분류 임계값의 TPR과 FPR을 나타냅니다. 분류 임계값을 낮추면 더 많은 데이터가 양성으로 분류되어 거짓 양성(FP)과 참 양성(TP) 모두 증가하게 됩니다. 아래의 그림은 일반적인 ROC 곡선을 나타냅니다.

ROC 곡선은 FP 비율에 대한 TP의 비율을 나타내는 곡선으로 FP 비율값이 낮으면서 TP 비율값은 높은 것이 더 좋은 정확도를 보이는 좋은 모델입니다. 이에 따라 곡선이 위로 볼록할 수록 더 좋은 모델입니다.

(참고 링크: 조대협의 블로그 - 분류모델(Classification)의 성능 평가)



AUC(Area Under the ROC Curve: ROC 곡선의 아래 영역)

AUC는 ROC 곡선의 아래 영역을 의미하며 예측이 얼마나 잘 평가되었는지 측정 할 때 사용합니다. 아래의 그림과 같이 ROC 곡선의 아래 영역이 AUC가 됩니다.


AUC를 통해 모델이 임의 양성 예제를 임의 음성 예제보다 더 높게 평가할 확률을 구할 수 있습니다. 에를 들어 다음 예에서는 로지스틱 회귀 예측의 오름차순으로 왼쪽에서 오른쪽으로 정렬되어 있습니다.


여기서 AUC는 임의의 양성(초록색) 예제가 임의의 음성(빨간색) 예제의 오른쪽에 배치되는 확률을 나타냅니다.


AUC는 두 가지 이유로 유용하게 사용 될 수 있습니다.

  • AUC는 척도 불변(Scale-Invariant): 절대값이 아닌, 예측이 얼마나 잘 평가되었는지는 측정

  • AUC는 분류 임계값 불변(Classification-Threshold-Invariant): 어떤 분류 임계값이 선택되었는지와 무관하게 모델의 에측 품질을 측정



분류 모델을 평가하는 방법으로 정확도(Accuracy) 외에도 정밀도와 재현율 이란 것이 있습니다. 이에 대한 이해를 도울 수 있는 좋은 자료를 아래의 링크로 첨부하겠습니다. 한 번 읽어 보시는 걸 추천드립니다!


링크: 조대협의 블로그 - 분류모델(Classification)의 성능 평가


이 포스트에서는 Machine Learning Crash Course에서 다루는 정밀도와 재현율에 관한 내용을 정리하도록 하겠습니다.



정밀도(Precision)

정밀도(Precision): 양성으로 식별된 사례 중 실제로 양성이었던 사례의 비율은 어느 정도인가요?


정밀도는 다음과 같이 정의 됩니다.(거짓 양성이 없을 경우 모델의 정밀도는 1.0)



그럼 이번에는 이전 포스트에서 다룬 예시를 통해 정밀도를 계산해 보도록 하겠습니다.


이 모델에서는 어떤 종양이 악성일 것이라고 평가했을 때, 이 평가가 정확할 확률이 50%입니다.



재현율(Recall)

재현율(Recall): 실제 양성 중 정확히 양성이라고 식별된 사례의 비율은 어느 정도인가요?


재현율은 다음과 같이 정의 됩니다.(거짓음성이 나오지 않는 모델의 재현율은 1.0)



위의 예시 이미지에서 종양 분류 모델의 재현율을 계산해면 다음과 같습니다.



이 모델에서는 모든 악성 종양 중 11%만 정확하게 식별됩니다.



정밀도 및 재현율의 줄다리기

모델이 좋은 모델인지 평가하는데 정밀도와 재현율을 모두 검사해야 합니다. 정밀도와 재현율은 서로 상충하는 관계에 있는 경우가 많아, 보통 정밀도가 향상되면 재현율이 감소하게 됩니다.


스팸 메일을 분류하는 예제를 통해 정밀도와 재현율이 줄다리기를 하는 모습을 알아보도록 하겠습니다.


로지스틱 회귀 모델로 출력된 결과를 특정 지점을 분류 임계값으로 정해 스팸 메일을 분류하도록 하겠습니다. 위의 예시를 토대로 나타나는 이진 분류 표는 다음과 같습니다.



이 분류 임계값에서 산출되는 정밀도와 재현율은 다음 같습니다.




여기서 정밀도는 정확하게 분류된 스팸으로 신고된 이메일의 비율 말하며, 재현율은 정확하게 분류된 실제 스팸 이메일의 비율을 나타냅니다.

분류 임계값을 증가 시킬 경우


분류 임계값을 위와 같이 좀 더 높게 설정해 보도록 하겠습니다. 이 경우 이진 분류 표와 산출되는 정밀도와 재현율은 다음과 같습니다.





분류 임계값을 증가 시켰을 경우, 허위 양성(FP)의 수는 감소하지만 허위 음성(FN)의 수는 증가하게 됩니다. 이로 인해 정밀도는 증가하는 반면 재현율은 감소합니다.


분류 임계값을 감소 시킬 경우

분류 임계값을 위와 같이 낮게 설정해 보도록 하겠습니다. 이 경우 이진 분류 표와 산출되는 정밀도와 재현율은 다음과 같습니다.





분류 임계값을 감소 시켰을 경우, 허위 양성(FP)의 수는 증가하지만 허위 음성(FN)의 수는 감소하게 됩니다. 이로 인해 정밀도는 감소하는 반면 재현율은 증가합니다.


이렇게 분류 임계값에 따라 정밀도와 재현율은 줄다리기를 하는 것을 알 수 있습니다.

이번 포스트에서는 분류 작업에 로지스틱 회귀를 사용하는 방법과 분류 모델의 효과를 평가하는 방법에 대해서 알아보겠습니다.


로지스틱 회귀 모형에서 특정 이메일에 관해 스팸일 확률이 0.95가 반환 되었다면 이 이메일은 스팸일 가능성이 매우 높은 메일로 예측 할 수 있습니다. 이와 반대로 동일한 로지스틱 회귀 모형에서 예측 점수가 0.03인 이메일이라면 이 이메일은 스팸이 아닐 가능성이 높습니다.


그렇다면 만약 스팸이 확률이 0.6인 이메일은 어떻게 처리해야 할까요?


임계값(Threshold)

우리는 이렇게 애매한 값을 이분법으로 확실히 분류를 할 기준이 필요로 합니다. 이 기준을 바로 임계값(Threshold)라고 합니다. 로지스틱 회귀 값을 이진 카테고리에 매핑(Mapping)하려면 분류 임계값(Classification Threshold, 결정 임계값이라고도 함)을 정의해야 합니다.


임계값보다 높은 값은 '스팸'을 나타내고 임계값보다 낮은 값은 '스팸이 아님'을 나타냅니다. 분류 임계값은 항상 0.5여야 한다고 생각하기 쉽지만 임계값은 문제에 따라 달라지므로 값을 조정해야 합니다.



참(True)과 거짓(False), 양(Positive)과 음(Negative)

이솝 우화를 통해 발생할 수 있는 4가지 결과를 요약해 보도록 하겠습니다. 



위의 내용에서 다음과 같이 정의해 보겠습니다.

  • "늑대다"는 양성 클래스(Positive Class)라 하겠습니다.
  • "늑대가 없다"는 네거티브 클래스(Negative Class)라 하겠습니다.

'늑대 예측' 모델에서 발생할 수 있는 4가지 결과를 요약하면 다음과 같이 2X2 혼동행렬(Confusion Matrix)을 사용해 나타낼 수 있습니다. 


  • 참양성(True Positive)는 모델에서 Positive Class정확하게 평가하는 결과입니다. 마찬가지로 참음성(True Negative)은 모델에서 Negative Class정확하게 평가하는 결과입니다.
  • 거짓양성(False Positive)는 모델에서 Positive Class잘못 예측한 결과입니다. 거짓음성(False Negative)은 모델에서 Negative Class잘못 예측한 결과 입니다.


혼동행렬이란, 라벨과 모델의 분류 사이의 상관관계를 요약한 NxN 표입니다. 혼동행렬의 축 중 하나는 모델이 예측한 라벨이고, 다른 축은 실제 라벨입니다.


+ Recent posts