지난 글(바로가기)에서 마지막에 이런 이야기를 남겼습니다. 실험 문화의 완성은 실험을 더 많이 하는 것도 중요하지만, 실험이 불가능할 때 무엇을 해야 하는지 아는 것도 챙겨야 하지 않을까요?
지금까지의 이야기에는 전제가 하나 있었습니다. 실험 플랫폼을 통해 손쉽게 A/B 테스트를 돌릴 수 있다는 것이죠. 그런데 가격을 바꾸거나, 신규 프로덕트를 런칭하거나, 대규모 업데이트를 적용하는 일처럼 정말 중요한 결정일수록 그 전제가 깨질 가능성도 높습니다.
그래서 실험 문화가 잘 자리 잡은 조직에서 오히려 이상한 일이 벌어집니다. 실험할 수 있는 것만 열심히 검증하고, 정작 큰 결정은 여전히 회의실의 목소리로 정해지는 거예요. Diffusion 편에서 실험을 많이 한다는 것과 중요한 결정을 실험으로 내린다는 것은 전혀 다른 문제라고 했는데, 지금이 딱 그 간극에 빠진 상태입니다. 오늘은 그 자리에서 우리가 무엇을 할 수 있는지 이야기해 보려 합니다.
"실험이 불가능하다"는 말을 들으면 저는 그게 정말 불가능한 건지, 아직 안 해본 건지부터 구분합니다. 제가 거쳐온 조직들에서는 “안 되는 이유”부터 찾기 시작하면 무엇을 하든 쉽지 않았거든요. 따져 보면 막히는 이유는 세 갈래로 모였습니다.
막힌 이유부터 가려내는 건 갈래마다 푸는 방식이 다르기 때문입니다. 조직 문화는 설득해야 하고, 기술은 설계를 다시 해야 합니다. 정책은 돌아갈 길을 찾아야 할 때가 많고요. 그래서 실험이 불가능하다고 판단했다면 그 이유를 세 갈래 중 하나로 적어두자고 제안하는 편입니다.
그것만으로 대화가 "그냥 안 돼요"에서 "우리 힘으로 풀 수 있는 문제인가, 풀 수 있다면 언제인가"로 바뀌거든요.

직관으로 내린 결정 자체가 잘못이라고는 생각하지 않습니다. 데이터로 일하는 사람이라면 누구나 그런 결정을 한 번쯤 지나왔을 거예요. 문제는 그게 기본값이 될 때입니다.
실험이 불가능하다는 것과 인과를 따질 수 없다는 것은 같은 말이 아닙니다. 무작위 배정은 목적이 아니라 수단입니다.
목적은 "이 변화를 겪지 않은 우리"를 만들어 비교하는 것이죠. 실험군이 그 변화를 겪지 않았더라면 어땠을지, 그 반사실(Counterfactual)에 최대한 가까운 대조군을 찾는 일입니다. A/B 테스트는 그 일을 가장 확실하게 해주는 수단이고요. 무작위 배정을 쓸 수 없다면, 그 확실함을 우리가 세운 가정으로 대신 채워야 합니다.
그러니 사용자 단위 무작위 배정이 막혔을 때 던질 질문은 하나예요.
변화가 없었다면 두 그룹이 같은 흐름을 보였을 거라고, 무엇을 근거로 말할 수 있는가.

어려운 추정 방법보다 이 질문에 답하는 게 먼저입니다. 비교할 두 집단을 잘못 고르면 뒤의 정교한 추정도 소용없으니까요. 제가 가장 먼저 보는 건 나누는 단위를 바꿀 수 있는지입니다.
사용자 단위로는 못 나눠도 서버나 지역 단위로는 나눌 수 있는 경우가 생각보다 많습니다. 서버끼리 경제가 분리된 게임이라면 앞에서 말한 시세 문제도 함께 줄어들고요. 다만 단위가 커지면 나눌 수 있는 개수가 줄어서, 결과가 더 크게 흔들리고 작은 효과는 잡아내기 어려워집니다. 이베이의 유명한 사례가 이 구조입니다.
검색 광고가 매출을 만든다고 오래 믿었지만, 사용자 단위로 광고를 껐다 켤 수는 없었어요. 대신 무작위로 고른 일부 지역에서만 광고를 끄고 나머지 지역과 비교했더니, 매출은 거의 줄지 않았습니다.

일부 검색 엔진에서만 브랜드 검색어 광고를 멈췄을 때는 더 분명했습니다. 광고가 사라지자 사람들이 바로 아래 자연 검색 결과를 눌러 들어왔거든요. 광고가 만든 것처럼 보였던 매출의 상당 부분은, 광고가 없었어도 일어났을 매출이었죠.
단위를 바꿔도 나눌 수 없다면, 이미 나뉘어 있는 곳을 찾습니다. 우리가 나누지 않았지만 바깥 사정으로 갈라진 상황을 빌려 쓰는 것, 자연실험(Natural Experiment)이죠. 국가나 플랫폼, 서버별로 적용 시점이 달랐다면 아직 적용되지 않은 쪽을 대조군으로 둡니다. 각 그룹의 적용 전후 변화를 구한 뒤, 그 변화끼리 한 번 더 빼는 방식입니다(이중차분, Difference-in-Differences). 단, 시점이 결과와 상관없는 이유로 갈렸어야 합니다. 지표가 이미 오르고 있던 지역부터 적용했다면, 그건 자연실험이 아니라 선택이니까요.
시점 대신 기준선이 집단을 갈라놓기도 합니다. 정해진 기준을 넘느냐로 혜택이 갈린다면, 기준선 바로 위와 바로 아래의 유저는 거의 같은 사람들일 테니 둘을 비교합니다(회귀 불연속, Regression Discontinuity). 그런 경계조차 없으면 대조군을 직접 만듭니다. 적용되지 않은 비슷한 서버 여럿을 섞되, 적용 전 흐름이 실험군과 최대한 겹치도록 가중치를 고르는 식이죠(통제집단합성법, Synthetic Control). 이름은 달라도 하는 일은 같습니다. "이 변화를 겪지 않은 우리"에 최대한 가까운 비교 대상을 만드는 것.

방법마다 기대는 가정과, 그 가정이 깨지는 지점은 조금씩 다릅니다. 그 이야기는 제 강의「데이터 실무자의 사고력 강화 : AI 인과추론 실무」(바로가기)에서 자세히 다뤘으니 함께 보셔도 좋겠습니다.
이 방법들을 제가 실제로 꺼내 든 건 대부분 마지막 갈래인 정책 때문이었어요.
정책상 빌드가 모든 유저에게 동일하게 나가야 하는 경우가 있습니다. 개인정보 동의 문구처럼 누구에게는 A 버전, 누구에게는 B 버전을 보여줄 수 없는 것들이죠. 유저가 차별적인 대우를 받지 않아야 한다는 요건이 걸린 경우도 마찬가지고요.
다만 모두에게 같은 버전을 줘야 한다는 것이지, 반영되는 시점까지 똑같아야 하는 건 아니었습니다. 국가별 시행 일정이나 플랫폼별 심사 일정 때문에 먼저 받는 쪽과 나중에 받는 쪽이 자연스럽게 생깁니다.
돌아갈 길은 거기 있었습니다. 저는 그 시차를 비교에 썼습니다.
설계에서 가장 먼저 정한 건 두 가지입니다. 어떤 지표가 오르기를 기대하는지, 그리고 무엇이 망가지면 안 되는지. 무작위로 나누지 못할 뿐, 무엇을 볼지는 미리 정할 수 있으니까요. 얼마나 올라야 효과로 볼지, 전후 기간을 어떻게 잡을지도 결과를 보기 전에 정했습니다. 그리고 숫자를 열기 전에 네 가지를 확인했습니다.
대시보드는 먼저 받은 쪽과 아직 안 받은 쪽의 적용 전후 변화를 그대로 나란히 놓고 보고 있었습니다. 이 네 가지를 통과하는 대조군을 새로 잡아 다시 계산했더니, 대시보드에서 보던 효과의 4분의 1이 사라졌습니다.
우리가 적용한 변화에 효과가 없었다는 뜻은 아닙니다. 적용 전 구간으로 거슬러 올라가 보니, 대시보드가 비교하던 두 그룹은 처음부터 다른 기울기로 움직이고 있었습니다. 새로 잡은 대조군은 적용 전 흐름이 실험군과 거의 겹쳤고요. 사라진 4분의 1은 우리가 만든 변화가 아니라, 두 그룹이 원래부터 다르게 움직이던 몫이었던 겁니다. 그대로 갔다면 그 흐름까지 우리 성과로 계산해 다음 분기 계획을 세웠겠죠.

이 방식을 처음 제안했을 때 협업 팀의 구성원들은 반신반의하지 않았습니다. 데이터로 이야기하는 방식이 이미 자리 잡혀 있었거든요. Commitment 편과 Diffusion 편을 거치며 쌓아온 것들이 여기서 제값을 했습니다.
질문은 오히려 결과가 나온 뒤에 왔습니다.
설계 때는 조용하다가 숫자가 나오면 "그때 업데이트 때문 아닌가요?", "그 시기에 비슷한 장르 신작이 나왔잖아요" 같은 이야기가 나왔어요
게임은 업데이트, 이벤트, 마케팅, 시즌이 동시에 돌아가서 지표가 움직이면 원인 후보가 늘 대여섯 개라, 충분히 나올 법한 질문입니다. 다만 그 질문은 주로 결과가 자기 예상과 다를 때 등장했습니다.
그럴 때 저는 그 요인이 왜 영향이 없었는지를 설명하려 들지 않았습니다. 대신 그게 얼마나 영향을 줬어야 결론이 뒤집히는지를 따졌어요. 업데이트가 두 그룹에 비슷하게 영향을 줬다면, 두 그룹의 전후 변화를 빼는 과정에서 지워집니다. 효과를 통째로 설명하려면 한쪽 그룹에만 치우쳐, 그것도 우리가 본 효과만큼 크게 작용했어야 하죠.
저는 그 크기를, 지난 업데이트나 비슷한 장르 신작이 나왔을 때 같은 지표에서 바로 이 두 그룹 사이가 실제로 얼마나 벌어졌는지와 비교했습니다. 이렇게 물으면 반박이 확인할 수 있는 질문이 됩니다. 여기에 두 가지를 더 확인했습니다.
대부분은 이 확인을 거치고 나면, 결론을 뒤집을 만큼 한쪽에 쏠린 영향은 현실적이지 않다는 데 합의하며 정리됐습니다. 결과를 공유할 때도 결론만 올리지 않았습니다. 이 숫자가 어떤 조건에서 성립하는지, 우리 프로덕트의 어떤 맥락과 함께 읽어야 하는지를 데이터와 유저 이야기로 함께 보여줬어요.
그러자 회의의 질문이 Trustworthy Numbers 편에서 이야기한 "그래서 이 숫자, 믿어도 되나요?"에서
"그럼 이 결과를 바탕으로 다음엔 뭘 해볼까요?"
로 바뀌더라고요. 반박을 막는 게 목적이 아닙니다. 반박을 데이터로 검증 가능한 형태로 바꾸는 게 목적입니다.

그래도 끝까지 남는 반박이 하나 있습니다.
그 방법은 100% 확실한 게 아니잖아요.
맞습니다. 같은 조건이라면, 실험 없이 한 분석은 무작위 배정을 통한 A/B 테스트보다 확신이 약할 수밖에 없습니다. 문제는 무엇과 비교하느냐입니다.
대안이 완벽한 실험이라면 당연히 실험을 해야죠. 그런데 대안이 "그냥 감으로 결정하기"라면, 가설과 전제를 드러내고 최선을 다해 추정한 숫자가 훨씬 낫지 않을까요?
제 기준은 가능하면 실험을 하되, 안 되면 왜 안 되는지를 세 갈래 중 하나로 적어두고, 최선의 비교 대상을 만들어 전제를 밝힙니다. 그것마저 어려우면 최소한 우리가 무엇을 모르는지라도 적어둡니다. 모르고 내리는 결정과 모른다는 걸 알고 내리는 결정은 다르거든요. 후자는 적어도 어디를 지켜봐야 하는지를 압니다.

실험 문화의 완성은 실험 건수에 있지 않다고 생각합니다.
실험할 수 있는 것은 실험하고, 실험할 수 없는 것 앞에서도 "그럼 어떻게 확인하죠?"라는 질문을 포기하지 않는 것.
이제 마지막 한 편이 남았습니다. 오늘 이야기한 결정들에는 공통점이 하나 더 있어요.
유저를 두 그룹으로 나눠 미리 확인해볼 수 없는 결정은, 대개 모두에게 한 번에 나가는 결정이기도 합니다. 일부에게 먼저 내보내고 거둬들일 수 있었다면 애초에 실험을 했겠죠. 가격은 되돌려도 그사이 유저가 느낀 불신까지 돌아오지는 않고, 대규모 업데이트는 롤백해도 유저가 이미 겪은 경험이 남습니다. 검증하기 가장 어려운 결정이, 되돌리기도 가장 어려운 결정인 셈입니다.
이런 결정일수록 결론만큼이나, 그 결론이 무엇을 근거로 누구의 판단으로 내려졌는지가 남아야 합니다. 오늘 이야기한 전제와 조건을 드러내는 일도 결국 그걸 남기는 일이었고요.
그런데 요즘은 그 근거를 만드는 자리에 AI가 들어오기 시작했습니다. 분석도, 요약도, 권고까지 적힌 결정 문서도 AI가 먼저 써 옵니다. 시리즈의 마지막 글 Decisions in the Age of AI는 이 질문에서 시작합니다.
해당 액션을 그대로 승인했다면, 과연 그 결정은 누가 내린 걸까요?
함께 보면 좋은 강의
『데이터 실무자의 사고력 강화 : AI 인과추론 실무』는 크래프톤 데이터 분석가 신진수님과 함께 상관관계와 인과관계를 구분하는 사고 방식, 그리고 실무에서 실제로 활용되는 실험과 판단의 기준을 다루는 강의입니다.
단순히 분석하는 것을 넘어, “무엇이 무엇을 움직였는가”를 고민해보고 싶다면 추천드립니다.

? 『데이터 실무자의 사고력 강화 : AI 인과추론 실무』 보러 가기
최신 콘텐츠