Skip to content

8장. 성적표를 읽는 법

이 장의 질문: "정확도 95%"는 왜 아무것도 보장하지 않는가? 지표를 문제에 맞게 고르는 법, 그리고 자기기만 없는 실험을 설계하는 법 — 모델링 기술보다 오래 쓰일 규율을 세운다.

전제: 4장(데이터 분할, 누수), 5장(분류, 확률 출력).

정확도 99.8%짜리 사기꾼

희귀병 검진 모델을 만들었다고 하자. 환자 1000명 중 실제 병이 있는 사람은 2명이다. 내가 만든 모델의 정확도는 99.8% — 대단한가?

다음 "모델"을 보라: 무조건 "정상"이라고 답한다. 이 모델은 998명을 맞추므로 정확도 99.8%다. 그리고 병자 2명을 전부 놓치는, 존재 이유가 없는 모델이다.

교훈은 명확하다. 클래스가 불균형하면 정확도는 다수 클래스 찍기의 성적에 불과하다. 그리고 현실의 중요한 문제들 — 질병, 사기 거래, 설비 고장, 스팸 — 은 거의 전부 불균형하다. 잡으려는 것이 드물기 때문에 잡으려는 것이다.

그래서 성적표를 쪼개서 봐야 한다. 예측과 실제의 조합은 네 칸이다: 병자를 병자로(진양성 TP), 정상을 정상으로(진음성 TN), 정상을 병자로 오인(위양성 FP), 병자를 놓침(위음성 FN). 이 네 칸의 표를 혼동 행렬이라 하며, 여기서 두 개의 핵심 질문이 나온다.

정밀도(precision) = TP / (TP+FP) — "병자라고 판정한 사람 중 진짜 병자의 비율". 판정의 신뢰도다.

재현율(recall) = TP / (TP+FN) — "실제 병자 중 잡아낸 비율". 놓치지 않는 능력이다.

무조건-정상 모델은 재현율 0%로 즉시 정체가 탄로난다. 그리고 이 둘은 본질적으로 줄다리기다. 재현율을 높이려고 조금만 수상해도 병자로 판정하면 정밀도가 무너지고, 정밀도를 높이려고 확실할 때만 판정하면 재현율이 무너진다. 어느 쪽을 우선할지는 수학이 아니라 비용의 문제다 — 암 검진은 놓침(FN)이 치명적이니 재현율 우선, 스팸 필터는 오탐(FP: 중요한 메일 차단)이 치명적이니 정밀도 우선. 지표 선택이란 곧 "우리 업무에서 어떤 실수가 더 비싼가"라는 질문에 답하는 일이다. 굳이 하나의 숫자가 필요하면 둘의 조화평균인 F1을 쓰지만, F1은 두 실수의 비용이 같다고 가정한 타협임을 잊지 말라.

5장에서 모델이 확률을 출력하게 만든 보람이 여기서 나타난다. 판정 임계값(기본 0.5)은 다이얼이다 — 낮추면 재현율 쪽으로, 높이면 정밀도 쪽으로 움직인다. 임계값을 훑으며 두 지표의 궤적을 그린 것이 PR 곡선/ROC 곡선이고, 그 곡선 아래 면적(AUC)은 "임계값과 무관한 모델의 판별력"을 요약한다. 실무 절차는 이렇다: 모델은 AUC류로 비교해 고르고, 임계값은 업무 비용에 맞춰 별도로 조정한다.

회귀라면 이야기가 간단해진다 — 평균절대오차(MAE, "평균 몇 억 빗나가나" — 해석 직관적), 평균제곱오차 계열(RMSE — 큰 실수를 무겁게 벌함), 결정계수(R² — "평균만 찍는 바보 대비 얼마나 나은가", 1이 만점 0이 바보 동급). 이때도 원칙은 같다. 큰 오차 하나가 치명적인 업무면 RMSE, 오차의 총량이 중요하면 MAE — 지표는 비용 구조의 번역이다.

자기기만의 실험실

지표를 제대로 골랐어도, 실험 설계가 틀리면 좋은 숫자는 얼마든지 만들어진다. 무섭게도 대부분은 고의가 아니라 무의식적으로 만들어진다. 4장의 규율(train/val/test, 누수)에 이어, 현장에서 사람을 잡는 함정 세 개를 추가한다.

함정 1: 검증 집합의 은밀한 소진. 검증 성적을 보며 하이퍼파라미터를 50번 바꿨다면, 당신은 50개의 후보 중 검증 집합이 우연히 좋아한 것을 골랐을 가능성을 50번 누적한 것이다. 검증 성적 92.1% vs 91.8% 같은 차이는 이 우연의 범위 안일 수 있다. 처방: 비교 대상이 많을수록 차이를 의심하고, 중요한 결론은 시드를 바꿔 여러 번 돌려 평균±편차로 판단하라. 단일 숫자 비교는 동전 한 번 던지기다.

함정 2: 기준선 없는 자랑. "우리 모델 정확도 87%!" — 그래서 다수 클래스 찍기는 몇 %인데? 어제까지 쓰던 규칙 기반은? 5장의 로지스틱 회귀는? 모든 성적은 기준선(baseline)과의 차이로만 의미를 가진다. 새 문제를 받으면 가장 멍청한 기준선(다수결/평균 찍기)과 가장 간단한 모델(선형/GBDT)의 성적부터 박아 두는 습관 — 이것이 전문가의 첫 30분이다. 종종 그 간단한 기준선이 이기면서 2주를 절약해 주기도 한다.

함정 3: 평균 뒤에 숨은 소수. 전체 정확도 94%인 얼굴 인식 모델이 특정 인구 집단에서는 70%일 수 있다. 전체 평균은 다수 집단의 성적이 지배하기 때문이다. 성적표는 의미 있는 부분집합별로 쪼개서 봐야 한다 — 클래스별, 사용자 그룹별, 시간대별. 모델 배포 후 터지는 사고의 상당수는 평균 지표에는 보이지 않던 부분집합에서 나온다.

마지막으로, 숫자 너머의 습관 하나. 틀린 사례를 직접 읽어라. 검증 집합에서 모델이 가장 확신을 갖고 틀린 사례 30개를 뽑아 눈으로 보라. 레이블이 잘못된 데이터인가(생각보다 흔하다), 특정 유형이 몰려 있는가, 사람이 봐도 애매한가 — 30분의 오류 분석이 하이퍼파라미터 탐색 3일보다 자주 더 많은 것을 가르쳐 준다. 개선 방향은 지표가 아니라 틀린 사례들 속에 적혀 있다.

실험을 기록으로 남기기

좋은 평가의 마지막 조각은 재현성이다. 3주 뒤의 당신은 "그 92%가 어떤 데이터·코드·설정에서 나왔는지" 기억하지 못한다. 최소한의 규율: 실험마다 (코드 버전, 데이터 버전, 하이퍼파라미터, 시드, 성적)을 함께 기록하라. 도구는 스프레드시트여도 좋고 MLflow나 W&B 같은 실험 추적 도구면 더 좋다 — 형식보다 습관이 중요하다. 재현 못 하는 성적은 성적이 아니라 소문이다. (배포 이후의 평가 — 데이터가 세월에 따라 변해 모델이 늙는 문제 — 는 27장에서 다룬다.)

핵심 요약

  • 불균형 데이터에서 정확도는 무의미할 수 있다. 혼동 행렬로 쪼개고, 정밀도(판정의 신뢰도)와 재현율(놓치지 않는 능력) 로 보라. 둘의 균형은 수학이 아니라 실수의 비용이 정한다.
  • 모델 비교는 임계값 무관 지표(AUC류)로, 판정 임계값은 업무 비용으로 별도 조정한다.
  • 자기기만 방지 3계명: 검증 성적의 작은 차이를 믿지 말 것(시드 반복), 기준선 없이 자랑하지 말 것, 평균 뒤의 부분집합을 확인할 것.
  • 틀린 사례 30개를 읽는 것이 최고의 개선 나침반이다. 그리고 기록 없는 성적은 소문이다.

스스로 점검

  1. 사기 거래 탐지(사기는 전체의 0.1%)에서 정확도 대신 무엇을 보고할 것인가? "사기로 판정하면 거래를 보류하고 사람이 확인한다"는 운영 정책이라면 정밀도와 재현율 중 어느 쪽 손실이 더 참을 만한가?
  2. 임계값을 0.5에서 0.2로 낮추면 정밀도·재현율은 각각 어느 방향으로 움직이는가? 그 이유는?
  3. 동료가 "새 모델이 검증 정확도 0.3%p 더 높다"며 교체를 주장한다. 승인 전에 요구할 것 두 가지는?
  4. 당신 모델의 전체 성적은 좋은데 특정 지역 사용자의 불만이 쏟아진다. 무엇을 먼저 확인하겠는가?

다음 장에서

2부가 끝났다 — 2부 복습 퀴즈로 점검하라. 이제 이 책의 심장부로 들어간다. 선형 모델은 "곧은 자"였고 트리는 "직각 칼질"이었다 — 세상의 진짜 복잡한 패턴(이미지, 소리, 언어)을 담으려면 훨씬 유연한 함수가 필요하다. 단순한 부품을 겹겹이 쌓아 임의의 복잡한 함수를 빚어내는 기계, 신경망이다.

9장. 뉴런의 산수 — 신경망 →