모델 평가와 선택
좋은 모델은 어떻게 고르나?
99% 정확한 코로나 검사의 함정
코로나 검사의 정확도가 99%라고 합니다. 양성 결과가 나왔습니다. 진짜 감염되었을 확률은?
놀랍게도, 유병률이 0.1%라면 양성의 대부분은 오진입니다. 1000명 중 실제 감염자는 1명. 검사하면 이 1명을 잡지만, 나머지 999명 중 1%(약 10명)도 잘못 양성으로 나옵니다. 양성 11명 중 진짜 감염은 1명뿐 -- 약 9%.
이것이 바로 "정확도(accuracy)만으로는 부족하다"는 교훈입니다. 특히 데이터가 불균형할 때, 정확도는 완전히 잘못된 안도감을 줍니다. 이 장에서는 상황에 맞는 평가 지표를 고르는 법을 배웁니다.
10,000건의 거래 중 사기가 100건(1%)이라고 합시다. 모델이 아무 학습도 하지 않고 "전부 정상"이라고 찍으면 어떻게 될까요? 정확도 = 9,900 / 10,000 = 99%입니다. 하지만 사기를 단 하나도 잡지 못합니다. 이 모델은 완전히 쓸모없는데도 정확도만 보면 훌륭해 보입니다. 쉽게 말하면, 정확도는 "많은 쪽에 편승하면 높아지는" 지표이기 때문에 불균형 데이터에서는 반드시 정밀도, 재현율, F1 등을 함께 확인해야 합니다.
혼동 행렬 (Confusion Matrix): 모든 평가의 출발점
이진 분류 모델의 예측 결과는 4가지로 나뉩니다. 이것을 2x2 표로 정리한 것이 혼동 행렬입니다.
FP: 건강한 사람을 환자라고 잘못 판단 (오진, 1종 오류)
FN: 환자를 건강하다고 놓침 (미발견, 2종 오류)
TN: 건강한 사람을 건강하다고 맞춤 (정확한 음성)
병원에서 암 검진을 받았다고 생각해보세요. 결과는 네 가지 중 하나입니다:
(1) 실제로 암이 있고, 검사도 양성 = TP -- 올바른 발견, 치료 가능
(2) 실제로 암이 없는데, 검사가 양성 = FP -- 괜한 걱정과 추가 검사 비용
(3) 실제로 암이 있는데, 검사가 음성 = FN -- 가장 위험! 암을 놓침
(4) 실제로 암이 없고, 검사도 음성 = TN -- 안심
혼동행렬은 이 네 가지 경우가 각각 몇 건인지 한눈에 정리한 표입니다. 이 표 하나에서 정확도, 정밀도, 재현율 등 모든 평가 지표가 나옵니다.
핵심 지표들
정밀도(Precision) = TP / (TP + FP) "양성이라 한 것 중 진짜 양성"
재현율(Recall) = TP / (TP + FN) "진짜 양성 중 찾아낸 비율"
F1 = 2 * (Precision * Recall) / (Precision + Recall) 조화평균
스팸 필터에서 가장 나쁜 상황은? 중요한 업무 메일이 스팸함으로 들어가는 것(FP)입니다. 계약서가 스팸으로 분류되면 큰일입니다. 그래서 "스팸이라고 판단한 것 중 진짜 스팸인 비율", 즉 정밀도를 높여야 합니다. 스팸을 몇 개 놓치는 것(FN)은 괜찮습니다 -- 받은편지함에서 직접 삭제하면 됩니다.
암 검진에서 가장 나쁜 상황은? 암 환자를 "정상"이라고 보내는 것(FN)입니다. 치료 시기를 놓치면 생명이 위험합니다. 그래서 "실제 암 환자 중 찾아낸 비율", 즉 재현율을 높여야 합니다. 건강한 사람에게 "재검사 필요"라고 하는 것(FP)은 비용이 들지만 생명에는 지장이 없습니다.
이처럼 어떤 종류의 오류가 더 심각한가에 따라 중시해야 할 지표가 달라집니다.
실습 1: 불균형 데이터의 위험
신용카드 사기 탐지 시나리오입니다. 99%가 정상, 1%만 사기입니다. "전부 정상"이라고 예측하면 정확도 99%를 달성하지만, 사기를 하나도 못 잡습니다. 임계값(threshold)을 조절해서 최적의 균형점을 찾아보세요.
실습 2: 혼동 행렬 직접 조작하기
2x2 행렬의 각 셀 값을 직접 바꿔보세요. 모든 평가 지표가 실시간으로 업데이트됩니다. "TP를 올리면 어떤 지표가 변하는가?" "FP를 줄이면?" 직접 실험해 보세요.
실습 3: ROC 곡선과 AUC
ROC 곡선은 임계값을 0에서 1까지 변화시키면서 거짓 양성률(FPR)과 참 양성률(TPR)의 관계를 그린 곡선입니다. 곡선 아래 면적(AUC)이 클수록 좋은 모델입니다.
AUC = 1.0 (완벽) AUC = 0.5 (무작위) AUC < 0.5 (반대로 예측)
의사가 "혈당 몇 이상이면 당뇨"라고 기준을 정합니다. 기준을 낮추면(예: 100) 환자를 더 많이 잡지만(TPR 상승), 건강한 사람도 많이 걸립니다(FPR 상승). 기준을 높이면(예: 150) 확실한 환자만 잡지만, 초기 환자를 놓칩니다. 이 기준을 0부터 끝까지 변화시키면서 TPR과 FPR의 관계를 그린 것이 ROC 곡선입니다. 곡선 아래 면적(AUC)이 넓을수록, 즉 왼쪽 위 모서리에 가까울수록 좋은 검사(모델)입니다. AUC = 1.0은 완벽한 분류, AUC = 0.5는 동전 던지기와 같습니다.
실습 4: K-겹 교차검증
데이터를 한 번만 분할하면 운에 따라 결과가 달라질 수 있습니다. K-겹 교차검증은 데이터를 K등분하고, 각 등분을 한 번씩 테스트 세트로 사용합니다. K번의 평가 결과의 평균이 더 안정적인 성능 추정치를 줍니다.
반에 학생 50명이 있고, 시험으로 실력을 평가하려 합니다. 한 번만 시험보면, 그날 컨디션이 좋았는지 나빴는지에 따라 점수가 들쭉날쭉합니다. 그래서 5번에 걸쳐, 매번 다른 10명이 시험관이 되고 나머지 40명이 응시합니다. 5번의 점수를 평균 내면 한 번 시험보다 훨씬 신뢰할 수 있는 실력 추정치를 얻습니다. 교차검증도 같은 논리입니다 -- 데이터를 K등분하고, 매번 다른 등분을 테스트 세트로 돌아가며 사용합니다. 이렇게 하면 "우연히 좋은 테스트 세트를 뽑았나?"라는 걱정을 덜 수 있습니다.
실습 5: 모델 선택 가이드
어떤 모델과 평가 지표를 사용할지 결정하는 것은 데이터의 특성과 비즈니스 맥락에 따라 다릅니다. 아래의 대화형 가이드를 따라가며 상황에 맞는 최적의 선택을 찾아보세요.
평가 지표 요약
| 지표 | 언제 사용? | 주의점 |
|---|---|---|
| Accuracy | 클래스 균형, 오류 비용 대칭 | 불균형 데이터에서는 무의미 |
| Precision | FP 비용이 높을 때 (스팸 필터) | FN을 무시할 수 있음 |
| Recall | FN 비용이 높을 때 (암 검진) | FP를 무시할 수 있음 |
| F1 | 정밀도와 재현율 균형 | TN을 반영하지 않음 |
| AUC-ROC | 전체 임계값 범위의 성능 | 불균형 시 PR-AUC가 더 나음 |
| Log Loss | 확률 예측의 품질 | 확률 보정이 중요 |
- 정확도만으로 모델을 평가하면 안 된다. 특히 불균형 데이터에서는 치명적이다.
- 혼동 행렬에서 TP/FP/FN/TN을 이해하면 모든 지표를 파악할 수 있다.
- 정밀도와 재현율은 시소 관계. 비즈니스 맥락에 따라 우선순위를 정해야 한다.
- ROC 곡선과 AUC로 전체적인 분류 성능을 비교할 수 있다.
- K-겹 교차검증은 안정적인 성능 추정을 제공하며, K=5 또는 10이 표준이다.
다음 장 예고: 의사결정트리, 앙상블, 모델 평가를 모두 배웠습니다. 다음 장에서는 이 모든 기법을 종합하여 실전 프로젝트를 수행합니다.