모형 성능 평가 지표

회귀(regression) 평가 지표

  • 회귀의 평가를 위한 지표는 실제 값과 회귀 예측값의 차이 값을 기반으로 한 지표가 중심이다. 실제값과 예측값의 차이를 그냥 더하면 잔차의 합은 0이므로 지표로 쓸 수 없다. 이 때문에 잔차의 절대값 평균이나 제곱, 또는 제곱한 뒤 다시 루트를 씌운 평균값을 성능 지표로 사용한다.
평가 지표 수식
MAE(Mean Absolute Error) $MAE = \frac{1}{n} \sum_{i=1}^{n} \lvert Y_{i} - \hat{Y_{i}} \rvert$
MSE(Mean Squared Error) $MSE = \frac{1}{n} \sum_{i=1}^{n} (Y_{i} - \hat{Y_{i}})$
RMSE(Root Mean Squared Error) $RMSE = $\sqrt{\frac{1}{n} \sum_{i=1}^{n} (Y_{i} - \hat{Y_{i}})^{2}}$
$R^{2}$ $R^{2} = \frac{예측값의 Variance}{실제값 Variance} = \frac{SSR}{SST}$

MSE

MAPE

결정계수

수정된 결정계수

  • 이전에도 언급했던 것처럼 변수가 추가된다면 당연히 SSR의 수치가 높아지기 때문에 $R^{2}$값은 올라갈 수 밖에 없다. 그러므로 변수 수에 영향을 받지 않고 서로 비교할 수 있게끔 만들어 준 것이 수정된 결정계수이다.

AIC

BIC

분류(classification) 성능 지표

Accuarcy

Recall, Precision, Specificity

  • 특히 imbalanced data에서 모형의 성능을 정확도 하나만을 가지고 성능을 평가한다면, 예를 들어, 100개중 90개는 세모고 10개는 네모라고 할 때 100개 모두 세모라고 예측해버리게 되면 정확도는 90%이므로 좋은 성능 지표라고 할 수 없다. 그러므로 imbalanced data에서의 성능 지표는 정확도(accuarcy) 보다는 정밀도(precision), 재현율(Recall)를 더 선호한다.

  • 정밀도(precision)와 재현율(recall) 지표 중에 분류 모델의 업무 특성에 따라서 특정 평가 지표가 더 중요한 지표로 간주 될 수 있다. 재현율(recall)이 중요 지표인 경우는 실제 Positive 양성 데이터를 Negative로 잘못 판단하게 되면 업무상 큰 영향이 발생하는 경우(FN이 Critical한 경우)이다. 예를 들어 암 판단 모형은 재현율(recall)이 훨씬 중요한 지표이다. 왜냐하면 실제 Positive인 암 환자를 Positive 양성이 아닌 Negative 음성으로 잘못 판단했을 경우 오류의 대가가 생명을 앗아갈 정도로 심각하기 때문이다. 반면에 실제 Negative인 건강한 환자를 암 환자인 Positive로 예측한 경우면 다시 한번 재검사를 하는 수준의 비용이 소모될 것이다. 또 다른 예로는, 금융 사기 적발 모델을 들 수 있다. 물론 고객에게 금융 사기 혐의를 잘못 씌우면 문제가 될 수 있기에 정밀도(Precision)도 중요 평가 지표지만, 업무적인 특성을 고려하면 재현율(Recall)이 상대적으로 더 중요한 지표입니다. 보통은 재현율(Recall)이 정밀도(Precision)보다 상대적으로 중요한 업무가 많지만, 정밀도가 더 중요한 지표인 경우도 있다. 예를 들어, 스팸메일 여부를 판단하는 모형의 경우 실제 Positive인 스팸 메일을 Negative인 일반 메일로 분류하더라도 사용자가 불편함을 느끼는 정도이지만, 실제 Negative인 일반 메일을 Positive인 스팸메일로 분류할 경우에는 메일을 아예 받지 못하게 돼 업무에 차질이 생긴다. 정밀도(Precision)이 상대적으로 더 중요한 지표인 경우는 실제 Negative 음성인 데이터 예측을 Positive 양성으로 잘못 판단하게 되면 업무상 큰 영향이 발생하는 경우(FP가 Critical한 경우)이다.

  • 재현율(Recall)과 정밀도(Precision) 모두 TP를 높이는 데 동일하게 초점을 맞추지만, 재현율(Recall)은 FN를 낮추는데, 정밀도(Precision)는 FP를 낮추는데 초점을 맞춘다. 이 같은 특성 때문에 재현율(Recall)과 정밀도(Precision)은 서로 보완적인 지표로 분류의 성능을 평가하는데 적용된다. 가장 좋은 성능 평가는 재현율(Recall)과 정밀도(Precision) 모두 높은 수치를 얻는 것이다. 반면에 둘 중 어느 한 평가 지표만 매우 높고, 다른 수치는 매우 낮은 결과를 나타내는 경우에는 바람직하지 않다.

정밀도(Precision)/ 재현율(Recall) Trade-off

  • 분류하려는 업무의 특성상 정밀도(Precision) 또는 재현율(Recall)이 특별히 강조돼야 할 경우 분류의 결정 임계값(Threshold)을 조정해 정밀도(Precision) 또는 재현율(Recall)의 수치를 높일 수 있다. 하지만 정밀도(Precision)와 재현율(Recall)은 상호 보완적인 평가 지표이기 때문에 어느 한쪽을 강제로 높이면 다른 하나의 수치는 떨어지기 쉽다. 이를 정밀도(Precision)/재현율(Recall)의 Trade-off라고 부른다.

  • scikit-learn에서 각각의 분류모델들은 predict_proba의 결과를 Threshold(보통은 0.5)보다 같거나 작으면 0값으로, 크면 1값으로 변환해 반환하는 Binarizer 클래스를 사용하여 predict의 결과를 계산하여 반환해 준다. 만약 임계값을 낮추면 재현율(Recall)값이 올라가고 정밀도(Precision)가 떨어질 것이다. 그 이유는 임계값은 Positive 예측값을 결정하는 확률의 기준이 되는데 임계값을 0.5에서 0.4로 낮추면 그만큼 Positive 예측을 더 너그럽게 하기 떄문에 True로 예측하는 값이 많아지게 된다. Positive 예측을 많이 하다보니 실제 양성을 음성으로 예측하는 횟수가 상대적으로 줄어들기 때문이다.

정밀도(Precision)과 재현율(Recall)의 맹점

  • Positive 예측의 임계값을 변경함에 따라 정밀도(Precision)와 재현율(Recall)의 수치가 변경된다. 임계값의 이러한 변경은 업무 환경에 맞게 두 개의 수치를 상호 보완할 수 있는 수준에서 적용돼야 한다. 그렇지 않고 단 하나의 성능 지표 수치를 높이기 위한 수단으로 사용돼서는 안된다. 각각의 지표를 극단적으로 높일 수는 있고, 정밀도(Precision) 또는 재현율(Recall) 중 하나에 상대적인 중요도를 부여해 각 예측 상황에 맞는 분류 알고리즘을 튜닝할 수 있지만, 그렇다고 정밀도(Precision)/재현율(Recall) 중 하나에 상대적인 중요도를 부여해 각 예측 상황에 맞는 분류 알고리즘을 튜닝할 수 있지만, 그렇다고 정밀도(Precision)/재현율(Recall) 하나만 강조하는 상황이 돼서는 안된다.
  • F1-score정밀도(Precision)와 재현율(Recall)을 결합한 지표로 어느 한쪽으로 치우치지 않는 수치를 나타낼 때 상대적으로 높은 값을 가진다. 여기서 또 한가지 주의할 점은 정밀도(Precision)와 재현율(Recall)의 조화평균값이라 해서 무조건 F1-score가 높은 것이 좋은 모형은 아니라는 점이다. 정밀도(Precision)과 재현율(Recall) 그리고 F1-score 모두 구한 후 비교하여 적합한 모형을 선정하는 것이 중요하다!

G-maen, F1-score

  • ROC Curve와 이에 기반한 AUC score이진 분류의 예측 성능 측정에서 중요하게 사용되는 지표이다. ROC Curve(Receiver Operation Characteristic Curve)는 일반적으로 의학분야에서 많이 사용되지만, 머신 러닝의 이진 분류 모델의 예측 성능을 판단하는 중요한 지표이다. ROC CurveFRR(False Positive Rate)이 변할 때 TPR(True Positive Rate)이 어떻게 변하는지를 나타내는 곡선이다. FPR을 X축으로 하고 FPR을 0부터 1까지 변경하면서, TPR을 Y축으로 잡아 FPR에 변화에 따른 TPR의 변화가 곡선 형태로 나타난다. 분류결정 임계값은 Positive 에측값을 결정하는 값이므로 FPR을 0으로 만들려면 1로 지정하면 된다. TPR은 재현율(Recall)과 동일하며, 민감도라고도 불린다. 가운데 직선은 ROC Curve의 최저값(AUC는 0.5)이다. ROC 곡선이 가운데 직선에 가까울수록 성능이 떨어지는 것이며, 멀어질수록 성능이 뛰어나다는 것이다.

  • 일반적으로 ROC Curve 자체는 FPR과 TPR의 변화값을 보는 데 이용하며 분류의 성능 지표로 사용되는 것은 ROC Curve 면적에 기반한 AUC 값으로 결정한다. AUC(Area Under Curve)값은 ROC Curve 밑의 면적을 구한 것으로서 일반적으로 1에 가까울수록 좋은 수치이다. AUC 수치가 커지려면 FPR이 작음 상태에서 얼마나 큰 TPR을 얻을 수 있느냐가 관건이다. 가운데 직선을 랜덤 수준의(동전 던지기 수준) 이진 분류 AUC 값으로 0.5이다. 따라서 보통의 분류는 0.5이상의 AUC값을 가지낟.

ROC, AUC