“Cooperation is a higher moral principle than competition” -Bryant Mcgill-
필자의 학부시절 수업 선택에서 첫번째 조건은 조별과제가 없는 수업이었다. 본의 아니게 팀원 4명짜리 조별과제를 하게됐던 경우에도 일을 적절하게 잘 분배했다는 기억도 별로 없고, 팀원들의 수고에 감사하는 감정을 가진 적도 흔치 않았던 것 같다. 사실 조별과제를 하면서 일을 적절하게 나눈다는게 쉬운 일은 아니다. 사람들의 능력치를 잘 모르기 때문은 둘째 문제고, 결과물인 학점이 공동으로 결정되는 구조이기 때문에, 팀원 전원이 높은 도덕심과 발표 내용에 대한 깊은 이해도를 갖고 있지 않으면, 자의건 타의건 무임승차자 (Free-rider) 문제가 발생할 수 밖에 없다.
무임승차자를 없애기 위해 가장 간단한 방법은 개개인별로 "기여분 = 결과”를 보장하는 것이다. 쉽게 설명하면, 4명 팀원의 발표가 400점 만점이고, 각 개인별로 자신이 한 일 만으로도 100점 만점을 받을 수 있도록 하면 된다. 비슷한 아이디어로 게임이론 모델 중에 팀의 생산물을 적절하게 분배하는 개념이 있는데, Shapley value라고 한다. 한 팀의 결과물을 각 개인의 기여분만큼 분배해주면 무임승차자가 생기는 문제를 방지할 수 있다는 이론이다.
온라인 광고 시장에서도 유사한 문제가 발생한다. 쇼핑몰 광고로 상품을 팔았을 때, 수많은 광고 중에 최종 클릭(Last click)만 기여분을 인정받고, 그 앞에 이뤄졌던 모든 광고들은 전혀 기여분을 인정 못 받는다. 바로 Last-Click Attribution 이라고 불리는 기여도 배분 방식의 맹점이다. 아마 필자가 이 분야에서 사업을 시작했다면, 최종 클릭이 될 가능성이 높은 광고 채널에 사업의 모든 역량을 집중했을 것이다. 광고라는 것이 단 한번의 노출로 고객을 끌어들이는 것이 아님에도 최초 클릭이나 중간 클릭은 기여분을 인정 못 받으니까. 기여도 배분 방식이 무임승차자를 대량으로 양산하는 모델인 것이다. (물론 똑똑하신 마케터 분들이 직관적으로 광고 예산을 배분해서 최초 클릭과 중간 클릭이 주력인 광고에도 많은 비용을 지출하고 계신다는 것을 알고 있으니 너무 날을 세우시진 말았으면 좋겠다.)
인정을 받고, 안(못) 받고를 떠나서, 실제로도 최종 클릭만 있으면 충분한 마케팅일까? 최초, 중간 클릭들은 정말로 큰 도움이 안 되는 마케팅일까? 만약에 이전 클릭들이 도움이 된다면, 최종 클릭만 있어서는 제대로 마케팅이 안 된다면, 이전 클릭들에 얼마만큼 투자를 해야 합리적인 지출일까?
이런 아이디어를 바탕으로 최근 온라인 마케팅 시장에 등장한 개념이 **멀티 터치 기여도 모델 (Multi-touch attribution)**이다.
당신이 작은 쇼핑몰 운영자라고 생각해보자. 광고 예산은 천만원, 광고 옵션은 브랜드 SEM 광고, 디스플레이 배너 광고, 이메일 광고, 그리고 검색 광고 이렇게 4개가 있다. 단순하게 1/4의 금액을 나눠서 광고비로 썼다고 가정하자. 유저들이 이런저런 광고에 노출되고 쇼핑몰 웹사이트까지 와서 구매를 했다. 기존의 마지막 클릭 모델에 따르면, 마지막으로 노출된 광고만 추적해서 그 광고가 높은 성과가 있었다고 판단할 것이다. 보통 유저들이 구매 직전에 검색을 하는 경향이 있으므로, 검색이 절반의 “마지막 클릭”을 유도했다고 해보자. 그런데 그 유저들이 다른 광고에 노출되었기 때문에 검색을 했었고, 다른 광고가 없었다면 아예 검색조차도 안 했을 것이라면? 검색에 5백만원을 투자하고 나머지 3개 광고에 5백만원을 지불하면 분명히 매출액이 줄어들 것이다.
그럼 구매 전환이 일어났을 때 유저가 거쳐왔던 모든 광고에 1/n로 배분한다면? 구매 전환이 일어난 경우가 100건인데, 그 중에서 브랜드 SEM 클릭이 100건, 배너 클릭이 50건, 이메일 70건, 그리고 검색 광고 클릭이 80건이 있었다고 해보자. (검색 광고 50건은 마지막 클릭, 30건은 이전 클릭이다.) 그럼 총 300건의 클릭이 있었으니까 클릭 100건을 만들어낸 브랜드 SEM이 1/3의 광고비를 가져가는게 타당해 보인다. 그런데 브랜드 광고는 전원에게 다 뿌려진 광고여서 이 광고를 찍고 들어오지 않았으면 애시당초 구매 전환이 안 일어났을거라면? 클릭이 100개지만, 사실 전환에 훨씬 더 결정적인 이었다고 할 수 있다. 그런데도 광고비의 1/3만 쓰는게 맞을까? 만약에 배너 클릭이 전환에 매우 결정적인 클릭이었다고 한다면, 광고비의 1/6만 투자하는게 맞을까?
확률 모델
전환을 일으킨 유저들 클릭 숫자 총합의 1/n을 쓰는 방식에서 벗어나, 최초 클릭과 마지막 클릭에 높은 가중치를 주고, 중간 클릭에 낮은 가중치를 주는 모델들도 있었으나, 모두 합리적인 가정이 아니라는 이유로 시장에서 널리 받아들여지지 못했다. 좀 더 합리적인 방법으로 먼저 전환 확률을 따지는 모델을 소개한다.
구매 전환과 광고 클릭 이전에 광고 노출 숫자가 브랜드 광고 5,000건, 배너 광고 1,000건, 이메일 500건, 검색 노출이 2,000건 있었다고 해보자. 이 때 브랜드 광고는 클릭율이 2%, 배너는 5%, 이메일은 14%, 검색은 4%이다. 이렇게 놓고 보면 이메일이 가장 클릭율이 높고, 같은 비용을 썼다면 노출 및 유입만 성과로 볼 때 가장 효율이 좋은 광고가 될 것이다.
물론 이 모델도 한계가 있다. 다른 광고들은 전국민을 대상으로 뿌린 것이고, 이메일은 쇼핑몰 가입자들을 대상으로 한 광고였다면? 갑자기 14%가 높아보이지 않는건 필자만의 편견일까?
데이터 시각화
이전 데이터 시각화 글에서 나왔던 그래프들이 기억나시는가? 여러 개의 기기를 거쳐서 최종 전환이 일어나는 방식과 여러 채널을 거쳐서 최종 전환이 일어나는 방식을 같은 맥락에서 바라보면 어떨까? 아래는 4개 광고 채널을 거쳐 전환이 일어난 사례만을 모은 Sunburst 그래프다.
편의를 위해 브랜드 광고는 1,2,3으로 나눴고, 전환(Conversion)을 가장 안쪽 원에 배치했다. Legend를 on/off 할 수 있고, 커서를 그래프 위에 갖다대면 해당 node를 거쳐서 전환이 일어난 stat의 비율이 나올 것이다. 위의 예시에서 전환 직전에 Search 광고를 찍은 비율이 90%가 넘는다.
같은 방식으로, 어디**”에서”** 전환이 일어나는지가 아니라 어디**”를 거쳐서”** 전환이 일어나는지가 더 중요하다고 했던 맥락을 잘 보여주는 Sankey도 추가해본다.
[Download](https://s3-ap-northeast-1.amazonaws.com/udl-static/blogs/Sankey_multi_touch_attribution.R)
위의 두 그래프는 단순한 확률 모델로는 멀티 채널의 광고 효과를 제대로 확인할 수 없다는 대표적인 증거다. 어디를 거쳐서 왔는지에 대한 이해가 없이 단순하게 클릭 숫자를 카운트하는 것으로는 광고 효과를 제대로 분석하기 어렵다.
(참고로 위의 두 그래프는 ab180 광고주의 이익 보호를 위해 시뮬레이션 데이터로 생성되었다. 그래프 아래 첨부한 R 코드에서 확인해보시기 바란다.)
미리 정해진 가중치 모델, 클릭으로 확률 따지는 모델들이 좋은 모델이 아니라면 어떤 모델을 써야할까? 서두에 소개한 Shapley value를 계산하는 통계 모델이 있다. Shapley-Owen Decomposition(이하 Owen decomposition)이라고 하는데, 간단하게 설명하면 전체 모델의 설명력(R-squared)에서 개별 변수들의 설명력을 분리해내는 모델이다. Owen decomposition이 위의 확률 모델보다 더 뛰어난 이유는 두 변수 이상을 조합했을 때 발생할 수 있는 시너지와 반-시너지를 고려하기 때문이다. 일단 아래의 그림을 보자.
위 그림에서 단순히 A, B, C만 놓고보면 A가 가장 안 좋은 성과물을 냈다. A는 파란 막대 1개, B는 2개, C는 3개를 생산했다. 그러나 A가 B나 C와 협동하면 훨씬 더 많은 산출물을 냈다. 단순히 A와B를 합해서 3개가 나와야 정상인데 6개가 생산되었고, A와 C는 4개가 아니라 6개 반을 생산했다. 반면 B와 C는 결합해서 시너지가 하나도 없다. 쉽게 이야기하면 A는 “버프”를 잘 시켜주는 일꾼인 것이다. 실제로 광고 채널들을 고를 때도, 다른 채널에서 전환이 잘 일어나도록 도움을 주는 채널도 있고, 반대의 극단으로는 다른 채널 광고 성과를 뺏어오기만 하는 채널도 있을 수 있다.
시리즈 글 1번에서 이미 언급한 것처럼 어디**”에서”** 전환이 일어나는지가 아니라, 어디**”를 거쳐서”** 전환이 일어나는지를 알고나면, 채널 A같은 매체가 눈에 보이지 않는 곳에서 전환에 큰 도움이 되는 매체라는 것을 알 수 있게 된다. 따라서 위의 컨셉을 적용한 계산법을 이용해 각 채널별로 가중치를 배분하면 어디**”를 거쳐서”** 전환이 일어나는지가 적절하게 고려된 결과물을 얻을 수 있다.
Shapley value 예시
아래는 변수 3개(x1, x2, x3)를 이용해서 목표값(y)를 설명할 경우 일반적으로 사용하는 선형 회귀분석 식이다.
Shapley value를 계산하기 위해 (여러가지 방법이 있겠지만) 쉽게 사용할 수 있는 방법은 Owen Decomposition인데, 쉽게 말하면 회귀분석으로 설명력(R-squared)을 구한 뒤, 이를 각 변수별 기여도에 맞춰 나누는 계산법이다. 특이할만한 사항은, 변수가 3개라면 위의 식처럼 x1,x2,x3만 쓰는게 아니라, Cross-product term들도 포함시킨다.
변수의 갯수가 3개면 3+3+1=7개의 변수로 회귀분석을 하는 것이 되고 (상수항 제외), 변수 4개라면 4+6+4+1=15개, 같은 방식으로 변수가 5개면 5+10+10+5+1=31개 가 된다.
이 때, x3 없이 x1과 x2만 들어가 있다면 어떻게 될까? x3에 0을 대입하면 y 값을 x1과 x2가 어떻게 설명하는지 알 수 있다.
이런 맥락에서, x1,x2, x3 각각만 변수로 쓴 경우부터 x1, x2, x3 모두를 쓴 경우에 나오는 R-squared 값을 다 구할 수 있다. 이렇게 구한 R-squared 값을 이용해 아래의 식을 활용하면 개별 변수의 R-squared 기여분을 계산해낼 수 있다.
큰 괄호 안 R-squared는 해당 변수(x_j)를 포함했을때와 아닐 때이고, 앞의 상수항은 가중치인데, 전체 변수의 갯수(p) 중 몇 개의 변수를 사용했는지(k)를 이용해서 구하면 된다. (고등학교 통계의 5개 사과중에서 3개를 뽑고… 와 같은 개념이다.)
단순하게 식만 봐서는 이해가 어려울 수도 있으니 예시를 들어보자. (예시 참조)
(저자와 합의한대로 링크에 있는 그림을 그대로 따 붙인다. 참고로 아래 Shapely는 오타다.)
자, 여기서 변수1의 영향만을 따로 구분해보고 싶다면 어떻게 할까? 아래의 3가지 경우의 수를 보자.
Case 1. x1 vs. 0 (당연히 아무것도 없을때는 0이다)
Case 2. x1 와 x2 vs. x2 만 (같은 방식으로, x1 과 x3 vs. x3만)
Case 3. x1, x2, x3 vs. x2, x3만
각각 x1이 있고 나머지 변수가 있거나 없을 때 어떤 차이가 나는지 확인할 수 있다. 즉, x1이 있을 때의 x2, x3가 하는 역할과 x1이 없을 때 x2, x3가 하는 역할을 볼 수 있는 것이다. 위에 설명했던 조합의 시너지를 볼 수 있는 방법이다. 변수가 3개이므로, 3개의 case, 4개의 차이값을 계산 해야한다. (마찬가지로 변수가 4개면 4개의 케이스, 7개의 계산을 해야된다.) 아래는 변수 별로 각각의 계산을 정리한 표다.
세 변수의 가중치를 모두 합하면 변수 1,2,3 모두로 회귀분석을 돌렸을 때와 같은 결과를 얻을 수 있다. (0.986125로 똑같다)
광고 채널 조합의 효과를 따질 수 있다는 점에서 위 모델은 유용하다. 그러나 여전히 남은 문제들이 있다. 사소한 문제로는, 전체 R-squared가 너무 낮으면 변수별로 효과를 나누는 것이 과연 의미가 있을까는 문제가 있지만, 이 모델을 광고 시장 기여도 분석에 적용할 경우에 그런 극단적인 경우는 많지 않을 듯 하다. (광고가 효과 없는 경우를 가정하면 광고업계에 계신 분들이 필자를 어떻게 하실지....)
필자에게 가장 크게 다가오는 문제는 첫째, 광고 채널 숫자를 10개, 20개 이상 쓸 경우에 Computational cost를 어떻게 해결할까? 그리고 **둘째, 광고 채널별로 노출에 선후 관계가 있을 경우를 어떻게 고려할까?**와 같은 질문이다.
채널 숫자가 많을 때
위에 언급한 Owen decomposition이 작동하려면 매번 2^N개의 회귀분석을 돌려야한다. 광고채널이 10개면 1024개, 16개면 65536개의 회귀분석을 돌려야한다. 이런경우에는 Dimensionality reduction 방법을 쓰는게 좋을성 싶다. 시리즈 글 3번 최적화에서 언급했던 Principle Component Analysis를 한번 써 보면 어떨까? 이미 설명한대로, PCA는 각 변수들의 (공)분산을 이용해서 변수 몇 개를 버리더라도 전체 데이터 셋의 분산을 최대한 보존하기 위한 방법이다. 따라서 16개의 광고 채널이 있을 때 설명력이 높지 않을 변수 몇 개를 버리고 Shapley value를 계산하는 방식이다. (일반적인 통계분석에서 보통 처음 3개 변수가 전체의 절반 이상을 설명하는 경우가 흔하다.)
위의 사례 중 A,B,C 중 버프를 제일많이 주는 A의 경우, 일반적인 선형 선별법을 쓰면 쉽게 배제되기 쉽상이지만, PCA가 공분산(Covariance)을 근거로 변수의 설명력을 따지기 때문에 훨씬 더 효과적으로 AB,AC,BC와 같은 조합의 성과를 고려할 수 있다. 그러나 언제나 활용할 수 있는 방법은 아니다. 모든 변수가 골고루 의미 있는 경우에는 10개 이상의 변수를 모두 사용해야될 수도 있다. 극단적으로 10개 변수 모두가 10%씩 공분산을 쪼개간다면 Shapley value를 측정하기 위해 1024개의 선형회귀 분석을 해야할 수 밖에 없다.
혹여나 오해가 있을까봐 덧붙이면, PCA는 공분산을 이용해서 각 변수들 중 분산을 최대한 비슷하게 유지할 수 있는 상위 변수를 찾는 방식이고, Owen decomposition은 y값(ex. 전환율)을 설명하는 설명력을 각 변수별로 나누는 방식이다. 구글링을 하면 PCA와 Owen decomposition이 모두 중요변수를 찾는 방법처럼 나와 있으나 멀티터치 기여도 분석에서 쓰임이 다른 관계로 유사한 모델을 적용하려는 데이터 사이언티스트 분들의 주의를 구한다.
선후 관계를 고려하는 모델
Sankey diagram에서 언급했듯이, 광고 채널별로 선후 관계가 매우 중요할 수 있다. 예를 들어, 브랜드 광고가 있고 이메일 광고가 있었던 경우가 그 반대 경우보다 유저들의 반응률이 훨씬 더 높았다면 어떻게 해야할까? 무작정 두 개 광고 모두에 노출된 유저들의 반응률만 따질 것이 아니라, 어떤 광고가 먼저 나왔는지 순서를 매겨서 변수 선정을 해야한다. 여기에도 여러가지 분석 방법이 있겠지만, 필자는 조건부 회귀분석(Conditional regression)을 추천한다. 위의 예시에서는 timestamp(x1) < timestamp(x2) 인 경우와 그 반대인 경우로 나눠서 두 경우에 차이가 있었는지 없었는지를 sample t-test로 보면 된다. 그래서 만약에 순서가 상관이 있다면 변수 x1을 먼저 노출된 경우(x1e), 늦게 노출된 경우(x1l)와 같이 나눠서 다시 Shapley value를 계산해 볼 수 있다. (이런 경우 필요한 회귀분석의 갯수가 순서를 고려해야하는 변수(r개)까지 포함되어 2^(N+r)개 된다. Computational cost가 너무 많이 들 수 있는데, Eigen decomposition의 아이디어를 응용해서 계산을 간소화할 수 있다.)
기타 기술적인 이슈
만약에 일부 조합 (ex. AB,AC, BC)은 데이터 오류로 추적이 불가능하다면 어떻게 될까? Imperfect information의 예시 중 하나가 될 것 같은데, 데이터가 없다고 0으로 무작정 처리하면 당연히 분석 결과의 신뢰도는 떨어진다. 가장 확실한 해결책은 데이터 추적 문제를 해결하는 것이고, 뜻대로 Clean data를 구할 수 없다면 예상치를 넣을 수 밖에 없다. 일괄적으로 오류없이 관찰된 데이터들의 평균을 넣을 수도 있고, 또 분포를 가정해서 빈칸을 채워넣을수도 있다(Limited Dependent Variable Model). 데이터 손실이 무작위(random)로 일어났느냐 아니냐에 따라 쓸 수 있는 통계학 도구들도 많이 달라진다. 자세한 내용은 시리즈 글 후반부에 소개하도록 하겠다.
마케터들이 광고 매체를 고를 때에는 우선 특정 광고가 고른 목적에 잘 부합하게 진행되었는지가 궁금할 것이다. 언뜻보면 마케터 입장에서는 광고를 고른 목적과 전환만을 보는 기여도 모델의 분석 결과가 일치하지 않다는 생각을 할 수도 있다. 예를 들어, 리타게팅 광고는 전환을 목적으로 하는 광고지만, 대중을 대상으로 하는 광고는 전환이 목적이 아니라 브랜드 소개가 목적일 수도 있다. 이런 경우 위의 Shapley value와 같은 한 가지 잣대로 광고의 성과를 분석하는 것이 합리적인지에 대한 의문이 드는 것도 한편으로는 타당하다고 생각한다.
그러나 광고의 궁극적인 목적이 상품 판매까지 유저를 유도하는 것이고, 또 Shapley value 계산법 자체가 조합을 고려하고, 나아가 ab180은 모델을 발전시켜 광고 노출의 선후 관계까지 따지고 있기 때문에 마케터들이 우려하는 것만큼 모델이 잘못된 계산 결과를 낳지는 않는다. 일례로, 위의 시뮬레이션 데이터 사례로 나온 브랜드, 디스플레이, 이메일, 서치 광고 조합의 경우, 서치 광고가 Last click으로 무려 96.1%나 등장하지만, 정작 Shapley value를 구하면 브랜드가 약 20%, 디스플레이가 26%, 이메일이 9%, 그리고 서치가 45% 미만으로 나온다. 조합만 따졌을 때도 이만큼 눈에 띄는 차이가 난다면, 순서까지 따질 수 있는 현실 데이터에서는 기존의 인식을 깰 수 있을만한 결과를 볼 수 있을 것이다. 최소한 Last click에만 의존한 모델보다는 훨씬 더 Data-driven된 예산 배분을 할 수 있지 않을까?
멀티터치 기여도 모델(과 매우 유사한 모델)을 개발하던 Abakus가 지난 2016년 12월에 SAP Hybris에 인수되었다. 기업들의 IT 플랫폼을 구축해주던 SAP가 E-commerce 사업에 뛰어들면서 Hybris를 2013년에 인수했고, 자사의 데이터 관리 플랫폼 (Data Management Platform, DMP)을 오픈 마켓 분야에 도입하다보니 광고비를 적절하게 분배하는 것이 얼마나 중요한지 깨달았기 때문이라고 보인다.
한국도 상황은 크게 다르지 않다. 기술력 부족으로 Last click만 고려하는 시장이었으나, 이제 모든 데이터를 다 추적할 수 있는 세상이 왔다. (적어도 ab180이 그리고 있는 데이터 세상에서는 그러하다.) 이제 더 깊이있는 데이터가 있으니 더 깊은 분석을 해야한다. 그리고 시장에 “무임승차자”가 없어지도록 필자도 조금이나마 도움이 되고 싶다.