이번 포스팅에서는 분류 모델에 대한 대표적인 성능 평가 지표인 confusion matrix에 대해 살펴보도록 하겠습니다. 이 지표는 혼동행렬이라고도 하는데, 정확도 정밀도, 재현율, 민감도, 특이도 등 여러가지 지표를 같이 볼 수 있습니다.
왜 이렇게 다양한 지표를 사용하는 것일까요?
이유는 여러 측면에서 예측 정확도를 확인하고 해당 case에 맞는 평가방법을 적용하기 위해서입니다. 업무에 따라 recall은 좀 낮아도 되는데, precision이 높아야 한다던지, 아니면 반대의 경우라던지 각각 다를 수 있습니다. 우리는 이 지표들을 조절해 가며 알고리즘을 업무에 맞게 적용할 수 있습니다.
혼동행렬(Confusion Matrix)
행렬의 각 행은 실제 클래스의 인스턴스를 나타냅니다. 중요한 것은 아래 그림을 외울 때 헷갈리지 않게 하나의 방향으로 외워야 한다는 것입니다. 만약 시험문제에 예측과 실제가 반대로 나온 경우는 그림을 다시 그려서 문제를 해결하는 것이 좋습니다. 외우는 방법은 거꾸로 부터 오면서 읽는 것이 좋습니다. 예를 들어, TP의 경우 Positive로 예측했는데 True의 결과가 나왔다로 외우면 됩니다.
- TP(True_positive) : 긍정(Y)로 예측했는데, 맞음(True)
- FP(False_positive) : 긍정(Y)로 예측했는데, 틀림(False)
- TN(True_negative) : 부정(N)로 예측했는데, 틀림(True)
- FN(False_negative) : 부정(N)로 예측했는데, 틀림(False)
정확도(Accuracy)
정확도는 전체 데이터 중 올바르게 예측한 비율입니다. 실제 데이터와 예측한 것의 차이입니다. 전체 중에 맞게 예측한 대각선(TP, TN)의 비율입니다.
- $ 정확도 = \frac{𝑇𝑃+𝑇𝑁}{𝑇𝑃+𝑇𝑁+𝐹𝑁+𝐹𝑃} $
정확도는 일반적으로 많이 보지만 정확도만으로 판단하기는 어렵습니다. 단점은 예측하려고 하는 종속변수의 비율이 불균형할때 정확도의 신뢰도는 낮아집니다. 예를 들어, 신근경색 환자 2%, 정상 환자가 98%로 불균형하다면 모델이 아무 생각없이 모두 '정상'이라고 예측한다고해도 98%의 정확도를 보이게 됩니다.
정밀도(Precision)
정밀도는 모델이 긍정(Y)로 예측한 것 중 맞게 예측(진짜 Y인 경우)한 비율입니다. (예측 기준)환자라고 예측한 것 중 맞은(실제 환자인) 비율이라고 보시면 됩니다.
- $ 정밀도 = \frac{𝑇𝑃}{𝑇𝑃+𝐹𝑃} $
정밀도만 높을 때 단점은 100% 확신이 들때만 환자라고 예측한다는 것입니다. 그렇게 되면 실제 환자를 놓치는 경우가 빈번하게 생기게 됩니다. 이런 경우는 병원에서 위급한 환자를 예측할 때는 좋지 않은 모델이 됩니다.
재현율(Recall)
재현율은 실제 긍정(진짜 Y) 중에 모델이 찾아낸 예측한 긍정(Y) 값이 몇개냐? 입니다. (실제 기준)실제 환자 중에 환자라고 맞게 예측한 비율입니다.
- $ 재현율 = \frac{𝑇𝑃}{𝑇𝑃+𝐹𝑁} $
암인 사람을 음성(정상)으로 판단하면 매우 위험해집니다. 그래서 정밀도(Precision) 보다는 재현율(Recall)을 높이게 되는데요. 단점은 음성(정상)인 사람을 양성(환자)으로 판단할 가능성이 높아집니다. 쉽게 말해 양치기 소년(거짓말쟁이)이 되기 싶습니다.
F1-score
Precision과 Recall으로 구성하여 불균형 데이터에 대해 잘 동작하는 평가지표입니다.
- $ F1 Score =2 \times \frac{recall \times precision}{ recall + precision } $
민감도(Sensitivity) = 재현율(민재)
민감도는 Recall과 동일한 지표입니다. 정확하게 발생을 예측하기 위한 지표로 실제 환자 중에 환자라고 예측한 비율을 말합니다. 외울 때 '민재'로 생각하면 쉽게 떠올릴 수 있습니다. 건강한 사람이 일부 포함되더라도 암환자는 빠짐없이 검출 필요하기 때문에 사용하는 지표입니다. 얼마나 민감하게 찾아 냈는가가 중요합니다.
- 민감도(TPR) = (판정한 것 중 실제 양성/(전체 양성)
특이도(Specificity)
특이도는 민감도와 정 반대의 개념입니다. 실제 환자가 아닌것을 잘 예측했나를 봅니다. 외울 때 특이하게도~ 음성을 잘 예측한 비율이라고 생각하면 됩니다. 실제 적용 사례로 소변검사의 경우 특이도가 높은 검사이기 때문에 특이도가 높아야 합니다. 그리고 다른 검사와 병행하게 됩니다. 이상이 없는 사람(음성)에 대해 소변검사를 이용하여 확인하는 방식입니다.
- 특이도 = (판정한 것 중 실제 음성)/(전체 음성)
ROC Curve
Confusion Matrix만으로 모델의 평가 척도로써 부족할 수 있습니다. 그런 점을 보완하기 위해 ROC, AUC가 있습니다. ROC 커브는 모델의 효율성을 평가하는 척도입니다.
- FPR = 1-Specificity(특이도)
모델의 효율성을 민감도, 특이도를 이용하여 그래프로 나태낸 지표입니다.
- X축은 FPR(False Positive Rate)로 틀린 것을 맞았다고 잘못 예측한 수치
- Y축은 TPR(True Positive Rate)로 맞은 것을 맞았다고 잘 예측한 수치
AUC
ROC커브와 x축이 이루고 있는 면적의 넓이를 AUC(Area Under Curve)라고 합니다. AUC의 값이 1에 가까울수록 효율적이고 좋은 모델로 평가합니다.
마무리
위에서 살펴본 것 같이 Confusion Matrix에서 파생된 정확도, 정밀도, 재현율, F1-score, 민감도, 특이도, ROC, AUC 까지 살펴보았습니다. 중간에 설명을 드렸지만 하나의 지표만으로 성능을 평가한다면 왜곡된 결과를 가져올 수 있습니다. 위에 지표들을 비즈니스에 맞게 선택하여 활용하는 것이 관건입니다.
'데이터 분석' 카테고리의 다른 글
불균형 데이터(Data Imbalance) 처리 및 해결 방법(2가지 측면) (0) | 2023.10.20 |
---|---|
분류 모델 성능 평가 - Confusion Matrix 쉬운 설명, threshold, cut-off (0) | 2023.10.20 |
회귀 모델 성능 평가 - 결정계수(R-squared), Adjusted R-Squared (0) | 2023.10.19 |
회귀 모델 성능 평가 - Propensity, MAE, MSE, RMSE, MAPE (1) | 2023.10.18 |
[머신러닝] 모델 성능 평가 및 지표-훈련,검증,테스트 데이터, 교차 검증(Cross-Validation) (0) | 2023.10.18 |