2023. 5. 7. 01:57ㆍDATA PROGRAMMING/ALGORITM
분류 모델 평가
분류 모델이란?
로지스틱 회귀는 '회귀'라는 이름을 가지고 있지만 일반적인 회귀 모형이 '예측'이라는 역할을 하는 대신 '분류'를 하는 모델이다. 분류(Classification)란 학습 데이터가 주어졌을 때, 해당 학습 데이터의 독립변수들을 이용하여 클래스를 예측하는 것이다. 즉 입력값을 입력하면 특정한 출력값을 배출하는 지도 학습(Supervised Learning)이다.
분류 모델의 성능 평가
모델이 분류를 얼마나 잘 수행했는지를 평가하는 여러 가지 방법과 지표가 있다. 그 내용에 대해 알아보자.
- 정확도 (Accuracy)
정확도 = (클래스를 올바르게 분류한 데이터의 수) / 전체 데이터의 수
정확도는 일반적으로 가장 많이 사용하는 기준이지만 클래스가 애초에 불균등한 상태라면 문제가 발생하게 된다.
위의 표처럼 클래스가 분균등(질병에 걸린 환자에 비해 정상인 사람이 훨씬 많은 경우)하다고 가정해보자. 실제론 10,000명 중 9,980명이 정상이고 20명이 질병에 걸린 상태에서 10,000을 모두 정상이라고 예측 했으니 정확도는 9,980/10,000 = 99.8%의 높은 정확도를 보인다. 하지만 반대로 질병에 걸린 사람 20명중 단 한명도 질병에 걸렸다고 예측하지 못했으므로 이 모델은 쓸모 없는 모델이라고 생각할 수 있겠다.
이런 불균형 문제를 해결하기 위한 다른 방법과 기준의 필요성 때문에 생긴 도구가 Confusion matrix다.
- Confusion matrix
confusion matrix는 TP, TN, FP, FN으로 이루어진 matrix이다.
TP는 Positive로 예측한 데이터가 실제로 Positive인 경우 (예측이 맞음)
TN은 Negative로 예측한 데이터가 실제로 Negative인 경우 (예측이 맞음)
FP는 Positive로 예측한 데이터가 실제로는 Negative인 경우 (예측이 틀림)
FN은 Negative로 예측한 데이터가 실제로는 Positive인 경우 (예측이 틀림)
알파벳의 앞부분은 예측을 성공적으로 했는지의 여부이고 뒤쪽의 알파벳은 예측을 P로 했는지 N으로 했는지의 여부이다.
- 새로운 분류모델 평가 지표
Precision = TP / TP + FP
Recall(Sensitivity) = TP / TP + FN
Precision은 'Positive로 예측한 데이터 중 그 예측이 맞은 경우의 비이다.'
Recall(Sensitivity) '실제로 Positive인 데이터 중 그 예측이 맞는 경우의 비이다.'
필자의 경우 실Sen예Pre로 이 공식을 외웠다. (실제 - Sensitivity, 예측 - Precision)
*이때 Precision과 Recall은 분수 형태이고 분자는 같고 분모는 다른 반대 방향의 값이라고 생각할 수 있다. 예를 들어 Positive로 예측할 기준을 빡빡하게 잡는다면 Positive로 예측하는 경우가 줄어들 것이고(FP 값이 줄어든다) 이는 Precision의 분모가 작아지는 결과를 초래하므로 Precision 값은 늘어나게 된다. 반대로 Recall의 경우는 상대적으로 분모가 커지므로(FN값이 커짐) Recall의 값은 줄어들게 된다.
Accuracy만을 가지고 두 모델을 비교하면 성능에 큰 차이가 있다고 볼 수 없지만
Recall을 활용해 비교하면 커다란 차이가 있다는 것을 확인할 수 있다. 이처럼 애초에 Class 값의 불균형이 크다면 Recall이나 Precision 같은 지표를 활용해 분류모델의 성능을 평가해야 한다.
- F1-Score
F1-Score = 2*Precision*Recall / (Precision+Recall)
F1-Score는 precision과 recall 값을 함께 고려하여 분류 모델의 성능을 평가하기 위해 만들어진 지표이다. 이 값은 Precision과 Recall의 조화 평균이다. 두 값 중 어느 값을 더 중요하게 보느냐에 따라서 가중치를 설정 할 수 있다. 위 예시의 F1-Score를 구해보면 Model1의 경우에 9.88% Model2의 경우에 0.67%이다.
- ROC (Receiver Operating Characteristic) Curve
ROC Curve는 FPR을 X축으로 TPR을 Y축으로 하는 곡선이다. 이 곡선의 밑넓이 값을 활용해 분류 모델의 성능을 평가할 수 있다.
ROC Curve에 관해 설명하기 전에 알아야 할 개념 중 Cut Off Value가 있다. 앞서 설명했듯이 Precision과 Recall 등의 평가 지표는 예측을 어느 정도 수준으로 할것인지에 따라 달라진다. Confusion matrix는 특정한 기준에 따라서 달라지는데 그 기준이 cut-off value이다.
위 표를 통해 cut-off value에 대해 이야기해 보자.
위 표에서 만약 cut-off value를 0.86으로 잡는다고 하면 P값이 0.86보다 큰 값을 Positive로 예측한다는 뜻이다. 이러한 경우에는 TP 값은 1, 2 instance에 의해 2개가 되고, FP 값은 3 instance에 의해 1개가 된다. P값이 0.86보다 작은 값들은 Negative로 예측하므로, TN 값은 4개 FN 값은 3개로 Confusion Matrix를 정의할 수 있다. 즉, Cut-off value를 어떻게 설정하는지에 따라 Confusion Matrix가 다르게 정의 되는 것을 확인할 수 있다.
위 표는 cut-off value 값에 따라 각각의 confusion matrix 요소의 값들을 정리한 것이다. 지금은 10개의 cut-off value에 따라 10개의 값들을 찾아냈지만, cut-off value를 무한히 쪼개어 만든다면 TPR과 FPR을 포함한 confusion matrix 각각의 값들 또한 무한해진다. 이때, TPR 값을 Y축으로, FPR 값을 X축으로 설정하여 만든 그래프가 ROC Curve이다.
여기서 기울기가 1인 점선은 Random하게 분류했을 때를 표현한 그래프이다. FPR 값에 비해 TPR 값이 클수록 분류의 성능이 좋다고 할 수 있으므로 Random 직선을 기준으로 곡선이 위쪽으로 그려질수록 좋은 모델이라고 할 수 있다. 이를 수학적으로 정확하게 비교하기 위해 정적분 개념을 도입하는데 Roc curve의 정적분 값이 클수록 좋은 모델이라고 판단할수 있다. 이때 Roc curve의 밑넓이(정적분 값)를 AUROC 혹은 AUC(Area under the ROC curve)라고 표현한다.
지금까지 분류 모형을 평가하는 지표들에 대해 알아보았다. 다음 글에서는 로지스틱 회귀의 원리에 대해 알아보고 특정 데이터를 통해 실제로 분류 모델을 실행해 윗글에 설명된 여러 평가지표를 활용하여 분류 모형을 평가해 보도록 하겠다.