본문 바로가기
AI & Optimization/Machine Learning

[ML] 분류 성능 지표: Precision(정밀도), Recall(재현율), F1-score

by SIES 2023. 1. 21.
반응형

분류 모델이 얼마나 잘 학습되었는지에 대한 성능 지표는 Accuracy (정확도), Precision (정밀도), Recall (재현율) 등이 있습니다. 각각의 성능 지표 전에 confusion matrix 먼저 알아보도록 하겠습니다.

 

1) Confusion Matrix

Confusion matrix는 실제 클래스와 예측된 클래스의 매칭을 이용하여 분류 모델을 평가하는 도구입니다. 이진 분류 문제에서 실제 클래스는 Positive/Negative로 나누어져 있고 분류 모델은 샘플들을 Positive/Negative로 분류합니다.

 

Figure 1. Confusion matrix

따라서 [그림 1]처럼 TP (True Positive), FP (False Positive), FN (False Negative), TN (True Negative)의 네가지 경우가 발생할 수 있습니다. 참고로 통계학에서는 FP을 Type I error (= False alarm)이라고 하고, FN은 Type II error (= Missed detection)이라고도 합니다.

 

2) Accuracy, Precision, Recall이란?

■ Accuracy (정확도)

Figure 2. Accuracy

Accuracy (정확도)란 판별한 전체 샘플 중 TP와 TN의 비율입니다. 분류 모델을 평가하기에 가장 단순한 지표이지만, 불균형한 클래스를 가진 데이터셋을 평가하기는 어렵다는 단점이 있습니다.

 

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

 

예를 들어, Positive와 Negative의 비율이 2:8로 불균형한 클래스를 가지는 데이터셋에서는 모든 예측을 Negative로 해버리는 엉터리 분류기의 정확도도 80%로 측정되기 때문입니다. 따라서 클래스 불균형을 고려하기 위해서는 아래의 다른 성능 평가 지표를 주로 사용합니다.

 

■ Precision (정밀도)

Figure 3. Precision

Precision (정밀도)란 분류 모델이 Positive로 판정한 것 중, 실제로 Positive인 샘플의 비율입니다. Precision은 다른 용어로 PPV (Positive Predictive Value)라고도 합니다. Precision은 Positive로 검출된 결과가 얼마나 정확한지를 나타냅니다. 

 

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

 

■ Recall (재현율)

Figure 4. Recall

Recall (재현율)이란 실제 Positive 샘플 중 분류 모델이 Positive로 판정한 비율입니다. Recall은 TPR (True Positive Rate, 양성률) 또는 통계학에서는 Sensitivity (민감도)라고도 합니다. Recall은 분류 모델이 실제 Positive 클래스를 얼마나 빠지지 않고 잘 잡아내는지를 나타냅니다.

 

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

 

3) Precision-Recall의 관계

■ F1-score

분류 모델의 Precision과 Recall 성능을 동시에 고려하기 위해서 F1-score이라는 지표를 사용할 수 있습니다. F1-score는 Precision과 Recall의 조화평균으로 정의됩니다. F1-score는 0과 1사이 값이며 1에 가까울수록 분류 성능이 좋음을 나타냅니다.

 

$$ \text{F1-score}=2\times\frac{\text{Precision}\times \text{Recall}}{\text{Precision}+\text{Recall}} $$

 

■ Precision-Recall Curve

Precision과 Recall은 trade-off 관계에 있어 Precision이 올라가면 Recall이 떨어지고, Recall이 올라가면 Precision이 떨어집니다. [그림 5]와 같이 분류 모델의 decision threshold를 통해 trade-off 관계를 조절할 수 있습니다. Decision threshold란 분류 모델의 결과인 [0, 1] 사이의 값을 positive 또는 negative로 결정하는 경계를 의미합니다. 

 

Figure 5. Precision과 recall의 trade-off

Precision과 Recall의 trade-off 관계는 [그림 6]의 왼쪽 그래프와 같이 Precision-recall curve를 통해 볼 수 있습니다. Precision-recall curve 위의 한 점은 특정 threshold에 해당하는 Precision과 Recall 값을 의미합니다. 또한 [그림 6]의 오른쪽 그래프와 같이 Precision과 Recall 값을 threshold 변화에 따른 그래프로 나타낼 수도 있습니다.

 

Figure 6. Precision-recall curve와 threshold에 따른 Recall과 Precision 그래프

 

■ AP (Average Precision)

Precision-recall curve는 분류 모델의 전반적인 성능을 파악하기는 쉬우나, 다른 두 분류 모델 간의 정량적 성능 비교가 어렵습니다. 따라서 Precision-recall curve에서 그래프 아래쪽 면적을 AP (Average Precision)으로 정의합니다. 일반적으로 AP를 쉽게 계산하기 위해, Precision-recall curve를 interpolation하여 단조 감소하는 형태로 변환 후에 면적을 계산합니다.

 

$$ mAP = \frac{1}{K}\sum_{i=1}^{K}{AP_i} $$

 

Multi-class 분류 모델에서는 각 클래스의 AP를 평균한 mAP(mean Average Precision)를 정의할 수 있으며, 컴퓨터 비전 분야의 object detection 알고리즘 평가에 많이 사용됩니다.

 

4) 그 외 분류 성능 지표 

Confusion matrix에서는 Precision과 Recall 이외에도 다른 분류 성능 지표들을 정의할 수 있습니다.

 

· TNR (True Negative Rate):   $ \text{TNR}=\frac{TN}{FP+TN} $

TNR은 실제 Negative 샘플 중 분류 모델이 Negative로 판정한 비율입니다. TNR은 specificity (특이도) 또는 selectivity이라고도 합니다. Recall이 실제 Positive 샘플에 대한 Positive 판정 비율을 나타내므로 이와 반대 개념이라고 이해할 수 있습니다.

 

· FPR (False Positive Rate):   $ \text{FPR}=1-\text{TNR}=\frac{FP}{FP+TN} $

FPR (위양성률)이란 실제 Negative 샘플 중 분류 모델이 Positive로 판정한 비율입니다. FPR은 Fall-out이라고도 하며 1-TNR로 계산할 수 있습니다.

 

■ ROC Curve

ROC (receiver operating characteristic) curve는 threshold에 따른 TPR(=Recall)과 FPR(=Fall-out)을 나타낸 그래프입니다. 대각선을 기준으로 좌상단으로 붙어있는 ROC curve일수록 좋은 분류 성능을 나타냅니다.

 

Figure 7. ROC curve

Precision-recall curve와 마찬가지로 ROC curve의 면적을 계산한 ROC-AUC (Area Under the Curve)를 통해 ROC curve를 정량적으로 나타낼 수 있습니다.

 

· 언제 Precision-recall curve와 ROC curve를 써야할까?

ROC curve는 클래스 불균형한 데이터에서의 모델 성능 저하를 반영하기 힘들다는 단점이 있습니다. 따라서 ROC curve는 데이터셋을 고려하지 않는 일반적인 상황에서의 분류 모델 성능을 확인할 때 사용할 수 있습니다. 반면 Precision-recall curve는 클래스 불균형이 심한 데이터셋을 통해 분류 모델 성능을 분석할 때 사용할 수 있습니다.

 

References

[1] https://en.wikipedia.org/wiki/Confusion_matrix

[2] https://en.wikipedia.org/wiki/Receiver_operating_characteristic

[3] https://cosmiccoding.com.au/tutorials/pr_vs_roc_curves


오타나 잘못된 부분 있으면 댓글 부탁드립니다. 도움이 되셨다면 공감 눌러 주시면 감사하겠습니다 :)

반응형

댓글