"광고 본 사람들의 구매율 8%, 안 본 사람들 구매율 3% — 광고가 5%p 끌어올렸다." 이 단순 비교의 함정은 분명합니다. 광고를 본 사람들이 원래 더 관심 있었던 사람일 가능성이 큽니다(자가 선택 편향). 무작위 배정 lift 실험을 못 돌리는 자리에서 자주 마주칩니다. propensity score matching(PSM)은 이 편향을 줄여 인과 효과를 추정하는 표준 도구입니다.
마케터가 이 글을 읽어야 하는 이유: 광고 노출과 전환의 단순 비교는 ROAS 보고에 자주 들어가지만 인과 효과는 거의 항상 과대 추정됩니다. PSM의 직관과 한계를 알면, 회의에서 "이 숫자가 인과인가 상관인가"를 정직하게 분리할 수 있습니다.

비슷한 특성을 가진 사람끼리 짝짓고 그 짝의 행동 차이로 인과 효과를 본다.
1. 자가 선택 편향과 PSM의 직관
광고 노출은 무작위가 아닙니다. 플랫폼이 "광고에 반응할 가능성이 높은 사람"에 더 많이 노출시킵니다. 그래서 노출 그룹은 비노출 그룹보다 원래 구매 의향이 높은 사람들로 구성됩니다.
노출 그룹의 구매율 - 비노출 그룹의 구매율 = 광고 효과 + 자가 선택 편향
PSM은 이 편향을 줄이는 한 가지 도구입니다.
노출 그룹의 각 사람마다 "비슷한 특성을 가진" 비노출 그룹 사람을 짝지어, 그 짝끼리만 비교한다.
비슷하다는 기준이 propensity score — "이 사람이 노출될 확률"의 추정치. 같은 propensity score를 가진 두 사람은 노출에 대한 사전 성향이 같으니 비교가 정직합니다.
📌 이 글의 전제
독자가 A/B 테스트·인과추론이라는 단어를 일상으로 쓰고, 회귀·로지스틱이라는 단어 정도는 들어봤다고 가정합니다. 코드를 직접 짠 적은 없어도 됩니다.
2. Propensity score의 정의
특정 사람이 노출 그룹에 들어갈 확률을 그 사람의 특성으로 예측한 값.
는 사용자 특성(연령, 성별, 과거 구매, 페이지 방문 등). 로지스틱 회귀가 표준 추정 모델.
이 모델로 모든 사람의 propensity score를 계산. 그 값이 비슷한 노출·비노출 사람을 짝지어 비교.
3. PSM 워크플로 — 5단계
3-1. 1단계: 특성 변수 선택
노출과 결과(전환) 둘 다에 영향을 주는 변수들을 모음. 흔한 자리:
- 인구통계 — 연령, 성별, 지역
- 과거 행동 — 방문 빈도, 마지막 구매일, 평균 구매액
- 사용자 세그먼트 — 신규 vs 기존, 카테고리 선호
- 디바이스·매체 — 모바일 vs 데스크톱, 유입 채널
이 단계가 가장 중요합니다. 빠뜨린 confounder가 있으면 매칭의 효력이 약해집니다.
3-2. 2단계: propensity score 추정
로지스틱 회귀 또는 GBM으로 노출 여부를 예측하는 모델 학습. 모든 사람의 propensity score 계산.
3-3. 3단계: 매칭
각 노출 그룹 사람마다 propensity score가 비슷한 비노출 사람을 1명(또는 N명) 짝지음. 매칭 알고리즘:
- Nearest neighbor — 가장 가까운 1명 매칭
- Caliper — score 차이가 임계값 이내인 경우만 매칭
- Stratification — score 구간으로 나눠 구간별 비교
- Kernel matching — 가중치로 여러 사람을 결합
3-4. 4단계: balance 점검
매칭 후 두 그룹의 특성 분포가 정말 비슷해졌는지 확인. 표준화된 평균 차이(SMD) < 0.1이면 균형 OK.
3-5. 5단계: 효과 추정
매칭된 짝의 결과 차이의 평균이 추정 인과 효과(ATT, Average Treatment effect on the Treated).
| 단계 | 도구 |
|---|---|
| 1. 변수 선택 | 도메인 지식 + EDA |
| 2. propensity 추정 | 로지스틱 회귀 |
| 3. 매칭 | Nearest neighbor (1:1) |
| 4. balance | SMD, KS 검정 |
| 5. 효과 | ATT |
4. 코드 한 묶음 — Python으로 PSM
이게 글에 박는 유일한 코드입니다.
python
Top comments (0)