research notes

성능평가지표 (Evaluation Metric) 본문

머신러닝/ML basic

성능평가지표 (Evaluation Metric)

forest62590 2022. 1. 30. 22:58
728x90

- 일반적으로 모델이 분류냐 회귀냐에 따라 성능평가지표는 여러 종류로 나뉜다.

- 회귀의 경우 대부분 실제값과 예측값의 오차평균에 기반 ex) MAE, MSE 등

- 분류의 경우 회귀와는 다른 성능평가지표가 사용된다. 

- ex) 정확도(Accuracy), 오차행렬(Confusion Matrix), 정밀도(Precision), 재현율(Recall), F1-Score, ROC-AUC

1. 정확도

- 정확도(Accuracy) = 실제 데이터와 예측결과가 동일한 데이터 건수 / 전체 예측 데이터 건수 = (TN+TP) / (TN+FP+FN+TP)

- 정확도 평가 지표는 불균형한 레이블 데이터 세트에서는 성능 수치로 사용돼서는 안 된다. 즉, 정확도는 불균형한(imblanced) 레이블 값 분포에서 ML 모델의 성능을 판단할 경우 적합한 평가지표가 아니다.

 

예) 100개의 데이터가 있고 이 중에 90개의 데이터 레이블이 0, 단 10개의 데이터 레이블이 1이라고 한다면 무조건 0으로 예측결과를 반환하는 ML 모델의 경우 정확도가 90%가 된다.

2. 오차행렬 (Confusion Matrix)

  • TN, FP, FN, TP 기호가 의미하는 것은 앞 문자 True/False는 예측값과 실제값이 '같은가/틀린가'를 의미
  • 뒤문자 Negative, Positive는 예측결과 값이 부정(0) 또는 긍정(1)을 의미한다.
- TN는 예측값을 Negative 값 0으로 예측했고 실제값 역시 Negative 값 0
- FP는 예측값을 Positive 값 1로 예측했는데 실제값은 Negative 값 0
- FN은 예측값을 Negative 값 0으로 예측했는데 실제값은 Positive 값 1
- TP는 예측값을 Positive 값 1로 예측했는데 실제값 역시 Positive 값 1

3. 정밀도와 재현율

- 정밀도(Precision) = TP/(FP+TP)

  • 예측을 Positive로 한 대상 중에 예측과 실제 값이 Positive로 일치한 데이터의 비율
  • 정밀도가 상대적으로 더 중요한 지표인 경우는 실제 Negative 음성인 데이터 예측을 Positive 양성으로 잘못 판단하게 되면 업무상 큰 영향이 발생하는 경우 (ex. 실제 Negative인 일반 메일을 Positive인 스팸 메일로 분류할 경우)

- 재현율(Recall, 민감도(Sensitivity), TPR(True Positive Rate)) = TP/(FN+TP)

  • 실제값이 Positive인 대상 중에 예측과 실제 값이 Positive로 일치한 데이터의 비율
  • 재현율이 상대적으로 더 중요한 지표인 경우는 실제 Positive 양성인 데이터 예측을 Negative로 잘못 판단하게 되면 업무상 큰 영향이 발생하는 경우 (ex. 실제 Positive인 암 환자를 양성이 아닌 Negative 음성으로 잘못 판단했을 경우)

- 재현율과 정밀도 모두 TP를 높이는데 동일하게 초점을 맞추지만 재현율은 FN(실제 Positive, 예측 Negative)를 낮추는데, 정밀도는 FP를 낮추는데 초점을 맞춘다

 

- 가장 좋은 성능평가는 재현율과 정밀도 모두 높은 수치를 얻는 것이며, 둘 중 어느 한 평가 지표만 매우 높고 다른 수치는 매우 낮은 결과를 나타내는 경우는 바람직하지 않다.

4. 정밀도-재현율 트레이드 오프

- 분류하려는 업무의 특성상 정밀도 또는 재현율이 특별히 강조돼야 할 경우 분류의 결정 임계값(Threshold)을 조정해 정밀도 또는 재현율의 수치를 높일 수 있음

- 그러나 정밀도와 재현율은 상호 보완적인 평가 지표이기 때문에 어느 한쪽을 강제로 높이면 다른 하나의 수치는 떨어지기 쉽다.(Trade-off)

- Positive 예측의 임계값을 변경함에 따라 정밀도와 재현율의 수치가 변경 (일반적으로 이진분류는 0.5로 Positive/Negative 결정)

- 정밀도와 재현율 중 하나만 스코어가 좋고 다른 하나는 스코어가 나쁜 분류는 성능이 좋지 않은 분류로 간주할 수 있다.

따라서, 정밀도와 재현율의 수치가 적절하게 조합돼 분류의 종합적인 성능 평가에 사용될 수 있는 평가 지표가 필요하다. (→ F1-Score)

5. F1-Score

- 정밀도와 재현율의 수치가 적절하게 조합돼 분류의 종합적인 성능평가에 사용될 수 있는 평가지표가 필요

- F1-Score는 정밀도와 재현율을 결합한 지표

- F1-Score는 정밀도와 재현율이 어느 한 쪽으로 치우치지 않는 수치를 나타낼 때 상대적으로 높은 값을 가진다.

6. ROC-AUC

- ROC 곡선은 FPR(False Positive Rate)이 변할 때 TPR(True Positive Rate)이 어떻게 변하는지를 나타내는 곡선이다. FPR을 X축으로, TPR을 Y 축으로 잡으면 FPR의 변화에 따른 TPR의 변화가 곡선 형태로 나타남

- 민감도(TPR)는 실제값 Positive(양성)가 정확히 예측돼야 하는 수준을 나타낸다(질병이 있는 사람은 질병이 있는 것으로 양성 판정)

- 특이성(Specificity, True Negative Rate(TNR))은 실제값 Nagative(음성)가 정확히 예측돼야 하는 수준을 나타낸다(질병이 없는 건강한 사람은 질병이 없는 것으로 음성 판정)

TNR = TN / (FP + TN)
FPR = FP / (FP + TN) = 1 - TNR (특이성)

- ROC 커브는 이진 분류기의 성능을 표현하는 커브이며 가능한 모든 threshold에 대해 FPR과 TPR의 비율을 표현한 것이다. 즉, ROC 곡선 자체는 FPR과 TPR의 변화 값을 보는 데 이용된다.

- 분류의 성능 지표는 ROC 곡선 면적에 기반한 AUC(Area Under Curve) 값으로 결정되고, 최종적으로는 ROC 커브가 좌상단에 붙어있는 것이 더 좋은 이진분류기를 뜻한다.

References:

[1] https://rueki.tistory.com/66

[2] 파이썬 머신러닝 완벽가이드, 권철민, 위키북스

[3] https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html

[4] https://angeloyeo.github.io/2020/08/05/ROC.html

728x90

'머신러닝 > ML basic' 카테고리의 다른 글

K-평균 알고리즘(K-Means Clustering)  (0) 2022.02.11
Validation data set는 모델 학습에 사용이 되는가?  (0) 2022.02.05
규제 (Regularization)  (0) 2022.01.31
사이킷런 정리  (0) 2022.01.28
Numpy/Pandas 정리  (0) 2022.01.28
Comments