Supermartech
Ad Measurement
광고 효과 측정 1편

마케터라면 꼭 알아야 할 인과적 사고

앞으로 여기서 다룰 주제는 거의 다 결국 하나로 모여요. 이 광고 진짜 먹히나? 가격 바꾸면 매출 움직이나? 새 기능이 유저를 더 끌어오나? 등. 전부 "내가 이걸 하면, 저게 일어나나?" 로 수렴해요. 여기 못 답하면 뒤에 쌓을 글들은 다 모래 위에 세우는 꼴이에요. 그래서 첫 글이 바로 그 모래예요.

인과추론은 '분야'가 아니라 '사고방식'이에요

"인과추론(causal inference)"이라고 하면 통계학 냄새가 확 나죠. 근데 아니에요. 그냥 원인과 결과 제대로 짚는 습관이에요. 매일 하는 건데 이름만 안 붙였을 뿐.

가게 사장님 한 분 떠올려 봐요. 지난 분기 매출이 20% 빠졌어요. 사장님이 당황해서,

광고를 충분히 안 했어! 광고비 두 배로 올려!

광고비가 2배로 뛰었어요. 다음 분기 매출은요? 그대로. 왜 안 움직였을까요? 몇 달 뒤에야 진짜 원인이 보여요. 매출 하락은 광고랑 애초에 상관없었어요. 경쟁사가 가격을 15% 내렸거든요. 사람들은 그냥 더 싼 데로 간 거예요. 광고비 2배로 올려봤자 바뀌는 게 없죠.

지난 분기 광고 매출 → 이번 분기 광고 (2배) 매출 광고는 2배. 매출은 그대로.

사장님이 믿었던 건 엉뚱한 원인-결과 짝이었어요. "광고 부족 → 매출 하락" 이라고요. 그래서 광고에 수백만 원 태웠는데, 정작 진짜 원인(경쟁사 가격)엔 아무 대응도 못 한 거죠.

그래서 원인 짚기가 중요해요. 결과를 바꾸고 싶으면 원인부터 짚어야죠. 안 그러면 돈만 엉뚱한 데 쓰고 아무것도 못 얻어요. 심하면 아예 안 하느니만 못하고요.

제약회사가 신약 출시 전에 몇 년씩 임상시험(clinical trial, 사람을 두 그룹으로 나눠 한쪽엔 진짜 약, 다른 쪽엔 가짜 약을 주고 비교하는 실험)을 돌리는 이유도 똑같아요. "이 약이 병을 낫게 하나?"에 틀린 답을 내면 사람이 죽거든요. 광고판 리프트 테스트(lift test, 광고를 본 그룹과 안 본 그룹의 매출을 비교하는 실험)도 같은 이유고요. 전부 같은 질문이에요. "내가 이걸 하면, 저게 일어나나?"

잠깐. "상관"과 "인과"부터 짚고 가요.

단어 두 개 먼저 짚어요. 이 글 나머지가 전부 둘의 차이에 걸려 있어요.

상관(correlation)은 그냥 두 숫자가 같이 움직인다는 뜻. 딱 그 이상도 그 이하도 아니에요. 여름 되면 아이스크림이 더 팔려요. 같은 시기에 기온도 올라요. 숫자 둘이 같이 움직이니까 상관이 있다고 해요. 근데 이게 "아이스크림 사면 기온 오른다"는 뜻이 되진 않죠, 당연히.

인과(causation)는 달라요. 한쪽이 다른 쪽을 만들어낸다는 뜻. 메커니즘이 있어야 해요. 한쪽을 바꾸면 다른 쪽이 실제로 바뀌어야 하고요. "약 먹으니 열이 내렸다." 이건 인과예요. 약이 없으면 열이 안 내리고, 먹으면 내려요.

한 줄로 요약하면,

상관은 쉬워요. 어디에나 있어요.
인과는 어려워요. 흔하지 않아요.
상관 숫자가 같이 움직임 아이스크림 익사사고 (둘 다 '여름'이 밀어줌) 인과 한쪽이 다른 쪽을 만듦 약 열 내림 (실제 메커니즘)

상관이 있다고 인과까진 아니에요. 둘을 섞어버리면, 광고비 2배 올리고도 아무 효과 못 보는 그 사장님이 돼요.

세상은 "가짜 인과"로 가득해요

유명한 사례 몇 개 볼게요. 공통점이 있어요. 숫자 둘이 거의 한 몸처럼 움직이는데, 뒤엔 아무 관계도 없어요.

사례 1. 아이스크림과 익사사고

여름 되면 아이스크림이 더 팔려요. 같은 달에 익사사고도 늘어요. 그럼 이렇게 결론 내려야 할까요?

아이스크림을 먹으면 익사한다.

당연히 아니죠. 뒤에서 "여름"이라는 공통 원인이 둘 다 밀어주고 있어서예요. 여름 되면 아이스크림도 더 먹고, 수영도 더 하잖아요.

1월2월3월4월5월6월7월8월9월10월11월12월 아이스크림 판매 익사사고 기온
아이스크림 판매와 익사사고는 1년 내내 같이 움직여요. 버튼을 누르면 뒤에서 둘 다 밀고 있던 진짜 원인이 나타납니다, 기온.

사례 2. 니콜라스 케이지 영화 수 vs 수영장 익사사고

미국 통계 사이트에서 유명한 사례. 1999년에서 2009년 사이, 니콜라스 케이지가 영화를 많이 찍은 해일수록 미국 수영장 익사사고도 더 많이 났어요. 두 선을 그려보면 거의 완벽하게 겹쳐요.

이게 인과일까요? "니콜라스 케이지가 영화 많이 찍어서 사람들이 수영장에서 죽었다"? 당연히 아니죠. 두 숫자가 우연히 같이 움직였을 뿐이에요. 그게 다예요. 니콜라스한테 전화해서 "제발 연기 그만둬 주세요, 사람 죽어요" 할 일 없어요.

19992000200120022003200420052006200720082009 그해 니콜라스 케이지 영화 수 미국 수영장 익사사고
두 선이 같이 움직이지만, 공통 원인은 전혀 없어요. 출처, Tyler Vigen, Spurious Correlations.

사례 3. 인터넷 익스플로러 vs 미국 살인률

또 유명한 거. 2006년에서 2011년 사이, 인터넷 익스플로러 시장점유율이 떨어졌어요. 같은 기간에 미국 살인률도 떨어졌고요. 두 선이 거의 발맞춰 내려와요. 그렇다고 "다 같이 익스플로러 버리면 살인 줄어든다" 소리할 리는 없죠. 그냥 두 숫자가 우연히 같은 시기에 떨어진 거예요. 그게 전부예요.

200620072008200920102011 인터넷 익스플로러 시장점유율 미국 살인률
두 곡선이 거의 발맞춰 떨어져요. 아무 관계도 없는 두 숫자가 같은 기간에 우연히 떨어진 거예요.

가짜 상관은 왜 생기나

학술적으로는 가짜 상관(spurious correlation)이라고 해요. "spurious"가 "가짜"란 뜻이니까, 말 그대로 가짜 상관이에요.

생기는 이유는 크게 두 가지. 하나는 숨은 공통 원인 (아이스크림과 익사는 뒤에서 "여름"이 둘 다 밀어주고 있어요). 또 하나는 그냥 우연 (니콜라스 케이지와 수영장 익사엔 공통 원인이 없어요. 선 모양이 어쩌다 비슷했을 뿐). 공통 원인 쪽은 따로 글 하나 통째로 쓸 거예요. 지금은 이거 하나만. 가짜 상관은 어디에나 있고, 공통 원인 쪽이 사람 제일 많이 속여요.

진짜 문제는 데이터를 보고 "아, 이게 원인이야!" 라고 외치는 순간 터져요. 그래야 익사 막겠다고 아이스크림 판매 금지하고, 니콜라스 케이지한테 은퇴하라고 하는 거니까요.

그래서 데이터로 뭘 정할 땐 꼭 두 번 물어봐요. "이거 진짜 인과인가? 그냥 상관인가?"

좋아요, 그럼 인과는 어떻게 짚죠?

위 사례들은 쉬운 쪽이에요. 상식이 바로 "당연히 아니지"라고 외쳐주니까. 아이스크림이 사람을 익사시킬 리 없고, 니콜라스 케이지가 그럴 리도 없죠. 근데 상식이 구해주지 않는 다른 함정도 있어요. 그게 진짜 위험해요. 하나 볼게요.

알렉스. 매일 저녁 스테이크에 와인 반 병. 담배도 피워요.
마이크. 술은 안 마셔요. 채소 위주로 먹고, 아침마다 조깅하고, 가끔 명상도 해요.
몇 년 뒤, 알렉스는 암 걸렸고 마이크는 멀쩡해요.

자, 질문. 알렉스 암 걸린 거, 와인이랑 담배 때문일까요? 마이크 멀쩡한 건 건강한 생활 덕분이고요?

처음 들으면 "그렇지" 싶죠. 근데 그 결론 틀렸어요. 알렉스랑 마이크는 애초에 같은 사람이 아니거든요.

유전자부터 달라요. 성장환경, 직업, 수면 패턴, 조상 다 달라요. 둘 차이가 단순히 "술 마신다 vs 안 마신다"가 아니란 얘기죠. 수천 가지 다른 게 뒤엉켜 있어요. 그러니까 알렉스가 암 걸렸을 때, 그 수천 가지 중 뭐가 범인인지 가려낼 방법이 없어요.

평생 술 담배 안 한 사람 중에도 암 걸리는 분 많아요. 반대로 평생 폭음해도 90살까지 사는 사람도 있고요. 알렉스는 와인 없이도 암 걸렸을 수 있고, 마이크는 담배 피웠어도 멀쩡했을 수 있다는 얘기.

그래서 알렉스 vs 마이크 비교로는 "와인이 암 유발"을 뽑아낼 수 없어요. 유전일 수도, 환경일 수도, 운일 수도 있잖아요. 깔끔하게 분리할 방법이 없어요.

🍷 알렉스 와인, 스테이크, 흡연 → 암 🥗 마이크 채소, 조깅, 명상 → 건강 + 1,000가지 다른 차이
유전자, 성장환경, 환경, 수면, 그리고 수천 개의 다른 요소들. 결과의 차이는 그중 뭐에서든 올 수 있어요.

그럼 뭘 비교해야 돼요? "같은 알렉스를, 두 평행우주에서."

인과를 제대로 짚는 진짜 방법은요. 같은 사람을 두 상태에서 비교하기. 한쪽은 처치(treatment, 와인) 받고, 다른 쪽은 안 받고. 나머지는 전부 똑같이.

와인이 알렉스 암을 유발했는지 알고 싶으면 술 마신 알렉스랑 술 안 마신 알렉스를 비교해야 돼요. 같은 유전자, 같은 환경, 같은 조상. 즉 같은 사람 두 버전. 하나는 마셨고, 하나는 안 마셨고요.

가능해요? 당연히 안 되죠. 평행우주는 없잖아요. 알렉스는 한 번만 살아요. 마시거나, 안 마시거나. 둘 다는 안 돼요.

본인 얘기로 바꿔봐요. 대학 졸업하고 빅테크 대신 스타트업 갔다 쳐요. 몇 년 뒤 궁금해져요. "그때 빅테크 갔으면 지금 뭐 하고 있을까?" 알 길이 없죠. 평행우주 버전의 나는 볼 수가 없어요. 실제로 존재하는 나는 스타트업 간 나거든요. 빅테크 간 나는 머릿속에만 살아요.

알렉스 (같은 사람) 마셨다 → 암 (실제로 일어난 일) 안 마셨다 → ??? (이 세계는 존재하지 않음)
두 갈래 중 하나만 관찰할 수 있어요. 나머지 하나, 진짜 답을 가진 그 쪽은 원리적으로 관찰 불가능해요.

학자들이 이 알렉스 문제에 거창한 이름을 붙여놨어요. 인과추론의 근본문제(Fundamental Problem of Causal Inference). 이름만 거창하지 뜻은 쉬워요. 한 사람에 대해 "처치했을 때 결과"랑 "처치 안 했을 때 결과"를 동시에 못 본다는 뜻. 아직 지구상에 평행우주 열 수 있는 사람은 없으니까요.

그럼 진짜 인과는 영영 못 짚나요?

솔직히, 네.

실제 사례 하나. 몇 주 전에 길에서 폰 떨어뜨렸어요. 액정 모서리 깨졌고요. 지금도 유리 가루가 조금씩 나와요 (애플케어 이미 만료. 아파요 진짜).

자, 질문. 그날 아침 집 나오면서 당신이 길에 돌을 걷어찼다면, 그게 제 폰 깨진 원인일까요? 당연히 "아니죠" 하실 거예요.

근데 그걸 어떻게 증명해요? 이렇게 상상해 봐요. 당신이 찬 그 돌이 지나가던 리트리버 꼬리를 쳤어요. 놀란 개 주인이 바로 열받아서 트위터에 뭘 올렸어요. 제 친구가 그 트윗 보고 저한테 문자를 보냈어요. 저는 그 문자 읽으려고 폰 꺼냈다가 떨어뜨린 거예요. 각 연결고리 확률은 작아도, 0은 아니잖아요.

고전적으로 "지구 반대편 나비 날갯짓이 폭풍을 만든다"라고들 하죠. 이론적으론 세상 모든 사건이 다른 모든 사건이랑 이어져요. 두 사건이 확실히 무관하다고 말하려면 우주의 모든 인과 고리를 추적해야 돼요. 지구상에 그걸 할 수 있는 사람은 없고요. 그래서 엄밀히 말하면 "진짜 인과"는 불가능해요. 통계가 부족해서가 아니라, 세상이 그렇게 생겨먹어서예요.

돌 개 짖음 커피 노트북 트윗 문자 바람 나비 아이폰 깨짐
세상의 모든 사건은 결국 다른 모든 사건에 연결돼요. 두 사건이 진짜 무관하다는 걸 증명하려면 우주 전체를 추적해야 해요.

그래서 포기? 아뇨. "그룹"으로 가요.

여기까지 오면 "그럼 인과추론은 왜 공부해?" 싶으실 거예요. 당연한 질문이고요. 다행히 포기 안 해도 되는 길이 하나 있어요.

개인 단위에선 불가능해요. 맞아요. 근데 그룹 단위에선 돼요. 어떻게요?

핵심은요. 같은 알렉스를 두 평행우주에 놓는 건 불가능해요. 근데 그룹 단위에선 비슷한 걸 만들 수 있어요. 평균적으로 동일한 두 그룹.

체육 시간 피구팀 나누던 거 떠올려 봐요

체육 시간에 피구팀 나누던 거 생각나요?

방법 1, 알아서. 선생님이 "둘로 나눠봐" 해요. 친한 애들끼리 뭉쳐요. 잘하는 애들도 한쪽에 뭉쳐요. 팀 실력 차이가 쫙 벌어져요.

방법 2, 주사위. 선생님이 "주사위 굴려서 홀수는 A팀, 짝수는 B팀" 해요. 잘하는 애랑 못하는 애가 양쪽에 섞여요. 팀 실력이 대충 비슷하게 나와요.

이게 전부예요. 랜덤 배정(동전 던지기 식)이 두 그룹을 비슷하게 만들어줘요. 사람마다의 특성(실력이든 성격이든 뭐든)이 한쪽에 쏠리지 않고 양쪽에 고르게 뿌려지거든요.

1,000명 스케일로 키워봐요

이번엔 1,000명. 500명 A그룹, 500명 B그룹. 완전 랜덤으로, 사람마다 동전 던지듯이요.

이렇게 하면 두 그룹이 평균적으로 거의 같아져요. "평균적으로"가 핵심이에요. 두 그룹이 글자 그대로 똑같다는 얘긴 아니에요. 500명 vs 500명을 1대1로 세워 놓으면 당연히 다른 사람들이잖아요. 근데 그룹 평균은 비슷해져요. 평균 나이. 평균 소득. 평균 유전적 성향. "술 좋아하는 정도" 평균도 비슷하게 떨어져요. 샘플 크면 클수록 더 가까워지고요. 쉽게 말해 많이 뽑으면 편향이 씻겨 나간다.

진짜 마법

여기가 제일 중요해요. 측정조차 못 하는 변수들도 자동으로 균형이 맞아요.

복권 1,000장 섞어서 500장씩 두 박스에 나눠 담아봐요. 복권마다 일련번호, 당첨금액, 당첨확률, 발행일 다 있는데 우린 하나도 안 봐요. 근데도 두 박스는 평균적으로 거의 똑같아요. 평균 일련번호 비슷. 평균 당첨금액 비슷. 평균 확률 비슷. 우린 그냥 섞어서 나눈 것뿐인데요.

이게 랜덤 배정의 진짜 마법이에요. 우리가 모르는 제3의 변수들까지 알아서 처리해 줘요. 유전자든 체질이든 성격이든 수면이든 조상이든 뭐든요. 섞어서 나누면 평균이 맞춰져요.

A그룹 평균 B그룹 평균 나이 소득 구매 의향
랜덤 버튼을 몇 번 눌러보세요. 세 개의 막대(평균 나이, 소득, 구매 의향)가 매번 두 그룹에서 거울처럼 거의 똑같이 나와요. 샘플 사이즈를 바꾸면 매칭이 얼마나 정교해지는지도 보여요.

자, 이제 비교해봐요. 왜 이게 강력한지도.

두 그룹은 평균적으로 같아요. 이제 한쪽에만 처치, 다른 쪽은 그대로. A그룹은 처치 받고, B그룹은 안 받아요.

왜 강력하냐고요? 다시 쉽게 말해볼게요. 처치 전엔 두 그룹이 평균적으로 똑같았어요. 평균 나이, 평균 소득, 평균 구매 성향. 심지어 우리가 측정 못 하는 변수들까지 평균적으론 같았죠 (복권 박스 얘기 핵심이 바로 이거). 그래서 처치 후에 두 그룹 결과가 다르게 나왔다면, 그 차이를 만든 건 딱 하나. 처치뿐이에요. 다른 설명은 성립 안 돼요.

누가 반박할 수도 있죠. "그 차이, 유전자 때문 아니야? 환경 때문 아니야? 처음부터 더 많이 살 사람들이었던 거 아니야?" 반박 전부가 같은 지점에서 무너져요. 랜덤 배정된 두 그룹은 그 모든 변수에서 평균적으로 똑같았거든요. 다른 건 처치 그 자체뿐. 알렉스 vs 마이크 문제가 여기선 안 통해요. 두 랜덤 그룹이 같은 상태에서 출발했으니, 결과 차이는 처치일 수밖에요.

다르게 말하면, 랜덤 배정은 "그룹 단위의 평행우주"를 만들어줘요. 한 사람의 평행우주 둘은 못 만들어도, 한 군중의 평행우주 둘은 만들 수 있어요 (평균적으로 비슷한 두 랜덤 그룹). 한쪽만 처치하고 다른 쪽은 놔두면 처치의 평균 효과가 깔끔하게 떨어져 나와요. 그렇게 인과추론의 근본문제를 그룹 단위에서 우회해버리는 거예요.

이게 실험의 기본 논리. 임상시험. A/B 테스트. 정책 평가. 전부 같은 동작이에요. 랜덤으로 쪼개고, 한쪽에만 처치, 비교. 단순한데 강력해요.

A그룹 (처치) $180 B그룹 (처치 X) $120 + $60 = 처치 효과 처치 후 평균 매출 같은 기간 평균 매출
같은 상태에서 출발한 두 그룹 중 하나만 처치. 두 평균 사이의 격차가 처치가 만든 효과예요. 깔끔하게.

이걸 광고에 가져가면 어떻게 돼요?

지금까지 쌓은 핵심은 하나. 처치 받은 그룹이랑 안 받은 그룹이 같은 상태에서 출발해야 비교가 돼요. 안 그러면 결과 차이가 처치 때문인지, 처음부터 두 그룹이 달라서였는지 구분이 안 되거든요. 피구팀. 복권 박스. 알렉스 vs 마이크. 전부 같은 얘기예요.

근데 광고 리포트는 이걸 거의 안 지켜요. "귀찮아서 안 지키는" 게 아니라 지킬 방법이 사실상 없어서. 광고판에선 랜덤 배정이 거의 불가능하거든요. 광고 플랫폼이 "이 유저한테 광고 보여줄까 말까"를 동전 던져서 정하진 않잖아요. 알고리즘으로 살 가능성 높은 유저 골라서 그쪽에 광고를 밀어요. 처음부터 "광고 본 사람"과 "안 본 사람"은 완전히 다른 종류의 사람들이에요. 피구 시간에 선생님이 "너네끼리 알아서 나눠" 한 거랑 똑같아요. 광고판에서 이게 왜 특히 힘든지는 따로 글 하나로 다룰게요. 이번엔 이거 하나만. 리포트 숫자는 당신한테 거짓말할 수 있어요. (광고 얘기는 앞으로 많이 나와요. 기대해 주세요.)

매일 보시는 숫자 중에 이런 함정에 걸리는 게 둘 있어요. 광고 매출이랑 쿠폰 매출. 겉은 달라 보여도 뿌리가 같아요. 둘 다 "처음부터 같은 두 그룹" 테스트를 통과 못 해요. 하나씩 볼게요.

함정 1. 리포트에 찍힌 "광고 매출 10억"

광고 돌리는 분이면 매일 보는 숫자. "이번 분기 이 캠페인이 10억 매출 가져왔다." 이 광고를 클릭한 사람 전부의 클릭 후 매출을 합한 숫자예요. (ROAS는 광고 투자 대비 매출인데, 그냥 이 숫자를 광고비로 나눈 값. 이 글에선 비율은 접고 그냥 10억 숫자만 볼게요.)

사람들은 이 숫자를 대략 이렇게 읽어요. "광고가 10억을 만들어냈다. 끄면 그 10억이 날아간다." 광고의 인과 효과가 10억이라고 전제하는 거죠. 머릿속엔 이미 비교가 세워져 있어요. 광고 있는 세계, 10억 매출 vs 광고 없는 세계, 0원.

세 가지 짚어볼게요.

1. 이 숫자가 실제로 세는 건 뭐예요? 쉬워요. 광고 클릭한 사람 전부의 클릭 후 매출 합. 관문은 "광고 클릭" 하나. 그 관문 통과한 모두의 매출이 10억에 들어가요.

2. 이 숫자를 읽을 때 암묵적으로 하는 비교는요? 리포트는 "클릭한 사람들이 10억 썼다"만 보여줘요. 근데 읽는 순간 머리는 반대편으로 뛰어요. "광고 없었으면 이 사람들 매출 얼마였을까? 0원." 그래서 "광고가 10억 만들었다"가 그럴듯해지는 거예요.

빠르게 어휘 하나. 그 상상 속 반대편, "광고 안 나왔다면 어땠을까"의 세계. 여기 이름이 있어요. 반사실(counterfactual). 학술 용어긴 한데 이미 쓰고 있던 개념이에요. 앞에 나왔던 알렉스의 "안 마셨다" 평행우주 기억하시죠? 그게 반사실. 평행우주 = 반사실. 그러니까 지금 우리는 반사실 매출을 조용히 "0원"으로 깔고 있는 거예요.

3. 왜 틀렸냐면요. 광고 없었어도 그 사람들 상당수는 어차피 샀을 거거든요. 요즘 광고 배포는 이미 살 가능성 높은 사람 앞에 광고 두도록 설계돼 있어요. 리타겟팅(이미 사이트 들어왔던 사람한테 광고 또 보여주기)은 그 방문자들 다시 끌어오는 거예요. 브랜드 검색 광고(검색창에 브랜드 이름 친 사람한테 뜨는 광고)는 이미 브랜드 이름 친 사람 잡는 거고요. 다 똑같아요. 광고가 이 사람 앞에 뜨게 된 조건 자체가 "곧 살 사람"이라는 뜻이에요. 광고 아니었어도 자연 검색(유료 광고 대신 무료 구글 결과 클릭), 다이렉트 트래픽, 이메일, 뭐든 통해서 왔을 거예요. "광고 없는 세계 = 0원" 가정은 처음부터 틀렸어요. 광고 없는 세계에선 그 사람들 중 일부는 사고 일부는 안 사요. 몇 명이요? 리포트는 그걸 안 재요.

그래서 10억엔 사실 완전히 다른 세 종류의 구매가 섞여 있어요. 리포트는 그걸 다 "광고 매출"로 묶어버리고요. 근데 "광고 없었다면 어땠을까" (= 반사실) 기준으로 쪼개면 세 유형이 나와요.

  • (a) 광고 없었으면 아무것도 안 샀을 사람. 광고 보고 $100 샀어요. → $100은 전부 광고의 공. 교과서 (a)예요. 모두가 머릿속으로 떠올리는 버전.
  • (b) 광고 없어도 자연 검색으로 $100 샀을 사람. 마침 광고가 떠서 클릭했고 $100 샀어요. → 광고가 유발한 매출은 $0. 광고가 경로에 끼어들었을 뿐, 구매는 어차피 일어났을 거예요. 그래도 리포트는 $100 전액을 "광고 매출"로 세요.
  • (c) 광고 없어도 $100 샀을 사람인데, 광고 보고 하나 더 담아서 $200 쓴 경우. → 광고가 유발한 건 추가된 $100뿐. 원래 $100은 광고 공이 아니에요. 근데 리포트는 $200 전액을 "광고 매출"로 세요.
광고 없음 대시보드 표시 광고의 진짜 몫 (a) $0 → $100 +$100 (b) $100 → $100 $0 (c) $100 → $200 +$100 대시보드 합계 $400 vs 광고의 진짜 매출 $200 $100 + $100 + $200이 "광고 매출"로 카운트되지만, 실제 광고의 공은 $100 + $100뿐.

중요한 포인트 하나. 이게 광고가 아무 매출도 못 만든단 얘긴 아니에요. (a)는 100% 광고. (c)의 추가분도 광고. 광고엔 진짜 효과가 있어요. 광고 때문에만 존재하는 추가 매출 말이에요. 이 추가분한테 이름도 있어요. 추가 리프트(incremental lift). 근데 리포트의 10억엔 세 유형이 다 뒤섞여 있어요. 쪼개보면요,

  • 광고가 실제로 유발한 것 = (a) 전부 + (c)의 추가분
  • 광고가 유발 안 했는데 공만 받은 것 = (b) 전부 + (c)의 원래 몫

리포트는 이걸 구분 못 해요. 전부 "광고 매출"로 묶어버리거든요. 머릿속 10억은 (a)만의 세계예요. 실제 세계는 (a), (b), (c)가 섞여 있고요. 그래서 광고의 실제 효과는 리포트 숫자보다 작아요 (숫자가 효과를 부풀리는 거죠).

앞에 나왔던 아이스크림이랑 익사사고랑 똑같은 모양. 아이스크림이랑 익사 뒤엔 숨은 공통 원인이 있었잖아요. 바로 "여름". 광고 클릭이랑 구매 뒤에도 숨은 공통 원인이 있어요. "어차피 살 사람." 광고 클릭하는 사람이랑 사는 사람이 같은 사람들이에요. 광고가 구매를 만든 게 아니고, 공통된 구매 의향이 둘 다를 밀어준 거예요. (b) 케이스가 딱 그 모양이에요.

그래서 광고 측정의 진짜 질문은요. "리포트에 찍힌 광고 매출 10억 중, 광고가 실제로 유발한 몫 (= (a) 전부 + (c)의 추가분, 즉 추가 리프트)은 얼마냐?" 이걸 어떻게 쪼개는지가 이 블로그 남은 글들의 주제예요. 미리 하나만. "이걸 완벽하게 분리할 수 있다"고 말하는 사람은 거짓말하는 거예요. 앞에서 깐 "진짜 인과는 불가능" 라인이 여기도 그대로 적용돼요. 우린 덜 틀린 추정치 만들 뿐이지, 정답지 찾는 게 아니에요.

함정 2. 쿠폰도 뿌리가 같아요

광고 매출 함정이 반사실을 조용히 $0으로 깔아버린 거였다면, 쿠폰 함정은 완전히 다른 그룹을 반사실로 써버리는 거예요. 뿌리는 같고 모양만 달라요.

이커머스 결제 페이지에 "10% 할인, 코드, SUMMER10" 배너 걸고 분기 말에 데이터 뽑았다 쳐요.

  • 쿠폰 쓴 주문, 평균 바스켓 $500 (3,000건)
  • 쿠폰 안 쓴 주문, 평균 바스켓 $250 (10,000건)

쿠폰 주문이 2배. 팀 결론. "쿠폰이 평균 바스켓을 2배로 만들었네. 다음 분기엔 쿠폰 더 세게 밀자."

대시보드 표시 쿠폰 X 주문 $250 쿠폰 O 주문 $500 2배 쿠폰 쓴 사람과 안 쓴 사람은 처음부터 다른 쇼퍼였어요. 격차는 쿠폰이 만든 게 아니에요. 대부분은 "누가 거기 있었나"예요.
대시보드엔, 쿠폰 주문이 2배. 현실은, 두 그룹이 처음부터 다른 쇼퍼였기에 격차는 쿠폰의 공이 아니에요.

머릿속 모델은 이래요. 쿠폰 → 바스켓 2배. 끄면 그 추가 매출이 사라진다.

근데 리포트가 실제로 비교하는 건 쿠폰 쓴 주문 vs 안 쓴 주문. 이 두 그룹이 같은 종류의 사람들일까요? 아니에요. 알렉스 vs 마이크 재등장.

결제 때 쿠폰 코드 치는 사람은 거의 항상 처음부터 많이 살 작정으로 들어온 사람들이에요. 리뷰도 봤고. 할인 코드도 찾아봤고. 장바구니도 크게 채웠고요. 반면 쿠폰 안 쓰는 쪽엔 "쿠폰 있는 줄 몰랐다", "지나가다 하나만 집었다", "할인 관심 없다" 같은 완전 다른 종류의 쇼퍼가 섞여 있어요. 두 그룹 차이는 "코드 쳤냐 안 쳤냐"보다 "들어올 때 얼마나 살 작정이었냐"가 훨씬 더 커요.

제일 쉽게 말하면, "어차피 할 사람만 하는 함정"이에요. 쓰는 쪽이랑 안 쓰는 쪽은 처음부터 완전히 다른 두 집단. 이걸 부르는 이름도 있어요. 셀프 셀렉션(self-selection, 자기 선택). 처치 그룹(쿠폰 사용자)이 애초에 처치 안 받은 그룹이랑 같은 사람들이 아니었기 때문에, 격차가 처치 때문인지, 아니면 처음부터 누가 어느 그룹에 있었냐 때문인지 구분이 안 되는 거예요.

여기도 똑같은 숨은 공통 원인이 등장. "구매 의향." 많이 살 의향 있는 사람들은 쿠폰도 찾아 쓰고 많이도 사요. 쿠폰이 큰 바스켓을 만든 게 아니라, 대부분은 "구매 의향"이 둘 다를 밀어준 거예요. 쿠폰 버전 아이스크림/익사사고죠.

둘을 한 줄로 정리하면

  • 광고 매출 함정: 우리가 숫자 읽을 때 조용히 "광고 없을 때 매출 = $0"으로 깔아버려요. 반사실 숫자가 틀렸어요.
  • 쿠폰 매출 함정: 리포트가 "쿠폰 안 쓴 사람 매출"을 반사실로 넘겨주고 우리가 받아들여요. 반사실 그룹이 아예 다른 종류의 사람인데요.

둘 다 "제대로 된 반사실이 없는" 문제예요. 비교할 반대편 없이 숫자를 해석하고 있는 거죠. 광고나 쿠폰에 진짜 효과가 없다는 뜻은 아니에요. 효과는 있어요. 포인트는 리포트 숫자 전부가 그 효과는 아니라는 거예요. 앞에서 쌓은 규칙("처치/비처치가 같은 상태에서 출발해야 한다")을 안 지키는 순간, 숫자는 실제 효과를 과대평가해요.

그럼 실제로 어떻게 재요? eBay 실험 얘기.

"리포트 숫자에서 처치의 진짜 효과를 어떻게 분리하지?" 이게 인과추론 연구자들이 평생 붙잡고 사는 숙제예요. 방법은 수십 가지 있고, 뭐가 맞냐는 분야마다 달라요. 공통점이 하나 있는데요. 그 어떤 방법도 "완벽한 측정"은 아니에요. 방법이 허접해서가 아니라, 대조할 평행우주가 없으니 정답지를 아는 사람이 없어서예요. 방법들끼리 비교하는 것도 종종 어렵고요. (앞에서 깐 "진짜 인과는 불가능"의 또 다른 얼굴.)

그래도 가장 깔끔한 단일 방법은 이 글 내내 쌓아온 그거. 비슷한 두 그룹을 랜덤하게 쪼개고, 한쪽에만 처치, 결과 비교. 그림을 완성해주는 유명한 실제 사례가 하나 있어요.

2015년 eBay 논문이에요.

eBay는 신상이랑 중고 거래하는 미국 대형 마켓플레이스. 누가 구글에서 "ebay" 치면, 결과 페이지 맨 위엔 유료 광고, 바로 아래엔 eBay 자연 검색 결과가 떠요. 자연 검색 결과는 구글이 알아서 보여주는 무료 리스팅. 유료 광고는 eBay가 그 자연 리스팅 위에 뜨려고 돈 낸 거고요. 광고 클릭될 때마다 eBay가 구글에 몇 센트씩 내요.

대시보드에선 그 광고가 어마어마한 수익률을 보여주고 있었어요. 방금 "광고 매출" 함정에서 풀었던 그 상황 그대로. eBay 팀은 우리가 쭉 묻던 질문을 던졌죠. "광고가 진짜로 매출을 유발한 건가, 아니면 어차피 자연 검색 눌러서 들어왔을 사람들인가?" 대시보드는 그 질문에 답을 못 해요. 광고 클릭한 사람이랑 안 한 사람이 처음부터 다른 집단이니까요.

그래서 eBay가 랜덤 실험을 돌렸어요. 미국은 어떤 지역 TV 채널을 보냐로 210개 지역으로 나뉘어요 (광고팀은 이걸 DMA라고 부르고 지역 광고 집행 단위로 써요). eBay가 그중 68개를 랜덤으로 뽑아서 그 지역의 "ebay" 브랜드 검색 광고를 완전히 꺼버렸어요 (= 처치, 광고 끄기). 나머지 142개 지역은 평소대로 돌렸고요 (= 처치 없음). 실험은 약 두 달. 랜덤 분배로 쪼갠 이유는 우리가 쌓아온 그 로직이에요. 지역 수가 충분히 많으면, 두 그룹 지역들은 평균적으로 모든 변수(소득, 쇼핑 패턴, 뭐든)에서 비슷하게 나와요. 복권 섞기 로직이랑 똑같아요. 복권 티켓 자리에 지역이 들어갔을 뿐. 섞고, 쪼갠 거죠.

68개 지역, 광고 OFF (처치) 142개 지역, 광고 ON 총 210개 지역, 섞은 뒤 분배
각 네모 하나가 한 지역이에요. 68개가 랜덤으로 어두워지고(광고 OFF), 나머지 142개는 광고를 계속 돌려요. 앞의 복권 박스처럼, 섞은 뒤 쪼개는 거예요.

두 달 뒤, 두 지역 그룹의 매출을 비교했어요.

광고 끈 지역 매출이 광고 켠 지역 매출과 거의 같았어요. 광고 끈 지역 사람들은 그냥 자연 검색의 eBay 링크를 클릭해서 들어왔어요.

광고 OFF 지역 $9.95M 광고 ON 지역 $10.00M ≈ 차이, 미미함. 광고가 자연 유입 위에 얹어주는 게 거의 없었던 거예요.
예시 숫자. 논문의 결론, 브랜드 키워드 광고가 자연 검색이 이미 끌어오고 있던 매출 위에 사실상 아무것도 얹어주지 못했어요.

리포트가 유료 광고에 공 돌리고 있던 클릭이 거의 전부 광고 없었어도 자연 검색으로 들어왔을 사람들이었어요. 광고가 "실제로 유발한" 추가 매출은 거의 0에 가까웠다는 얘기죠. 대시보드에 찍히던 그 어마어마한 "광고 매출" 숫자 거의 전부가 어차피 들어왔을 사람들한테 돌려주던 공이었어요. 순수한 착각. 인과가 아니라 상관.

출처: Blake, Nosko, Tadelis (2015), Econometrica, "Consumer Heterogeneity and Paid Search Effectiveness." 퍼포먼스 마케터들 밤잠 못 자게 만든 논문이에요.

왜 이게 중요하냐면요

대시보드만 봐선 이걸 알아낼 방법이 없어요. 광고가 황금알 낳는 거위처럼 보이거든요. 끄자고 하면 다들 "매출 잃는다"고 패닉해요. 근데 매출은 안 떠났어요. 돈이 떠난 거죠.

이걸 잡아낸 방법이 우리가 쭉 쌓아온 그거. 두 그룹 랜덤으로 쪼개고, 한쪽에 처치, 결과 비교. 그룹 단위 인과 추정이에요. 가게 사장님의 "광고비 2배로" 판단. "쿠폰이 매출 올렸나?" 질문. 전부 다요. 이게 답을 제대로 내는 프레임이에요.

솔직한 단서 하나. 이런 실험조차 "진짜 인과"는 아니에요. 신중히 쪼개도 이상하게 비대표적인 지역이 걸릴 수 있어요. 기간 중 외부 사건(연휴, 경쟁사 프로모션, 뉴스 사이클)이 결과를 흔들 수도 있고요. 광고 끈 지역 사람들이 광고 켠 지역에 넘어가서 쇼핑하면 효과가 희석돼요 (스필오버, spillover). 글 중간에 말했듯이 엄밀히 말해 진짜 인과는 불가능해요. 하지만 랜덤 실험은 대시보드에서 뽑은 어떤 숫자보다도 진실에 훨씬 가까워요. 그게 치를 만한 타협이에요.

이 블로그 글 거의 전부는 결국 한 줄의 변주. "내가 보고 있는 이 숫자, 인과인가 상관인가." 어트리뷰션. 개인화. 광고 리프트 테스트. 전부 같은 질문 다른 모양이에요. "인과처럼 보일 뿐인 숫자에서 진짜 인과를 어떻게 뽑아낼까."

다음 글은요

여기까지가 인과추론의 사고방식이에요. 진짜 인과는 불가능. 그룹 단위에선 랜덤하게 쪼개고 비교하면 그에 가까운 걸 얻어낼 수 있고요.

다음 글은 여기 이어서, "그럼 광고에서 이런 랜덤 실험 실제로 어떻게 설계해?"예요. A/B 테스트, 리프트 테스트, 지역 실험(geo experiment) 같은 그 가족 전체요.

(A/B 테스트 관련 짧은 메모. "두 캠페인 중 어느 쪽이 더 잘 나오나" 비교라고만 생각하면 반쪽짜리예요. A/B 테스트의 진짜 심장은 평균적으로 "처치 없는 세계"를 재구성하는 거예요. 그 방식으로 위에서 말한 "근본문제"를 우회하는 거죠. 다음 글에서 더 풀어볼게요.)

추신. 다음 글이 꼭 "실험 설계" 편이 된단 보장은 없어요. 그 사이에 다른 주제가 더 끌리면 그게 먼저예요. 미리 양해 부탁드립니다.

마지막 한 줄. 인과를 완벽하게 짚을 수 있다고 말하는 사람은 거짓말쟁이, 망상가, 아니면 신. 우린 셋 다 아니에요. 그래서 "완벽은 포기하고 똑똑한 타협 받아들이기"가 더 나은 길이에요. 이 블로그가 앞으로 쓸 글 거의 전부(측정, 개인화, 광고 실험)는 그 타협의 서로 다른 모양이에요.