예측은 데이터와 가정에 근거한 추정이며 결과를 보장하지 않습니다. 관측값을 분류하는 것과 미래 값을 예측하는 것은 다른 과제입니다.
평가 대상을 정의하기
대상 집단, 목표 변수, 예측 기간과 예정된 결정을 명시합니다. 점수가 잘 보정된 확률인 것은 아닙니다. 독립적인 평가 데이터를 남겨 두고 학습, 전처리 적합이나 모델 선택에 사용하지 않습니다.
비율뿐 아니라 오류 읽기
아래 가상 예시는 임계값을 고정합니다. 실제 양성 200건 중 80건을 탐지하고 120건을 놓쳤습니다. 따라서 정확도 86%가 양성 사례 대부분을 찾았다는 뜻은 아닙니다.
| 실제 결과 | 양성 예측 | 음성 예측 |
|---|---|---|
| 실제 양성 | 80 | 120 |
| 실제 음성 | 20 | 780 |
| 지표 | 계산 | 값 |
|---|---|---|
| 정밀도 (precision) | 80 / (80 + 20) | 80 % |
| 재현율 (recall) | 80 / (80 + 120) | 40 % |
| 정확도 (accuracy) | (80 + 780) / 1000 | 86 % |
결과에 따라 임계값 선택하기
정밀도는 양성 예측 중 실제 양성의 비율이고, 재현율은 실제 양성 중 탐지한 비율입니다. 임계값을 바꾸면 두 지표가 달라질 수 있습니다. 같은 집단에서 비교하고 오경보와 누락의 비용을 검토합니다.
출처와 검증
- Google — Classification: Accuracy, recall, precision
- scikit-learn — Probability calibration
- scikit-learn — Common pitfalls
운영 시간 순서대로 예측을 테스트합니다.
운영 예측은 의사 결정 시점에 사용 가능한 정보만 사용해야 합니다. 시계열 데이터의 경우 임의 분할은 적합하지 않을 수 있습니다. 예측 기능을 주장하기 전에 연속적인 기간을 시뮬레이션하고, 특징 버전을 유지하고, 간단한 기준선과 비교합니다.
- 결과 이후에만 알려진 특징은 제외합니다.
- 학습 이후 기간에 대해 평가합니다.
- 예측 기간별 오류 측정
뛰어난 테스트 성능이 나중에 실패하는 이유는 무엇일까요?
정보 유출, 인구 변동 또는 시간적 편차는 결과에 영향을 미칠 수 있습니다. 데이터 가용성 조건을 재현하고 배포 후 오류를 모니터링하세요.
1차 자료: scikit-learn — Cross-validation. 관련 방법: 실무 가이드 읽기.
