광고 운영 시스템이 "이 소재의 CTR은 0.034"라고 알려주면 마케터는 그 한 숫자에 예산을 태웁니다. 그런데 같은 모델이 다음 날 "0.018"을 뱉으면, 어느 쪽이 진짜인지 어떻게 아나요. 점추정 하나만 가지고 의사결정 하기엔 모델 출력의 흔들림이 너무 큽니다. Conformal Prediction은 어떤 예측 모델 위에든 분포 가정 없이 "90% 확률로 이 구간 안에 있다"는 신뢰구간을 붙여주는 도구입니다. 베이지안과 무엇이 다른지, 마케팅에 어떻게 쓰는지 정리합니다.
1. 점추정의 함정 — 왜 한 숫자에 베팅하면 안 되나
마케팅 의사결정의 99%는 "예측 한 숫자"를 받아서 비교하는 일입니다.
- 광고 입찰 시스템: "이 임프레션의 클릭 확률 0.034 → 입찰가 산정"
- LTV 모델: "이 가입자의 12개월 LTV 12만원 → 광고 단가 한도"
- 추천 시스템: "이 상품의 다음 주 매출 예상 850만원 → 재고 발주"
문제는 같은 모델이 같은 입력을 받아도 출력이 흔들린다는 점입니다. 점추정 0.034가 실제로는 [0.018, 0.062]의 범위 안 어딘가일 수 있습니다. 이 폭을 모르고 0.034 한 숫자로 입찰을 짜면, 운 나쁜 날엔 입찰을 너무 세게 부르고 운 좋은 날엔 기회를 놓칩니다.
이 폭을 알려주는 도구가 예측 신뢰구간(prediction interval)입니다. 베이지안 모델은 사후 분포에서 신뢰구간을 자연스럽게 뽑아주지만, 운영하는 모델 대부분(XGBoost·LightGBM·딥러닝)은 점추정만 뱉습니다. 이 모델들 위에 신뢰구간을 사후적으로 씌우는 가장 간단한 방법이 Conformal Prediction입니다.

*모델은 점추정만 뱉어도 된다. Conformal Prediction은 캘리브레이션 데이터로 *
📌 이 글에서 다루는 것
Conformal Prediction은 1990년대 Vovk·Gammerman·Shafer가 정리한 프레임워크지만, Angelopoulos·Bates(2021)의 "Gentle Introduction" 이후 ML 운영에 본격적으로 들어왔습니다. 핵심은 단 하나의 가정 — 데이터가 교환 가능(exchangeable)하다는 것. 정규성·등분산성 같은 가정은 일절 필요 없습니다. 마케팅 데이터처럼 분포가 길고 비정형인 곳에서 특히 강합니다.
2. Conformal의 직관 — "과거에 얼마나 빗나갔나"로 보증 구간 만들기
Conformal Prediction의 한 줄짜리 아이디어는 이것입니다.
캘리브레이션용 데이터에서 모델이 빗나간 정도(잔차)를 모아두면, 새 예측이 빗나갈 폭을 그 분포에서 잘라낼 수 있다.
조금 더 풀어 쓰면 다음과 같습니다.
- 학습 데이터 외에 캘리브레이션 데이터 1,000개를 따로 둔다(split conformal)
- 모델이 캘리브레이션 데이터를 예측한다 — 진짜 값과의 잔차 1,000개 수집
- 잔차의 90% 분위수 를 구한다
- 새 예측 의 신뢰구간은
핵심은 단순한 분위수입니다. 캘리브레이션에서 90% 잔차가 안에 들어왔다면, 새 예측도 같은 분포에서 왔다는 가정 아래 90% 확률로 안에 들어옵니다. 이걸 marginal coverage 보증이라고 부릅니다.
수식으로 적으면 다음과 같습니다.
이면 90% coverage 보증입니다. 한 줄짜리 아이디어가 만들어내는 보증치고는 무겁습니다.
💡 모델은 무엇이든 좋다
Conformal의 가장 큰 매력은 모델 종류를 가리지 않는다는 점입니다. XGBoost·LightGBM·딥러닝·랜덤포레스트, 심지어 LLM의 다음 토큰 분포 위에도 씌울 수 있습니다. 학습이 끝난 모델에 캘리브레이션 데이터만 따로 빼두면 됩니다.
3. Split Conformal 실전 — 5줄 코드로 끝나는 보증
CTR 예측 모델 위에 신뢰구간을 씌우는 가장 단순한 방법, split conformal을 보겠습니다.
python
Top comments (0)