포스트

모델 평가하기

Loss와 Metric

  • Loss
    • 모델 학습시 train data를 바탕으로 계산됨
    • 모델의 파라미터 업데이트에 활용
  • Metric
    • 모델 학습 종료 후 test data를 바탕으로 계산됨
    • 모델 성능 평가에 활용
  • Discreate한 Accuracy는 Continuous한 Cross Entropy에 비해 파라미터가 학습되어야 할 방향을 정확하게 제시하지 못하므로 Accuracy는 Loss로 사용할 수 없다. 참고 Loss vs Accuracy

Confusion Matrix와 Precision/Recall

Actual \ predictedpositiveNegative
PositiveTrue PositiveFalse Negative
NegativeFalse PositiveTrue Negative
  • 정확도(Accuracy) : 전체 표본 중 정확히 분류된 표본의 수

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

Precision과 Recall

  • 정밀도(Precision): 양성으로 분류된 것 중 진짜 양성인 표본의 수

    • $Precision=\frac{TP}{TP+FP}$
    • 스팸메일 분류 모델
  • 재현율(Recall): 양성인 것들 중 양성으로 분류된 표본의 수

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

    • 암환자 예측 모델

F-score

  • Precision과 Recall의 조화평균이 되는 값으로, Precision과 Recall 둘 다 고려할 수 있음
  • $F_{\beta}=(1+\beta^2)\cdot \frac{precision\cdot recall}{(\beta^2 \cdot precision)+recall}$

Threchold의 변화에 따른 모델 성능

  • 학습시킨 모델의 출력이 일정 이상 기준선(Threchold)를 넘어가면 양성으로 분류한다.
  • Threchold의 변경을 고려하여 모델을 평가하는 방법으로 PR(Precision and Recall) 커브, ROC(Receiver Operating Characterisic) 커브가 있다.
  • Threchold를 변경하여 Precision, Recall 값을 조절할 수 있다.

Precision-Recall 커브

​ PR 커브는 Recall을 X축, Precision을 Y축에 놓고 Threshold 변화에 따른 두 값의 변화를 그래프로 그린 것이다.

1
2
3
4
5
6
7
from sklean.metrics import PrecisionRecallDisplay
import matplotlib.pyplot as plt

disp = PrecisionRecallDisplay.from_estimator(classifier, X_test, y_test)
disp.ax_.set_title(f'binary class Precision-Recall curve: AP = {disp.average_precision:0.2f}')

plt.show()

​ 출력된 그래프에서 Precision과 Recall 사이의 트레이드오프 관계를 확인할 수 있다. Threshold값에 따라 얻게 되는 Precision, Recall 값이 그래프에 표시되며, (1,1)에 근접할수록 이상적인 값이라고 볼 수 있다. Threshold값에 무관하게 모델의 전체적인 성능을 평가하는 방법으로, PR 커브 아래쪽 면적을 계산하는 AUC(Area Under Curve)값이 있다.

1
2
from sklearn.metrics import average_precision_score
average_precision = average_precision_score(y_test, y_score)

​ average_precision_score(AP) 수식의 특성을 살펴봤을 때, 의미상으로는 PR 커브의 아래쪽 면적인 PR AUC와 같다. 하지만 사이킷런 문서에서는 average_precision_score와 PR AUC가 구현 측면에서 약간 다르다고 설명하고 있다.

ROC 커브

​ ROC(Receiver Operating Characteristic Curve)는 수신자 조작 특성 곡선이라는 단어로 표현할 수 있다. ROC는 Confusion Matrix 수치를 활용해 분류기의 분류 능력을 그래프로 표현한다.

ROC 예시 곡선

​ ROC의 두 축은 TP Rate와 FP Rate이다.

  • $TPR(Sensitivity)=\frac{TP}{TP+FN}$
  • $FPR(1-Specificity)=\frac{FP}{TN+FP}$
  • FP Rate는 음성 샘플에 대한 Recall이라고도 볼 수 있다.

AUC 예시 영역

content img

​ 위 그림의 회색 영역이 ROC AUC로, 해당 영역의 넓이가 넓을수록 상대적으로 좋은 성능을 보여준다.

1
2
3
4
from sklearn.metrics import roc_curve, auc

fpr, tpr, _ = roc_curve(y_test, y_score)
roc_auc = auc(fpr,tpr)

img

​ 이런 그래프가 있다고 가정하자. 노란색 선은 ROC curve, 파란색 선은 (0,0)과 (1,1)같은 극단적인 값들을 모아놓은 경우이다. 의미 있는 분류기는 적어도 이 파란 점선보다는 위쪽에 그려져야 한다. ROC curve에서 Precision과 Recall이 전부 1이 되는 이상적인 모델은 (0,1)에 점이 찍힐 것이다. 따라서 그래프가 가급적 (0,1)에 가까이 그려질수록 우수한 분류기가 된다고 볼 수 있다.

다양한 머신러닝 모델의 평가척도

회귀 모델의 평가척도

​ 회귀 모델은 분류 모델에 비해 평가척도를 다루는 것이 간단하다. Loss함수가 테스트셋에 적용되면 Metric이 되는 경우가 대부분이기 때문이다. 그래서 회귀 모델의 경우 어떤 Loss가 적합한지 특성을 알아보는 것이 중요하다.

  • Mean Absolute Error(MAE)
    • 모델의 예측값과 실제값의 차이를 모두 더한 것의 평균
    • MSE보다 특이치에 강건하다
  • Mean Absolute Percentage Error(MAPE)
  • Mean Square Error(MSE)
  • Mean Percentage Error(MPE)
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.