굿하트의 법칙, 클릭률을 올렸는데 왜 유지율이 떨어질까
들어가며
이번 실험은 완승이었다. 새 썸네일과 제목 스타일을 붙인 목록 화면이 기존보다 클릭률(click-through rate)을 20% 끌어올렸다. 대시보드의 막대가 시원하게 솟았고, 보고서 제목에 성공이라고 적었다. 팀 전체가 이 승리를 자축했다.
그런데 한 달쯤 뒤, 다른 대시보드를 보던 팀원이 말을 꺼낸다.
팀원: “클릭은 늘었는데, 7일 유지율이 3%p 떨어졌어요.” PM: “그럴 리가. 클릭이 늘면 사람들이 더 많이 들어온 건데 왜 덜 남아요?” 팀원: “들어와서 열어봤다가 기대랑 다르니까 그냥 나가는 것 같아요.”
클릭률은 올랐는데 사람은 덜 남았다. 지표 하나를 올린 대가로 다른 지표가 깎였다. 이건 실수나 우연이 아니다. 지표를 목표로 삼고 밀어붙일 때 반복해서 나타나는, 이름이 붙은 현상이다. 굿하트의 법칙(Goodhart’s law)이라고 부른다.
굿하트의 법칙이란
굿하트의 법칙을 한 문장으로 줄이면 이렇다. 어떤 측정값이 목표가 되면, 그건 더 이상 좋은 측정값이기를 멈춘다.
말이 좀 추상적이니 학교 이야기로 풀어보자. 원래 시험 점수는 학생이 내용을 얼마나 이해했는지를 재는 측정값이다. 점수가 높으면 대체로 이해도 깊다. 여기까지는 점수와 이해가 사이좋게 같이 움직인다. 그런데 학교가 점수 자체를 목표로 걸고 점수로만 학생을 줄 세우기 시작하면, 학생은 이해가 아니라 점수를 올리는 데 최적화한다. 기출문제만 외우고, 시험에 안 나오는 부분은 건너뛰고, 찍는 요령을 익힌다. 점수는 오르는데 이해는 안 따라온다. 점수와 이해가 갈라선다. 점수를 목표로 삼는 순간, 점수는 이해도를 재는 좋은 잣대이기를 멈춘 것이다.
핵심은 측정값과 진짜 목적 사이의 관계에 있다. 처음에 우리가 어떤 숫자를 지표로 고른 건, 그 숫자가 진짜 관심사와 같이 움직였기 때문이다. 시험 점수와 이해도처럼. 그런데 그 숫자를 목표로 걸고 사람이든 시스템이든 그 숫자를 올리는 데 온 힘을 쏟으면, 숫자만 올리고 진짜 관심사는 건드리지 않는 지름길이 반드시 발견된다. 그 지름길로 가는 순간 숫자와 관심사의 연결이 끊어진다. 숫자는 여전히 오르지만, 그 오름은 이제 아무것도 뜻하지 않는다.
들어가며의 클릭률이 딱 이 구조다. 원래 클릭률은 사람들이 콘텐츠에 끌리는 정도를 재는 지표였다. 그래서 클릭이 많으면 좋은 콘텐츠라고 믿었다. 그런데 클릭률을 목표로 걸고 화면을 그쪽으로만 다듬자, 콘텐츠를 좋게 만드는 대신 클릭만 유도하는 지름길이 나타났다. 자극적인 썸네일, 내용보다 부풀린 제목. 클릭은 올랐지만 그 클릭은 더 이상 콘텐츠가 좋다는 신호가 아니었다.
우리가 최적화하는 건 대개 대리 지표다
여기서 한 걸음 물러나서, 우리가 A/B 테스트로 올리는 숫자가 대체 뭔지 짚어보자. 사실 우리가 진짜 원하는 건 클릭 자체가 아니다. 사용자가 서비스에서 가치를 느끼고, 오래 남고, 돈을 내고, 만족하는 것이다. 그런데 만족이나 장기 유지 같은 건 당장 측정하기 어렵다. 오늘 실험한 사람이 여섯 달 뒤에도 남아 있을지는 여섯 달을 기다려야 안다. 그래서 우리는 지금 당장 잴 수 있고 진짜 목표와 같이 움직일 법한 숫자를 대신 본다. 클릭, 체류 시간, 가입 전환. 이런 숫자를 대리 지표(proxy metric)라고 부른다.
대리라는 말 그대로다. 진짜 목표를 직접 못 재니까 그 자리를 대신 서는 숫자다. 예를 들어보자. 나는 이 앱이 사용자에게 유용한지 알고 싶다. 그런데 유용함은 자로 못 잰다. 그래서 사용자가 하루에 앱을 여는 횟수를 대신 본다. 유용한 앱이면 자주 열 테니까. 여기서 여는 횟수는 유용함의 대리 지표다. 유용함이 진짜 목표고, 여는 횟수는 그 목표를 엿보는 창문이다.
문제는 이 창문이 진짜를 완벽하게 비추지 않는다는 데 있다. 여는 횟수를 늘리는 방법이 유용함을 늘리는 것 하나뿐이면 아무 문제가 없다. 그런데 유용함과 상관없이 여는 횟수만 늘리는 방법이 따로 있다. 쓸데없는 알림을 하루에 다섯 번씩 보내면 앱 여는 횟수는 확실히 는다. 유용해서가 아니라 성가셔서 열게 되는 거지만, 숫자는 똑같이 오른다. 대리 지표와 진짜 목표 사이에 이런 틈이 있고, 그 틈이 굿하트의 법칙이 파고드는 자리다.
그러니 A/B 테스트에서 이겼다고 말할 때 우리는 대개 대리 지표에서 이긴 거다. 클릭률에서, 가입 전환에서, 체류 시간에서. 그게 진짜 목표에서도 이긴 건지는 별개의 질문이다. 대리에서 이긴 게 진짜에서도 이긴 걸 뜻하려면, 그 둘이 여전히 같이 움직이고 있어야 한다. 그런데 지표를 세게 밀어붙일수록 그 둘은 갈라지기 쉽다.
대리만 올리면 생기는 일
대리 지표와 진짜 목표가 갈라지면 구체적으로 무슨 일이 벌어질까. 들어가며의 장면이 이미 답이다. 클릭률이라는 대리는 올랐는데 유지율이라는 진짜에 가까운 지표는 떨어졌다. 왜 이런 반대 방향이 나오는지 뜯어보자.
자극적인 썸네일과 부풀린 제목은 클릭을 유도하는 데는 확실히 효과가 있다. 궁금하니까 일단 누른다. 여기까지는 클릭률의 승리다. 그런데 눌러서 들어온 사람은 곧 제목이 부풀려졌다는 걸 안다. 기대하고 들어왔는데 내용이 그만 못하다. 실망하고 나간다. 그리고 몇 번 반복되면, 이 서비스의 제목은 믿을 게 못 된다고 학습한다. 다음부터는 덜 누르거나, 아예 앱을 덜 연다. 한 번의 클릭을 얻는 대신 신뢰라는 밑천을 조금씩 태운 거다. 유지율 하락은 그 태운 밑천의 청구서다.
이게 대리 지표만 쫓을 때 생기는 전형적인 함정이다. 대리를 올리는 가장 쉬운 길이 진짜 목표를 갉아먹는 길과 겹칠 때가 많다. 클릭베이트가 그렇고, 사용자를 속여서 가입 버튼을 누르게 만드는 다크 패턴(dark pattern)이 그렇다. 해지 버튼을 꽁꽁 숨기면 해지율이라는 지표는 좋아진다. 하지만 그건 사용자가 남고 싶어서가 아니라 못 나가서 남은 거고, 그렇게 붙잡힌 사용자는 나쁜 입소문으로 되돌아온다. 지표는 웃는데 사업은 우는 상황이다.
한 가지 더 짚을 게 있다. 이 갈라짐은 대개 시차를 두고 온다. 대리 지표는 실험 당일 바로 오른다. 클릭률은 오늘 A/B 테스트에서 즉시 20% 상승으로 찍힌다. 반면 그 대가인 유지율 하락이나 신뢰 손상은 몇 주, 몇 달 뒤에야 드러난다. 그래서 실험을 짧게 보고 대리 지표만 확인하면, 우리는 승리한 순간에 대가를 아직 못 본 상태로 릴리스를 확정한다. 청구서는 나중에 도착하는데 결제 도장은 지금 찍힌다. 이 시차가 굿하트의 법칙을 더 위험하게 만든다.
대응: 진짜 목표, 가드레일, 홀드아웃
그럼 대리 지표를 아예 안 쓰면 될까. 그건 답이 아니다. 진짜 목표는 대개 당장 못 재니까 대리 지표는 계속 필요하다. 문제는 대리를 쓰는 게 아니라, 대리를 진짜인 양 착각하는 거다. 그러니 대응도 대리를 버리는 게 아니라, 대리가 진짜에서 떨어져 나가지 못하게 묶어두는 방향이다. 네 가지로 정리해보자.
첫째, 진짜 목표를 먼저 명시한다. 실험을 설계하기 전에, 우리가 진짜로 원하는 게 뭔지 한 문장으로 적는다. 이번 실험의 목표는 클릭률 상승이 아니라 사용자가 원하는 콘텐츠를 더 잘 찾게 하는 것이다, 이런 식으로. 이걸 적어두면 클릭률은 그 목표의 대리일 뿐이라는 게 계속 눈에 보인다. 목표와 대리를 한 줄에 나란히 써두는 것만으로도, 대리 숫자에 취해 진짜를 잊는 걸 상당히 막는다.
둘째, 가드레일 지표(guardrail metric)를 건다. 가드레일은 이번 실험으로 올리려는 지표가 아니라, 절대 해쳐선 안 되는 지표다. 도로 양옆의 난간처럼, 실험이 엉뚱한 데로 굴러가지 않게 막는 경계선이다. 클릭률을 올리는 실험이라면 유지율과 만족도를 가드레일로 걸어둔다. 규칙은 이렇다. 클릭률이 아무리 올라도 유지율이 일정 선 아래로 떨어지면 그 변형은 채택하지 않는다. 이렇게 걸어두면 들어가며의 실험은 승리가 아니라 탈락으로 판정됐을 거다. 클릭은 20% 올랐지만 가드레일인 유지율을 3%p 깎았으니까. 가드레일은 대리 지표만 보고 좋아하는 걸 구조적으로 막는 안전장치다.
셋째, 대리와 진짜가 아직 같이 움직이는지 주기적으로 점검한다. 대리 지표를 쓰는 전제는 그게 진짜 목표와 같이 움직인다는 거였다. 그런데 이 전제는 영원하지 않다. 지표를 밀어붙이는 동안 둘은 조용히 갈라질 수 있다. 그러니 가끔은 진짜 목표를 직접 재서, 대리와 여전히 같은 방향인지 확인해야 한다. 예를 들어 클릭률이 오르는 동안 실제 만족도 설문도 같이 오르고 있는지 본다. 대리는 오르는데 진짜는 제자리거나 떨어지고 있다면, 그 대리는 이미 목표에서 떨어져 나간 거고 지표를 바꿔야 한다는 신호다.
넷째, 장기 홀드아웃(holdout)을 둔다. 홀드아웃은 새 변화를 일부러 적용하지 않고 오래 남겨두는 사용자 집단이다. 대다수에게는 새 디자인을 적용하되, 일부는 예전 상태 그대로 몇 달을 둔다. 그리고 이 두 집단의 장기 지표를 비교한다. 앞에서 본 시차 문제, 그러니까 대가가 몇 달 뒤에야 도착하는 문제를 잡는 게 이 홀드아웃이다. 단기 대리 지표로는 안 보이던 유지율이나 매출의 진짜 차이가, 몇 달 뒤 두 집단을 비교하면 드러난다. 승리했다고 찍은 실험이 사실은 밑천을 태운 실험이었는지, 홀드아웃이 청구서를 대신 보여준다.
마무리
들어가며로 돌아가자. 클릭률 20% 상승이라는 완승은 완승이 아니었다. 우리가 올린 건 진짜 목표가 아니라 그 대리였고, 대리만 세게 밀어붙이는 사이 대리는 진짜에서 떨어져 나갔다. 클릭이라는 숫자를 목표로 삼은 순간, 클릭은 콘텐츠가 좋다는 걸 재는 좋은 측정값이기를 멈춘 거다. 이게 굿하트의 법칙이 실무에서 작동하는 방식이다.
그러니 A/B 테스트 결과를 볼 때 질문을 하나 더 얹어야 한다. 이 지표가 올랐다, 그런데 이 지표는 진짜 목표의 대리인가, 그리고 대리를 올리는 이 방법이 진짜 목표도 같이 올리는가. 이 질문을 던지려면 실험 전에 진짜 목표를 적어두고, 해쳐선 안 될 가드레일을 걸고, 대가가 도착할 시간을 홀드아웃으로 기다려야 한다. 대리 지표는 진짜 목표를 엿보는 창문이지 목표 그 자체가 아니다. 창문을 목표로 착각하는 순간, 우리는 창밖 풍경 대신 유리만 닦고 있게 된다.