당근마켓 블로그를 읽다가 AB 테스트 내용이 포함된 글을 읽었다.
글을 요약하면, 당근마켓에서 "키워드 알림 등록 기능"은 유저의 재방문에 큰 영향을 주는 기능인데, 중고 거래 검색 필터를 개편하면서 실험 없이 UI를 변경했다가 중요 지표인 "키워드 알림 등록수"가 급격히 감소했다는 내용이었다. 키워드 알림 UI를 변경한 후 알림 등록수가 하락한 원인을 분석하고, 이를 바탕으로 가설을 수립해 AB 테스트를 진행하여 결과를 분석하는 과정까지 설명되어있었다.
글을 읽기 전, 그동안 내가 알던 AB 테스트는
1) 적절한 가설을 수립한 뒤
2) 실험군/대조군을 정의하고
3) 통제 변수, 샘플 크기, 실험 기간 설정하기.
4) 실험
5) 대조군과 실험군의 지표 차이가 통계적으로 유의한지 검증하기
였는데 실험을 설계하는 과정에서 생각보다 고려해야할 요소들이 많았다. 예를 들어 이런 용어들이었다.
우선, AB 테스트는 언제 쓸까? 타겟 유저의 행동을 정성, 정량적으로 분석하여 서비스의 개선사항을 발굴하는 과정에서 AB 테스트를 수행한다. 또 어떠한 의사결정을 하기 전에, 이 의사결정의 영향력을 측정하는 용도로도 쓰인다.
서비스의 핵심 지표 A의 개선을 위해 서비스의 UI를 변경하는 실험을 했는데, 예상치 못하게 서비스의 다른 중요한 지표 B가 떨어질 수 있다. B와 같은 지표를 가드레일 지표(Guardrail Metric)라고 한다.
현재 실험의 지표 개선에만 집중하다가, 떨어져서는 안 되는 중요 지표 성과가 낮아지는 문제가 생기지 않도록 실험 설계 과정에서 가드레일 지표를 설정하는 것이 중요하다.
서비스의 전체적인 성과를 1~2 개의 부분적인 지표 움직임으로는 판단할 순 없다. 따라서 현재 진행하는 실험이 유저에게 어떤 효과가 있었는지 여러가지 시나리오와 지표를 바탕으로 종합적으로 판단해야한다.
그래서 지표는 세밀한 수준에서 트래킹하는 것이 중요하다고 한다. 데이터를 쪼개서 보는 것의 중요성은 심슨 패러독스 예시에서도 확인할 수 있다. (심슨 패러독스란 쪼개진 데이터에서 성립하는 관계가 합쳐진 데이터에서는 반대로 나타나는 현상을 말한다.) 예를 들어, 실험 결과로 '키워드 알림 등록수'가 상승 했다고 하더라도, OS 기기 별로 나누어서 지표 변화를 해석했을 때 집단별로 결과가 차이날 수 있다.
실험 직후 지표가 개선됨을 확인했으나, 장기적인 관점으로도 개선이라고 판단할 수 있을까?
새로운 기능을 배포하여 AB 테스트를 진행했을 때, 일시적으로 지표가 상승했더라도 실질적으로는 서비스 개선에 도움이 되지 않았을 수도 있다. 만일 그렇다면, 기능 늘리기 등의 불필요한 리소스를 투입하지 않아도 될 것이다.
이처럼 긍정적인 효과가 단기간에만 발생하고, 장기적으로 flat한 효과를 보이는 현상을 신기 효과(Novelty Effect)라고 한다.
위 그래프를 보면, 기능 도입 직후 지표가 일시적으로 증가했다가 다시 기능 도입 이전 수준으로 수렴된 것을 확인할 수 있다. 이렇게 일시적으로 튀는 신기 효과를 지나서, 지표가 다시 어느 수준에서 수렴되는지를 확인하면, 해당 기능이 서비스 개선에 도움이 됐는지 판단할 수 있다.
데이터 기반 의사결정의 과정에 대해 배울 수 있어 재밌는 글이었다.
다음 글은 통계적 유의성을 확인하는 테스트 과정과, "ABCD 테스트는 어떻게 실험을 설계할까?" 에 대한 내용을 정리하려 한다.