datascience/ML

대표적인 머신러닝 분류성능 평가지표 총정리

patrck_jjh 2021. 6. 11. 05:20

 

 머신러닝의 분류성능 평가지표를 공부하며 상당히 헷갈리는 부분이 많았다. 실제 값과 예측 값, 그리고 positive와 negative의 위치가 변하면 TP,TN,FN,FP의 위치도 변하기 때문에 혼동행렬을 보고 바로 성능지표를 계산하기 어려울 때가 생긴다. 또한 다양한 성능지표가 존재하고 분야 별로 그 평가지표의 명칭이 다르기도 해서 용어의 의미가 정리가 잘 되지 않았다.

 

 먼저 머신러닝의 혼동행렬에서 도출되는 대표적인 분류성능 평가지표들의 개념과 그 관계들에 초점을 맞추어 정리해보고자 한다. 그리고 이러한 성능지표들은 통계학에서 배운 가설검정의 개념과 겹치는 부분이 있는데 이를 비교해보며 깊은 이해를 해볼 것이다.

 


 

1. 머신러닝의 대표적인 분류성능 평가지표 총정리

 

 

혼동행렬(Confusion Matrix)

 


 

1.1 Accuracy(정확도): 실제 데이터와 예측 데이터가 얼마나 같은지를 판단하는 지표

 

$$Accuracy=\frac{TP+TN}{TP+FN+FP+TN}$$

 

  • 분모에는 혼동행렬의 모든 값들의 합이, 분자에는 대각선에 있는 값들(옳게 예측한 데이터)이 적용
  • 데이터 class가 비대칭적 구조일 때의 정확도의 적용은 부적절하다.

 

 


 

1.2 Precision(정밀도): Positive로 예측한 대상 중에 실제 값이 Positive인 비율 의미 

 

$$Precision=\frac{TP}{TP+FP}$$

 

  • 분자에는 실제 Postive를 맞춘 값(TP)이, 분모에는 기계가 Positive로 예측한 데이터들(TP, FP)이 적용

 

1.3 Recall(재현율): 실제 Postive인 값들 중에 기계가 Positive로 예측한 비율 의미

 

$$Recall=\frac{TP}{TP+FN}$$

 

  • Precision과 같이 분자에는 TP가 들어가지만, 분모에는 실제 클래스가 Postivie인 값들(TP,FN)이 적용
  • 도메인에 따라 TPR(True Positive Rate) 혹은 민감도(Sensitivity)라고도 불린다

 

1.4 F1-Score: 데이터 class가 비대칭적 구조일 때 균형잡힌 분류성능을 도출

 

$$F1-Score=2\times\frac{1}{\frac{1}{Precision}+\frac{1}{Recall}}$$

 

  • Precision과 Recall의 조화평균을 통해 도출한다.

 


 

1.5 Fall-out:  실제로 Negative인 값을 Positive로 예측한 비율의미

 

$$Fall-out(FPR)=\frac{FP}{TN+FP}=1-Specificity $$  

 

  • FPR(False Positive Rate)라고도 불린다
  • FPR과 TPR은 비례하는 관계를 가진다, 

 

1.6 Specificity(특이도): 실제로 Nagative인 값을 Negative로 예측한 비율

 

$$Specificity=\frac{TN}{TN+FP}=1-FPR$$

 

  • TNR(True Negative Rate)라고도 불린다

 


 

1.7 ROC(Receiver Operating Characteristic) Curve: 우리말로 수신자 판단 곡선으로 불리고 FPR(1-Specificity)이 변할 때 TPR(=Sensitivity)가 어떻게 변하는지를 나타내는 곡선이다.

 

1.8 AUC(Area Under Curve):  ROC Curve의 밑 면적을 의미한다.

 

 ROC curve (출처: https://sumniya.tistory.com/26)

 

 

  • AUC 수치가 1에 가까울 수록 Positive(1)을 Positive(1)로 Negative(0)를 Negative(0)로 잘 예측함을 의미한다.
  • AUC 수치가 커지려면 FPR이 작은 상태에서 얼마나 큰 TPR을 얻을 수 있는지가 관건이다.

 

 

 

 

※성능지표별 관계

  • 비대칭적 class를 가지는 데이터에서 Accuracy(정확도)의 적용은 부적절하나 F1-Score는 이러한 정확도의 단점을 보완해주는 지표이다. 
  • Recall(재현율)과 Precision(정밀도)은 상호보완적 지표로서 하나를 강제로 높이면 다른 하나가 감소하는 trade-off관계를 가진다. 적절한 수준에서 임계값(critical point)설정하여 두 지표가 균형있게 높아야 좋은 모델이라고 할 수 있다. 두 지표의 값을 결합하여 산출하는 지표가 F1-Score이다.
  • Sensitivity(재현율)과 Specificity(특이도)는 질병 진단 분야에서 주로 쓰이며  두 지표가 균형있게 높아야 적절한 진단 방식이라고 할 수 있다. 두 지표를 결합한 지표가 AUC이다.
  • Recall(재현율)=Sensitivity(민감도)=TPR(True Positive Rate)
  • Specificity(특이도)=TNR(True Negative Rate)=1-FPR(False Positive Rate)
  • Fall-out=FPR(False Positive Rate)=1-Specificity

 

 

 

 

 


 

2. 통계학의 가설검정과 비교

 

제1종오류(Type 1 error): H0가 True인데 Reject(기각)함을 의미

  • $\alpha$-error라고도 불린다
  • 혼동행렬의 FP에 해당

제2종오류(Type 2 error): H0가 False인데 Not Reject(채택)함을 의미 

  • $\beta$-error라고도 불린다
  • 혼동행렬의 FN에 해당

 

 

출처: https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=mykepzzang&logNo=220885492245

 

 위 그림을 보면 주어진 상황의 임계값(critical point)에 따라서 제1종오류에 해당하는 $\alpha$와 $\beta$의 크기가 trade-off관계를 가짐을 알 수 있다. 즉 FP와 FN은 trade-off 관계를 가진다. 그러므로 적절한 임계값을 설정해서 $\alpha$와 $\beta$의 크기를 균형있게 낮춰줄 필요가 있다.

 

성능지표별 관계에서 Precision(정확도)과 Recall(재현율)는 trade-off관계를 가지고 적절한 임계점(critical point)를 설정함으로써 두 지표를 균형있게 맞춰줄 필요가 있다고 했다. $\alpha$는 FP에 해당하고 $\beta$는 FN에 해당한다고 했고 Precision과 Recall의 식을 보면 각각 $Precision=\frac{TP}{TP+FP}$, $Recall=\frac{TP}{TP+FN}$이다. 즉 Precision을 높히기 위해 FP를 낮추면 FN이 커져서 Recall이 낮아질 것이고 Recall을 높히려 FN을 낮추면 FP가 커져서 Precision이 낮아질 것이므로 결과적으로 Precision과 Recall도 trade-off관계를 지닌다. 가설검정의 경우와 마찬가지로 적절한 임계값을 설정해서 Precision과 Recall의 크기를 균형있게 높혀 좋은 모델을 만들 수 있을 것이다.

 

 

 

가설검정의 error와 혼동행렬의 error의 대응을 암기하기 위한 팁

 

 

 

 

<References>

  1. 파이썬 머신러닝 완벽 가이드(권철민, 위키북스)
  2. https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=mykepzzang&logNo=220885492245
  3. https://sumniya.tistory.com/26