DEV Community

Cover image for Heterogeneous treatment effects — 평균 효과 너머의 개인별 효과
HyunSeok Jeong
HyunSeok Jeong

Posted on • Originally published at blog.trysitely.com

Heterogeneous treatment effects — 평균 효과 너머의 개인별 효과

A/B 결과 "B안이 평균 +5%p 효과"라는 한 줄은 사실 평균값입니다. 어떤 사용자에게는 +20%p, 어떤 사용자에게는 -3%p일 수 있습니다. 평균만으로 결정하면 효과 큰 사용자에 못 집중하고, 효과 음수인 사용자도 똑같이 처리합니다. CATE(Conditional Average Treatment Effect)·uplift forest는 이 이질성을 추정해 정밀한 타겟팅을 가능하게 합니다.

마케터가 이 글을 읽어야 하는 이유: 같은 캠페인을 모든 사용자에게 동일하게 노출하는 시대는 지나갑니다. 효과가 큰 세그먼트에 집중하고 효과 없는 세그먼트는 제외하는 정밀 타겟팅이 ROAS의 다음 도약 자리. CATE 추정은 그 결정의 데이터 기반.

평균 효과 +5%p 위에 사용자 세그먼트별 효과(-3, 0, 5, 10, 20%p) 분포가 그려진 다이어그램
평균은 한 숫자, 실제는 분포. 그 분포를 보면 타겟팅이 달라진다.

1. ATE에서 CATE로

평균 처리 효과(ATE):

τATE=E[Y(1)Y(0)] \tau_{\text{ATE}} = E[Y(1) - Y(0)]

전체 사용자에 평균한 효과. A/B 결과 "+5%p"가 이 값.

조건부 평균 처리 효과(CATE):

τCATE(x)=E[Y(1)Y(0)X=x] \tau_{\text{CATE}}(x) = E[Y(1) - Y(0) \mid X=x]

특정 특성 XX 를 가진 사용자에게의 효과. 사용자별·세그먼트별로 다른 값.

사용자 X CATE
신규, 모바일, 20대 +20%p
기존, 데스크톱, 40대 +2%p
VIP, 카테고리 A 선호 +12%p
비활성, 마지막 구매 90일+ -3%p

ATE 평균 +5%p는 이 분포의 평균에 불과. 분포를 보면 타겟팅 결정이 완전히 달라집니다.

📌 이 글의 전제

A/B 테스트·인과추론 단어를 일상으로 쓴다고 가정합니다. 회귀·머신러닝의 직관 정도는 받아들인다고 가정합니다.

2. Uplift modeling — CATE의 마케팅 언어

마케팅 자리에서 CATE를 부르는 더 흔한 단어가 uplift입니다.

처리 받았을 때의 결과 - 처리 안 받았을 때의 결과 = uplift

사용자 유형 uplift 마케팅 의미
Persuadables + 광고로 설득 가능 — 타겟 1순위
Sure things 0 어차피 살 사람 — 광고 낭비
Lost causes 0 어차피 안 살 사람 — 광고 낭비
Sleeping dogs - 광고가 오히려 역효과 — 광고 제외

마케팅 ROI의 핵심은 Persuadables를 찾고 Sleeping dogs를 제외하는 것. 평균 효과만 보면 둘이 섞여 결과가 흐려집니다.

3. CATE 추정 방법 3가지

3-1. Meta-learners (S/T/X-learner)

처리·비처리 별도 모델 학습 후 조합.

  • S-learner: 처리 인디케이터를 feature로 단일 모델
  • T-learner: 처리·비처리 두 모델 별도 학습
  • X-learner: T-learner + 매칭으로 보정

가장 단순. sklearn 모델로 직접 구현 가능.

3-2. Causal Forest

Random Forest의 인과 추론 버전. 트리 분할 기준이 "효과가 가장 다른 자리"가 되도록 학습. CATE를 노드 단위로 추정.

3-3. Uplift Tree (Klassifier)

Two-step: (1) outcome 예측 (2) 그 예측 차이로 uplift 정렬. 단순하고 해석 가능.

방법 강점 약점
Meta-learner 단순, sklearn 호환 큰 모델 비용
Causal Forest 비선형 자동 잡음 학습 느림
Uplift Tree 해석 쉬움 정밀도 낮음

4. 코드 한 묶음 — EconML CausalForest

이게 글에 박는 유일한 코드입니다.


python
Enter fullscreen mode Exit fullscreen mode

Top comments (0)