DEV Community

Cover image for Shapley value 어트리뷰션 — 채널 기여도를 공정하게 나누는 게임이론
HyunSeok Jeong
HyunSeok Jeong

Posted on • Originally published at blog.trysitely.com

Shapley value 어트리뷰션 — 채널 기여도를 공정하게 나누는 게임이론

"이 전환은 검색 → 디스플레이 → 이메일 → 페이스북 → 직접 방문 5단계를 거쳤어요. 누구 공인가요?" Last-click은 직접 방문에 100% 공을, first-click은 검색에 100% 공을 줍니다. 둘 다 운영적으로 거짓말입니다. Shapley value는 게임이론에서 빌려온 도구로, 5개 채널이 들어왔다 빠졌다 하는 모든 경우를 평균내 공정하게 기여도를 나눕니다. 마케터가 채널 예산 배분에 가장 자주 쓰게 될 어트리뷰션 도구를 정리합니다.

1. last-click·first-click이 거짓말하는 이유

마케팅 어트리뷰션의 출발점은 단순한 질문입니다.

한 전환에 여러 채널이 닿았다. 매출을 어떻게 채널별로 나눠야 공정한가.

가장 단순한 답이 last-click입니다. 마지막에 닿은 채널이 100% 공을 가져갑니다. Meta·Google Ads·GA4 디폴트가 이 모델입니다. 운영적으로 단순하지만 두 가지 거짓말을 합니다.

  • 마지막 채널이 정말 효과를 만든 게 아니라 "이미 살 사람의 마지막 클릭"일 수 있음
  • 검색·디스플레이처럼 인지·고려 단계를 만든 채널의 기여가 0으로 떨어짐

first-click은 반대 방향의 거짓말입니다. 처음 닿은 채널이 100% 공이지만, 그 사이의 4단계 채널이 안 닿았으면 전환이 없었을 수도 있습니다. 둘 다 한 채널에만 100%를 몰아주는 단순화의 비용이 있습니다.

다중 터치(multi-touch) 어트리뷰션은 이 한계를 풀려는 시도입니다. 가장 단순한 게 균등 분배(linear) — 5개 채널이 닿았으면 각자 20%. 더 정교한 게 시간 가중(time-decay) — 전환에 가까운 채널일수록 더 많은 공. 그런데 이 모델들은 모두 "왜 이렇게 나누는 게 공정한가"의 답이 임의적입니다.

Shapley value는 이 임의성을 게임이론으로 풀어냅니다 — "공정한 분배"의 수학적 정의 위에서 채널 기여도를 계산합니다.

Shapley value — 채널이 들어왔다 빠졌다 하는 모든 경우의 기여도 평균 다이어그램
*채널 N개의 모든 부분집합과 합류 순서를 고려해, 각 채널의 한계 기여도를 평균낸다. 게임이론의 *

📌 이 글에서 다루는 것

Shapley value는 1953년 Lloyd Shapley(2012년 노벨경제학상)가 정리한 협력 게임이론의 결과입니다. 마케팅 어트리뷰션에는 2010년대 후반부터 본격적으로 들어왔고, Google Ads의 "data-driven attribution"·Meta의 "lift-based attribution" 일부가 이 계열입니다. 이 글은 직관과 마케팅 적용에 집중합니다.

2. 협력 게임의 직관 — "있고 없고"의 차이

Shapley value를 마케팅 외 자리에서 한 번 보면 직관이 잡힙니다. 4명의 사람이 같이 일을 해서 매출 100을 만들었을 때 어떻게 나눠야 공정한가.

핵심 질문은 다음입니다.

어떤 사람이 합류함으로써 팀 매출이 얼마나 늘었는가, 그것을 모든 가능한 합류 순서에서 평균낸다.

4명이 합류하는 순서는 4! = 24가지입니다. 각 순서에서 사람 한 명을 추가했을 때의 한계 기여도를 모두 계산하고 평균냅니다. 이게 그 사람의 Shapley value입니다.

마케팅으로 가져오면 채널이 사람입니다. 채널 5개가 어떤 순서로 합류해 전환이 발생했는가 — 5! = 120가지 순서를 모두 고려합니다. 각 순서에서 채널 하나가 합류했을 때의 한계 전환 증가분을 평균냅니다.

수식으로 적으면 다음과 같습니다.

ϕi(v)=SNiS!(nS1)!n!(v(Si)v(S)) \phi_i(v) = \sum_{S \subseteq N \setminus {i}} \frac{|S|!\, (n-|S|-1)!}{n!}\, \bigl(v(S \cup {i}) - v(S)\bigr)

여기서 v(S)v(S) 는 채널 부분집합 SS 가 만든 전환수, ϕi\phi_i 는 채널 ii 의 Shapley value입니다. 무거워 보이지만 의미는 단순합니다 — "있고 없고"의 차이를 모든 부분집합·모든 순서에서 평균.

2-1. 공정성 4공리

Shapley value가 "유일한" 공정 분배인 이유는 다음 4가지 공리를 동시에 만족하는 분배가 이것뿐이기 때문입니다.

  • 효율성: 모든 채널의 Shapley value 합이 전체 전환수와 같음
  • 대칭성: 같은 기여를 하는 채널은 같은 값을 가짐
  • 더미 채널: 어디 들어가도 영향이 0인 채널은 0의 값
  • 가산성: 두 캠페인의 값을 합쳐도 그대로 가산

이 4공리를 만족하는 분배가 Shapley value 하나뿐임이 증명되어 있습니다. 그래서 "공정한 분배의 표준"이라고 부릅니다.

3. 마케팅 적용 — 데이터에서 v(S)v(S) 를 어떻게 만드나

Shapley value를 마케팅에 쓰려면 한 가지를 정의해야 합니다 — 채널 부분집합 SS 가 만든 전환수 v(S)v(S) .

가장 단순한 방식은 다음입니다.

  • 유저 여정 데이터에서 채널 SS 만 닿은 유저의 전환율 측정
  • 같은 데이터에서 채널 SiS \cup {i} 가 닿은 유저의 전환율 측정
  • 두 값의 차이가 채널 ii 의 한계 기여도

문제는 채널 5개면 부분집합이 25=322^5 = 32 개, 채널 10개면 1,024개로 폭발한다는 점입니다. 운영적으로는 두 가지 해법이 있습니다.

  • 채널을 5개 이하로 묶어 정확한 Shapley 계산
  • 더 많을 때는 Monte Carlo 샘플링으로 근사 (ML의 SHAP 라이브러리가 같은 원리)

3-1. 마케터가 보는 결과 형태

채널 last-click 기여 linear 기여 Shapley 기여
검색 5% 25% 28%
디스플레이 0% 20% 18%
이메일 0% 20% 22%
페이스북 0% 20% 12%
직접 방문 95% 15% 20%
100% 100% 100%

last-click은 직접 방문에 95%를 몰아주지만, Shapley는 검색·이메일이 진짜 효과를 만들었다고 봅니다. 페이스북은 닿은 비율 대비 한계 기여가 작아 Shapley에서 12%로 떨어집니다. 운영 결정으로 가져가면 페이스북 예산 일부를 검색·이메일로 옮기는 게 합리적이 됩니다.

4. 코드 한 줄 — SHAP 라이브러리 그대로 쓰기

마케팅에서 Shapley를 직접 구현할 일은 거의 없습니다. ML에서 쓰는 SHAP 라이브러리가 같은 원리를 더 빠르게 구현해 둡니다. 어트리뷰션에 쓰려면 다음 패턴이 가장 가볍습니다.


python
Enter fullscreen mode Exit fullscreen mode

Top comments (0)