brunch

인과 추론(Ep.4) - 매칭법(Matching)

"공정한 비교를 위한 짝짓기"

by 이건승
f3b82192-fe67-45ee-9429-0fa0cecae1c8.png
할인 쿠폰을 준 고객과 안 준 고객을 그대로 비교해도 괜찮을까?


현업에서 종종 마주하는 질문입니다. 겉으로 보기엔 단순 비교처럼 보일 수 있지만, 실상은 그렇지 않습니다. 할인 쿠폰을 받은 고객은 애초에 더 충성도 높은 고객이었을 가능성이 크기 때문입니다. 이런 상황에서 진짜 효과를 알고 싶다면, 쿠폰을 받지 않은 고객과의 비교가 공정해야 합니다. 이때 유용하게 쓰이는 방법이 바로 '매칭법(Matching)'입니다.



매칭법이란?


매칭법은 말 그대로 비슷한 조건의 사람들끼리 짝을 지어 비교하는 방법입니다.


예를 들어, 할인 쿠폰을 받은 고객 A가 있다면, 성별·연령·구매 패턴이 유사한 B라는 고객을 찾아 매칭합니다. 이렇게 하면 두 고객 간 차이는 쿠폰 유무만 남기 때문에, 쿠폰이 미친 영향을 보다 정확히 분석할 수 있게 됩니다.


왜 매칭이 필요할까?

현실에서는 A/B 테스트처럼 무작위로 실험 조건을 나누는 것이 어렵습니다. 예컨대 마케팅 부서가 특정 조건을 만족한 고객에게만 쿠폰을 주는 경우, 쿠폰을 받지 못한 고객은 애초에 관심도가 낮았을 수 있습니다.


이런 상황에서 단순 비교를 하면 선택 편향(selection bias)이 개입되어 결과를 왜곡시킬 수 있습니다. 이를 해결하기 위한 대표적인 방법이 성향 점수 매칭(Propensity Score Matching, PSM)입니다.


성향 점수 매칭(PSM)은 처리군(처치를 받은 그룹)과 대조군(처치를 받지 않은 그룹)을 비교할 때, 두 그룹의 특성을 수치로 요약하여 가장 유사한 쌍을 찾는 방법입니다. 여기서 성향 점수란 어떤 개체(사람이나 객체)가 처치를 받을 가능성을 확률로 나타낸 점수입니다. 쉽게 말하면, 처리군과 대조군이 동일한 "스타팅 라인"에서 시작하도록 만들어 비교를 공정하게 하는 과정입니다.


1. 성향 점수 계산

✔️ 성향 점수는 개체가 처리(예: 할인 쿠폰 제공)를 받을 가능성을 통계 모델(로지스틱 회귀 등)을 사용해 계산합니다.

✔️ 계산에는 성별, 나이, 과거 구매 패턴 같은 중요한 특성들이 사용됩니다.

✔️ 예시 : 나이, 성별, 구매 빈도, 과거 구매 금액을 입력해 "이 고객이 할인 쿠폰을 받을 확률이 80%다"와 같은 점수를 계산합니다.


2. 매칭

✔️ 처리군의 성향 점수와 대조군의 성향 점수를 비교해 비슷한 점수를 가진 쌍을 만듭니다.

✔️ 예시 : 쿠폰을 받은 고객 A의 성향 점수가 0.75라면, 대조군에서 성향 점수가 0.74나 0.76인 고객을 찾아 매칭합니다.


3. 효과 분석

✔️ 매칭된 그룹에서 처리군과 대조군의 결과(예: 구매 증가율)를 비교하여 처치의 효과를 분석합니다



실무 예제 : 할인 쿠폰 효과 분석


58ad9f56-d862-4291-89a9-4263e53889c9.png
할인 쿠폰을 제공받은 고객은 실제로 추가 구매를 더 했을까?


가상의 실무 예제를 통해 할인 쿠폰 제공 여부에 따른 효과 분석을 매칭법을 가지고 진행을 해보도록 하겠습니다. 우선 예제의 데이터는 아래와 같습니다.

스크린샷 2025-05-17 오전 10.30.19.png

이번 분석의 목표는 성향 점수 매칭을 통해, 쿠폰이 고객의 구매 금액에 미친 인과적 효과(ATT)를 추정하는 것입니다. 방법은 로지스틱 회귀로 성향 점수를 계산하고, 최근접 이웃(KNN)으로 성향 점수가 유사한 쿠폰 유저 vs 비쿠폰 유저를 1:1로 매칭하여, ATT(처리를 받은 집단에서의 평균 효과)를 추정합니다.


먼저, 성향 점수 계산을 위해 로지스틱 회귀 모델을 이용하여 쿠폰을 받은 확률을 계산합니다. 이 확률이 바로 성향 점수(propensity score)가 됩니다. 성향 점수는 이후 매칭에서 조건이 비슷한 고객을 찾기 위한 기준이 됩니다.


✔️ 처리군 : 쿠폰을 받은 고객

✔️ 대조군 : 쿠폰을 받지 않은 고객

✔️ 매칭 변수 : 성별, 연령, 구매 금액, 구매 빈도


참고로 성향 점수는 로지스틱 회귀 외에도 랜덤 포레스트, 그래디언트 부스팅 등 비선형 모델로도 추정할 수 있습니다. 모델 선택은 데이터의 복잡도나 변수 간 상호작용의 존재 여부에 따라 달라질 수 있습니다.

KakaoTalk_Photo_2025-05-17-10-34-37.png


다음으로 유사한 성향 점수를 가진 고객끼리 짝을 맞춰 비교 가능하게 합니다.

스크린샷 2025-05-17 오전 10.39.48.png

처리군(쿠폰 받은 고객)마다 가장 성향 점수가 가까운 대조군(쿠폰 안 받은 고객)을 1명씩 매칭합니다. 이렇게 만들어진 matched_df는 처리군과 대조군이 1:1로 매칭된 상태입니다. 이제 이 두 집단을 비교하면 공정한 비교가 가능합니다.


우리가 최종적으로 알고 싶은 쿠폰이 실제로 얼마나 효과가 있었는지 수치로 측정해 보겠습니다.

스크린샷 2025-05-17 오전 10.41.40.png

개별 고객마다 실제 구매 금액 - 유사한 대조군의 구매 금액을 계산하여 개별 처리 효과를 산출합니다. 그리고 그 평균을 낸 값이 바로 ATT (Average Treatment effect on the Treated)입니다.


이는 성향 점수로 유사하게 매칭된 고객 간 비교이기 때문에, 예제에서 선택 편향이 통제되었다는 전제 하에 쿠폰의 평균 인과적 효과(ATT)는 약 10.78달러라고 해석할 수 있습니다.


마지막으로 매칭 전/후 두 집단이 얼마나 유사해졌는지를 시각화합니다.

스크린샷 2025-05-17 오전 10.44.40.png
chart.png


이 분포는 매칭 이후 성향 점수의 균형 상태를 보여줍니다. 두 집단의 성향 점수 분포가 겹치는 정도가 높을수록, 두 그룹이 통계적으로 유사한 조건에서 비교되고 있음을 시각적으로 확인할 수 있습니다. 매칭 전에는 두 집단의 분포 차이가 컸을 수 있지만, 매칭 후에는 겹치는 범위가 많아질수록 조건이 유사한 두 집단끼리 비교가 잘 이뤄졌다는 뜻입니다.



마무리하며


실험이 어려운 상황에서도 조건이 유사한 집단끼리의 비교를 통해, 쿠폰이 실제로 매출 증대에 긍정적인 영향을 미쳤는지를 정량적으로 추정할 수 있었습니다.


이러한 매칭법은 단순한 통계 기법을 넘어, 다양한 실무 마케팅 시나리오에 폭넓게 적용될 수 있습니다.


✔️ CRM 캠페인의 전환 효과를 평가할 때

✔️ 신규 가입 유도(온보딩) 혜택이 재방문율에 미치는 영향을 검증할 때

✔️ VIP 혜택이 장기 고객화에 기여하는지 파악할 때


이처럼 실험 설계가 어려운 환경에서도, 매칭법은 인과 효과를 유추할 수 있는 유력한 도구가 되어줍니다. 단, 성향 점수 모델링의 정교함과 매칭 품질에 따라 결과 해석이 달라질 수 있으므로, 도메인 이해와 분석적 검토가 반드시 병행되어야 합니다.


결국 우리가 얻고자 하는 것은 단순히 ‘효과가 있다’는 확신이 아니라, ‘신뢰할 수 있는 비교를 통해 효과를 판단할 수 있는 기반’입니다. 매칭법은 그 출발점이 되어줄 수 있습니다.



keyword