본문 바로가기
Data Analysis/Statistics with Python

[Statistics with Python] 06. 분류 알고리즘 평가 방법 - F1-score, ROC, AUC

by Dlearner 2019. 8. 17.
반응형

3절 Evaluation(평가) 방법

 

 

본 포스팅은 [위키북스- 파이썬 머신러닝 완벽 가이드]를 활용한 스터디 포스팅입니다.

[위키북스- 파이썬 머신러닝 완벽 가이드]

 

 

이번 포스팅에서는 저번 포스팅에 이어 분류 알고리즘을 평가 하는 다양한 방법 중 F1 score, ROC curve, AUC에 대해 알아보려 한다.

 

  • 정확도(Accuracy)
  • 오차 행렬(confusion matrix, 혼동 행렬)
  • 정밀도(Precision)와 재현율(Recall)
  • F1 score
  • ROC curve와 AUC

 

 

 

 

- F1 score

F1 스코어는 정밀도와 재현율을 결합한 지표이다.  정밀도와 재현율이 한쪽으로 치우치지 않는 수치를 나타낼 때 상대적으로 높은 값을 지닌다.

 

 

F1 스코어 계산법

F1 스코어 계산법은 아래 그림과 같다.

 

[ F1 score 구하는 식 ]

 

F1 스코어 예시

1. Precision = 0.9 / Recall = 0.1  => F1 score = 0.18
2. Precision = 0.5 / Recall = 0.5  => F1 score = 0.50
 - 두 Case에서는 정밀도와 재현율의 큰 차이가 없는 두번째 case의 F1 score가 성능이 좋다
 
F1 score는 위에서 설명한 임계값의 변화로 변동이 가능하다.

 

 

 

 

 

- ROC curve와 AUC

 

ROC 곡선이란?

ROC 곡선은 머신러닝의 이진 분류 모델의 예측 성능을 판단하는 지표이다.

ROC 곡선은 FPR(False Positive Rate)가 변할 때 TPR(True Positive Rate)이 어떻게 변하는지를 나타내는 곡선이다. 곡선을 그릴 때는 FPR을 X축으로, TPR을 Y축으로 하여 그래프를 그린다. 임계값을 통해 변경되는 민감도와 1-특이도에 의해 생성된다.

 

 

ROC Curve 도표

 

[ ROC / AUC 그림 ]

 

 

TPR(민감도) / TNR(특이도) 정의 및 특징

 

TPR(민감도)
 - ROC 곡선의 Y축으로 사용되는 지표이다.
 - TPR(True Positive Rate)은 4장에서 배운 재현율(Recall) 값과 동일하다.
 - 실제값 Positive가 정확히 예측 되어야 하는 수준을 나타낸다.
 - 질병을 예로 들면, 질병이 있는 사람은 질병이 있는 것으로 양성 판정 된 확률을 뜻한다.
 


TNR(특이도)
 - TNR(True Positive Rate)은 TPR(True Positive Rate)과 대응하는 지표이다.
 - 실제값 Negative가 정확히 예측 되어야 하는 수준을 나타낸다.
 - 질병을 예로 들면, 질병이 없는 사람은 질병이 없는 것으로 음성 판정 된 확률을 뜻한다.
 


FPR(False Positive Rate) = FP / (FP + TN) = 1-TNR = 1-특이도
 - FPR은 ROC 곡선을 그리는데 X축에 사용되는 지표이다.

 

 

 

AUC란?

ROC 곡선 아래의 넓이를 뜻한다.
랜덤수준의 데이터 셋에서는 AUC가 0.5이며, 1에 가까워 질수록 모델의 하이퍼 파라미터(임계값)가 좋은 성능을 낸다는 뜻이다.

 

 

반응형

댓글