이번 포스팅에서는 앞에서 배운 Confusion Matrix에 대해 정리하는 차원에서 Case Study를 해보겠습니다. 우선 생각해 볼 문제가 있습니다.
95%가 정상이고 5%만이 병에 걸린다고 할때 모델이 무조건 정상이라고 예측하면 95% 정확도가 나옵니다.
과연 제대로된 평가일까요? 우리는 실제 병이 걸릴 확률을 예측하는것이 더 중요합니다. 단지 Accuracy 만으로 평가 할 업무라는 것을 알 수 있습니다.
문제
10명의 환자중 심근경색을 예측하였습니다.
Recall, Precision, Accuracy은 어떻게 구할까요?
정답과 설명
Recall은 실제 신근경색에 걸린 사람을 맞다고 예측한 비율이니까 실제로 걸린사람 4명 중 예측까지 맞은 경우는 빨간색 점선으로 표시한 1명입니다.
- 1/4 = Recall = (TP(1))/(TP(1)+FN(3))
Precision은 예측 데이터를 기준으로 맞다고 예측한 3명 중 맞게 예측한 빨간색 점선으로 표시한 1명 입니다.
- 1/3 = Precision = (TP(1))/(TP(1)+FP(2))
Accuracy는 전체 데이터 중에 맞게 예측한 비율이니까 아래 빨간색 O 입니다. 10개 중에 5개 입니다.
- 5/10 = Accuracy = (TP(1)+TN(4))/(TP(1)+TN(4)+FN(3)+FP(2))
Threshold(=Cut-off)
이진 분류는 Output은 확률(probability)로 표현하면 0.0 ~ 1.0로 나타납니다. 여기서 조금이라도 의심되면, 그냥 무조건 1 이라고 예측해라고 Threshold를 줄수가 있습니다. 예를 들어, ‘암진단’ 과 같이 찾아내지 못했을 때 더 큰 리스크가 있는 경우 설정은 threshold를 0.3, 0.4로 낮게 설정할 수 있습니다.
반대로, 완벽하게 확신이 있는거 아니면, ‘1이라고 예측하지마’라고 할 수도 있습니다. 성공 범주 비중이 높을 때 설정하며 흔한 case는 아닙니다. threshold를 0.7, 0.8로 높게 설정할 수 있습니다.
- TP = positive로 예측했는데, 정답인 샘플 ∨(녹색)
- FN = negative로 예측했는데, 틀린 샘플 ∨(파란색)
- FP = positive로 예측했는데, 틀린 샘플 ∨(주황색)
Threshold를 0.5에서 0.1로 낮췄을때 Recall과 Precision을 변화 그래프는 아래와 같습니다. Threshold를 낮출수록 Recall은 높아져 0.3부터 100%가 되버립니다. 하지만 Precision은 0.3일때 최고점인 66%를 기점으로 점점 낮아집니다. 이렇게 두 지표는 서로 연관성이 있습니다. 그래프로 확인할 수 있듯이 최적의 Threshold는 Recall과 Precision이 모두 높은 0.3이 되겠습니다.
'데이터 분석' 카테고리의 다른 글
불균형 데이터(Data Imbalance) 처리 - 언더 샘플링(Under Sampling),Tomek Links,CNN,OSS (1) | 2023.10.21 |
---|---|
불균형 데이터(Data Imbalance) 처리 및 해결 방법(2가지 측면) (0) | 2023.10.20 |
분류 모델 성능 평가 - Confusion Matrix(정확도,정밀도,재현율,F1-score,민감도,특이도,ROC,AUC) (1) | 2023.10.19 |
회귀 모델 성능 평가 - 결정계수(R-squared), Adjusted R-Squared (0) | 2023.10.19 |
회귀 모델 성능 평가 - Propensity, MAE, MSE, RMSE, MAPE (1) | 2023.10.18 |