머신러닝 평가지표 정리
머신러닝에서 등장하는 평가지표는 여러 개가 있고, ML 직무 면접에서도 자주 물어보는 질문 중 하나이다. 하지만 물어볼 때마다 AUC ROC Curve 나 precision, recall 에 대해서 까먹는 경우가 많아 이번에 정리하고 넘어가보려고 한다. 머신러닝에서 사용하는 평가지표는 크게 분류(Classification)문제인지 회귀(Regression) 문제인지에 따라 구분될 수 있다.
1. 분류(classification) 평가지표
분류에서 사용되는 평가지표를 정확하게 이해하기 위해서 선행되어야 하는 개념이 있다. 바로, 혼동 행렬이라고 불리는 confusion matrix이다. 이름 때문인지는 몰라도 나에게 상당한 혼동을 주고 있는 행렬이다. 혼동행렬은 주로 참 또는 거짓을 분류해내는 문제에서 사용이 되고 있으며, 크게 4가지로 분류할 수 있다.
- True Positive (TP) : 실제로 Positive라고 예측했는데 True (예측이 맞음)
- False Positive (FP) : 실제로 Positive라고 예측했는데 False (예측이 틀림)
- True Negative (TN) : 실제로 Negative라고 예측했는데 True (예측이 맞음)
- False Negative (FN) : 실제로 Negative라고 예측했는데 False (예측이 틀림)
분류에서 등장하는 평가지표는 위 4가지 요소를 사용하여 모델의 성능을 측정한다. 이때, 모델이 맞추고자 하는 각 task에 따라 적절한 평가지표를 선택하는 것이 매우 중요하다.
1.1. 정확도 (Accuracy)
정확도는 내가 예측한 모든 것들 중, 정답인 것의 비율을 말한다. 가장 쉽게 떠올릴 수 있는 평가지표이며, 위 혼동행렬에서 수식과 그림으로 나타내보면 아래와 같다.
$$ \text{Accuracy} = \frac{\text{TP + TN}}{\text{TP + FP + TN + FN}} $$
1.2. 정밀도 (Precision)
정밀도는 내가 정답이라고 예측한 것들 중 실제로 정답인 것의 비율을 말한다. 내가 정답이라고 예측했다는 것은 positive 라는 단어가 포함되어 있어야 하는 말과 같고, 그것이 정답인 것은 True positive를 말한다. 따라서 수식과 그림으로 다시 보면 아래와 같다.
$$ \text{Precision} = \frac{\text{TP}}{\text{TP + FP}} $$
1.3. 민감도(Sensitivity, Recall, True Positive Rate)
민감도는 실제 정답인 것들 중 내가 정답이라고 예측한 것이 참이되는 비율을 말한다. Precision과 말이 비슷하지만, 말의 앞과 뒤가 바뀌어 있는 것에 차이가 있다. 따라서, 실제로 정답인 것은 True Positive와 False Negative이며 여기에 맞게 식을 작성하면 아래와 같다.
$$ \text{Precision} = \frac{\text{TP}}{\text{TP + FN}} $$
1.4. F1-Score
F1 스코어 평가지표는 precision과 recall의 조화평균으로 검증 데이터셋의 정답 분포에 불균형이 심한 경우 사용된다. 정밀도(Precision)이 아무리 높더라도 recall이 매우 낮으면 이는 좋은 모델이라고 평가받기 어려울 수 있는데, 이런 경우 조화평균을 적용하게 되면 두 평가지표 모두 고려할 수 있게 된다.
$$ \text{F1-Score} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} $$
1.5. AUC & ROC Curve
먼저 ROC 곡선은 이진 분류모델의 TPR(True Positive Rate, recall)과 FPR(False Positive Rate, 1 - recall)의 변화를 나타내고 있다. AUC는 이런 ROC 곡선 아래의 면적으로, 모델의 성능을 종합적으로 평가하는데 사용된다. AUC의 값이 1에 가까울 수록 모델의 성능이 좋다는 것을 의미한다. 일반적으로 TPR이 올라가면 FPR이 떨어지는 모습을 보이고 있다.
2. 회귀 (Regression) 평가지표
회귀 평가지표는 실수 값으로 예측한 값과 정답 값 사이의 차이를 측정한 값을 말한다. 실제 데이터셋은 1개의 데이터가 아닌 훨씬 많은 데이터를 포함하고 있기 때문에, 각 차이를 평균내는 방식으로 평가지표를 사용하게 된다.
2.1. MSE (Mean Squared Error)
평균 제곱 오차는 각 데이터의 예측 값($\hat{y}$)와 정답 값($y$) 사이의 차이를 제곱하여 평균낸 것을 말한다.
$$ \text{MSE} = \frac{1}{N} \sum (\hat{y} - y)^2 $$
2.2. MAE (Mean Absolute Error)
MSE와 거의 유사하지만 제곱하지 않고 절댓값으로 각 오차를 계산한다는 차이가 있다.
$$ \text{MAE} = \frac{1}{N} \sum \vert \hat{y} - y \vert $$
2.3. RMSE (Rooted Mean Squared Error)
MSE에 제곱근을 씌워 실제 데이터사이의 차이와 같은 단위로 측정이 가능하다는 특징이 있으며 회귀에서는 가장 많이 사용된다고 느껴진다.
$$ \text{RMSE} = \sqrt{\frac{1}{N} \sum (\hat{y} - y)^2} $$