Skip to content
PART 4 · 24장

모델 평가와 선택

좋은 모델은 어떻게 고르나?

99% 정확한 코로나 검사의 함정

코로나 검사의 정확도가 99%라고 합니다. 양성 결과가 나왔습니다. 진짜 감염되었을 확률은?

놀랍게도, 유병률이 0.1%라면 양성의 대부분은 오진입니다. 1000명 중 실제 감염자는 1명. 검사하면 이 1명을 잡지만, 나머지 999명 중 1%(약 10명)도 잘못 양성으로 나옵니다. 양성 11명 중 진짜 감염은 1명뿐 -- 약 9%.

이것이 바로 "정확도(accuracy)만으로는 부족하다"는 교훈입니다. 특히 데이터가 불균형할 때, 정확도는 완전히 잘못된 안도감을 줍니다. 이 장에서는 상황에 맞는 평가 지표를 고르는 법을 배웁니다.

99% 정확도가 쓸모없는 경우 -- 신용카드 사기 탐지:
10,000건의 거래 중 사기가 100건(1%)이라고 합시다. 모델이 아무 학습도 하지 않고 "전부 정상"이라고 찍으면 어떻게 될까요? 정확도 = 9,900 / 10,000 = 99%입니다. 하지만 사기를 단 하나도 잡지 못합니다. 이 모델은 완전히 쓸모없는데도 정확도만 보면 훌륭해 보입니다. 쉽게 말하면, 정확도는 "많은 쪽에 편승하면 높아지는" 지표이기 때문에 불균형 데이터에서는 반드시 정밀도, 재현율, F1 등을 함께 확인해야 합니다.

혼동 행렬 (Confusion Matrix): 모든 평가의 출발점

이진 분류 모델의 예측 결과는 4가지로 나뉩니다. 이것을 2x2 표로 정리한 것이 혼동 행렬입니다.

예측: 양성
예측: 음성
실제: 양성
TP (참 양성)
FN (거짓 음성)
실제: 음성
FP (거짓 양성)
TN (참 음성)
TP: 환자를 환자라고 맞춤 (정확한 양성)
FP: 건강한 사람을 환자라고 잘못 판단 (오진, 1종 오류)
FN: 환자를 건강하다고 놓침 (미발견, 2종 오류)
TN: 건강한 사람을 건강하다고 맞춤 (정확한 음성)
쉽게 말하면 -- 혼동행렬은 "암 검진 결과표"입니다:
병원에서 암 검진을 받았다고 생각해보세요. 결과는 네 가지 중 하나입니다:
(1) 실제로 암이 있고, 검사도 양성 = TP -- 올바른 발견, 치료 가능
(2) 실제로 암이 없는데, 검사가 양성 = FP -- 괜한 걱정과 추가 검사 비용
(3) 실제로 암이 있는데, 검사가 음성 = FN -- 가장 위험! 암을 놓침
(4) 실제로 암이 없고, 검사도 음성 = TN -- 안심
혼동행렬은 이 네 가지 경우가 각각 몇 건인지 한눈에 정리한 표입니다. 이 표 하나에서 정확도, 정밀도, 재현율 등 모든 평가 지표가 나옵니다.

핵심 지표들

정확도(Accuracy) = (TP + TN) / (TP + FP + FN + TN)
정밀도(Precision) = TP / (TP + FP)   "양성이라 한 것 중 진짜 양성"
재현율(Recall) = TP / (TP + FN)   "진짜 양성 중 찾아낸 비율"
F1 = 2 * (Precision * Recall) / (Precision + Recall)   조화평균
정밀도 vs 재현율의 갈등: 스팸 메일 필터: 정밀도 우선 (정상 메일을 스팸으로 보내면 안 됨). 암 검진: 재현율 우선 (환자를 놓치면 안 됨). 두 지표는 시소 관계입니다 -- 하나를 올리면 다른 하나가 내려갑니다.
쉽게 말하면 -- "스팸 필터 vs 암 검진"으로 이해하는 정밀도와 재현율:
스팸 필터에서 가장 나쁜 상황은? 중요한 업무 메일이 스팸함으로 들어가는 것(FP)입니다. 계약서가 스팸으로 분류되면 큰일입니다. 그래서 "스팸이라고 판단한 것 중 진짜 스팸인 비율", 즉 정밀도를 높여야 합니다. 스팸을 몇 개 놓치는 것(FN)은 괜찮습니다 -- 받은편지함에서 직접 삭제하면 됩니다.

암 검진에서 가장 나쁜 상황은? 암 환자를 "정상"이라고 보내는 것(FN)입니다. 치료 시기를 놓치면 생명이 위험합니다. 그래서 "실제 암 환자 중 찾아낸 비율", 즉 재현율을 높여야 합니다. 건강한 사람에게 "재검사 필요"라고 하는 것(FP)은 비용이 들지만 생명에는 지장이 없습니다.

이처럼 어떤 종류의 오류가 더 심각한가에 따라 중시해야 할 지표가 달라집니다.

실습 1: 불균형 데이터의 위험

신용카드 사기 탐지 시나리오입니다. 99%가 정상, 1%만 사기입니다. "전부 정상"이라고 예측하면 정확도 99%를 달성하지만, 사기를 하나도 못 잡습니다. 임계값(threshold)을 조절해서 최적의 균형점을 찾아보세요.

목표: 사기를 최대한 잡되(재현율 높이기), 오진도 줄이세요(정밀도 유지). 임계값 슬라이더를 움직여서 F1 점수가 최대인 지점을 찾아보세요. 비용 행렬도 확인하세요: 사기를 놓치면 100만원, 오탐은 1만원.
0.50
정확도
-
정밀도
-
재현율
-
F1 점수
-
비용 분석
놓친 사기 (FN)
-
오탐 (FP)
-
사기 미탐지 비용
-
FN x 100만원
오탐 비용
-
FP x 1만원
총 비용
--
교훈: 정확도 99%가 최선이 아닙니다! 비용 관점에서는 재현율을 높여 사기를 더 많이 잡는 것이 오탐 비용을 감수하더라도 훨씬 저렴할 수 있습니다.

실습 2: 혼동 행렬 직접 조작하기

2x2 행렬의 각 셀 값을 직접 바꿔보세요. 모든 평가 지표가 실시간으로 업데이트됩니다. "TP를 올리면 어떤 지표가 변하는가?" "FP를 줄이면?" 직접 실험해 보세요.

예측 양성
예측 음성
실제 양성


실제 음성


정확도 (Accuracy)
-
오류율 (Error Rate)
-
정밀도 (Precision)
-
재현율 (Recall)
-
F1 Score
-
특이도 (Specificity)
-
실험 아이디어: TP=1, FN=0, FP=0, TN=999로 놓으면? 정밀도와 재현율 모두 100%이지만, 양성 데이터가 1개뿐이라 신뢰도가 낮습니다. 지표 숫자만 보지 말고, 표본 크기도 함께 고려해야 합니다.

실습 3: ROC 곡선과 AUC

ROC 곡선은 임계값을 0에서 1까지 변화시키면서 거짓 양성률(FPR)과 참 양성률(TPR)의 관계를 그린 곡선입니다. 곡선 아래 면적(AUC)이 클수록 좋은 모델입니다.

TPR (Recall) = TP / (TP + FN)     FPR = FP / (FP + TN)
AUC = 1.0 (완벽)    AUC = 0.5 (무작위)    AUC < 0.5 (반대로 예측)
쉽게 말하면 -- ROC는 "검사의 성능 곡선"입니다:
의사가 "혈당 몇 이상이면 당뇨"라고 기준을 정합니다. 기준을 낮추면(예: 100) 환자를 더 많이 잡지만(TPR 상승), 건강한 사람도 많이 걸립니다(FPR 상승). 기준을 높이면(예: 150) 확실한 환자만 잡지만, 초기 환자를 놓칩니다. 이 기준을 0부터 끝까지 변화시키면서 TPR과 FPR의 관계를 그린 것이 ROC 곡선입니다. 곡선 아래 면적(AUC)이 넓을수록, 즉 왼쪽 위 모서리에 가까울수록 좋은 검사(모델)입니다. AUC = 1.0은 완벽한 분류, AUC = 0.5는 동전 던지기와 같습니다.
모델 A AUC
-
모델 B AUC
-
무작위 AUC
0.500
AUC의 한계: AUC는 전체적인 성능을 요약하지만, "실제로 사용할 운영점(threshold)"에서의 성능은 알려주지 않습니다. 두 모델의 AUC가 같아도, 특정 FPR 범위에서는 성능이 크게 다를 수 있습니다.

실습 4: K-겹 교차검증

데이터를 한 번만 분할하면 운에 따라 결과가 달라질 수 있습니다. K-겹 교차검증은 데이터를 K등분하고, 각 등분을 한 번씩 테스트 세트로 사용합니다. K번의 평가 결과의 평균이 더 안정적인 성능 추정치를 줍니다.

쉽게 말하면 -- "돌아가며 시험보기"입니다:
반에 학생 50명이 있고, 시험으로 실력을 평가하려 합니다. 한 번만 시험보면, 그날 컨디션이 좋았는지 나빴는지에 따라 점수가 들쭉날쭉합니다. 그래서 5번에 걸쳐, 매번 다른 10명이 시험관이 되고 나머지 40명이 응시합니다. 5번의 점수를 평균 내면 한 번 시험보다 훨씬 신뢰할 수 있는 실력 추정치를 얻습니다. 교차검증도 같은 논리입니다 -- 데이터를 K등분하고, 매번 다른 등분을 테스트 세트로 돌아가며 사용합니다. 이렇게 하면 "우연히 좋은 테스트 세트를 뽑았나?"라는 걱정을 덜 수 있습니다.
평균 정확도
-
표준편차
-
단일 홀드아웃
-
K 선택 가이드: K=5 또는 K=10이 실무에서 가장 흔합니다. K가 크면 편향이 줄지만 분산이 늘고 계산이 오래 걸립니다. K=n (Leave-One-Out)은 데이터가 아주 적을 때만 사용합니다.

실습 5: 모델 선택 가이드

어떤 모델과 평가 지표를 사용할지 결정하는 것은 데이터의 특성과 비즈니스 맥락에 따라 다릅니다. 아래의 대화형 가이드를 따라가며 상황에 맞는 최적의 선택을 찾아보세요.

각 질문에 답하면 다음 질문이 나타나고, 최종적으로 추천 모델과 평가 지표가 제시됩니다. 다른 답을 선택해서 결과가 어떻게 바뀌는지도 확인해 보세요.
Q1. 데이터가 균형적인가요?

평가 지표 요약

지표 언제 사용? 주의점
Accuracy클래스 균형, 오류 비용 대칭불균형 데이터에서는 무의미
PrecisionFP 비용이 높을 때 (스팸 필터)FN을 무시할 수 있음
RecallFN 비용이 높을 때 (암 검진)FP를 무시할 수 있음
F1정밀도와 재현율 균형TN을 반영하지 않음
AUC-ROC전체 임계값 범위의 성능불균형 시 PR-AUC가 더 나음
Log Loss확률 예측의 품질확률 보정이 중요
비즈니스 함의: 모델 선택은 기술적 결정이 아니라 비즈니스 결정입니다. "사기를 놓치는 비용이 얼마인가?" "고객을 잘못 차단하면 얼마를 잃는가?" 이 비용을 먼저 정의하고, 그에 맞는 지표를 선택해야 합니다.
  • 정확도만으로 모델을 평가하면 안 된다. 특히 불균형 데이터에서는 치명적이다.
  • 혼동 행렬에서 TP/FP/FN/TN을 이해하면 모든 지표를 파악할 수 있다.
  • 정밀도와 재현율은 시소 관계. 비즈니스 맥락에 따라 우선순위를 정해야 한다.
  • ROC 곡선과 AUC로 전체적인 분류 성능을 비교할 수 있다.
  • K-겹 교차검증은 안정적인 성능 추정을 제공하며, K=5 또는 10이 표준이다.

다음 장 예고: 의사결정트리, 앙상블, 모델 평가를 모두 배웠습니다. 다음 장에서는 이 모든 기법을 종합하여 실전 프로젝트를 수행합니다.