A/B 테스트를 하고도 잘못된 결정을 하는 이유

A/B 테스트를 한다고 하지만 정작 테스트 결과를 왜곡해서 해석하거나 자기가 해석하고 싶은대로 해석하는 경우가 많습니다. 오늘은 온라인 서비스에서 하는 A/B테스트에 대한 불편한 사실에 대해서 얘기해 보겠습니다.

A/B테스트의 개념을 제대로 알자

A/B 테스트는 통계학의 실험계획법의 하나입니다. 역사가 오래된 과학적 실험 및 결과 확인 방법입니다. A/B테스트는 의료과학에서 정말 많이하는데 신약, 수술법, 처치법에 대한 테스트를 하기위해서 하고 온라인 서비스에서 UI의 변경이나 기능변경을 할 때 어떤 것이 좋은지 확인할 때도 씁니다.

실험대상을 A군과 B군으로 나누고 B군에 벼환를 주고 그 결과의 차이를 비교한다는 의미해서 A/B 테스트라고 부릅니다.

간단하게 정리하면

아무 처치도 하지 않은 콘트롤 그룹(Control Group, A)과
어떤 처치를 한 테스트 그룹(Threatment Group B)을 두고

  • Control Group 콘트롤그룹: 아무 처치도 하지 않은 것
  • Treatment Group 트리트먼트 테스트 그룹: 어떤 특정한 처치를 한 것

이때 Threatment group은 여러개가 있을 수 있습니다. T1, T2, T3이렇게 번호를 붙여서 여러가지 다른 처치를 하게 할 수도 있습니다. 온라인 서비스의 UI라면 UI1, UI2, UI3과 같이 새 UI를 한 번에 테스트해볼 수 있습니다.

콘트롤 그룹과 테스트 그룹의 샘플 수는 같아야 한다

콘트롤 그룹과 트리트먼트 그룹의 샘플 수는 같아야 합니다.
만약 사용자를 대상으로 하는 UI 버킷테스트라면 적용 받는 사용자는 동일하게 분할해야 합니다.

정확히 샘플 수가 같을 필요는 없고 카이스퀘어 테스트를 해서 균둥하다고 나올 정도면 됩니다.

최소한 시즌이 두 번은 반복될 수 있는 기간 동안 진행한다

여기서 말하는시즌은 온라인 서비스의 경우에는 2주를 말합니다. 월별로 특성을 타는 테스트라면 2개월은 돌려야합니다. 시즌을 2번 돌리게 하는 것은 시즌내에서는 특정 시점에 따라 기복이 있을 수 있고 잠시 튀는 경우가 생기기 때문입니다. 그리고 행위나 반응에 대한 샘플 수를 늘리기 위한 것입니다.

여기서 “하루 또는 1시간만하고 테스트 결과가 좋으니 테스트가 더 좋다”라고 판단하는 분들이 많은데 이게 좀 문제입니다. 과학적으로 보면 이건 사기나 마찬가지입니다.

어째서 1시간만 해도 되는지 1일만 해도 되는지 그게 괜찮은지에 대한 근거가 전혀 없습니다. 보통 왜 그 기간동안 하느냐라고 물으면 “그 정도면 충분하지 않을까요?” 라고 말합니다.

매우 비과학적인 사고여서 통계학에서 절대 하지 말아야 할 행위로 규정하고 있는 것입니다.
저렇게 하는 이유는 어떤 테스트 방법으로 어떻게 평가해야 하는지 모르기 때문입니다.

어떤 평가 방법을 써야 하는가?

A/B테스트는 실험을 시작하고 시간이 경과한 후 또는 어떤 처치를 한 후에 두 그룹의 차이가 있는지 없는지, 어떤 것이 더 좋은지를 확인하는 것입니다.

검정법

진행 후에 결과에 대한 검증법은 통계적 검정법을 쓰는데 통계적 검정법은 간단하게는 t-test부터 F-test 등 매우 많습니다. 샘플 수, 상황, 데이터의 분포에 따라 어떤 평가방법을 써야 하는지 각각 다르므로 어떤 평가방법을 써야하는지는 잘 알고 있어야 합니다.

T-test면 다되나?

평균의 유의미한 차이는 T-test를 하면 되고 원래 두 그룹의 평균차이가 달랐다면 부산분석을 통해 분산이 차이가 발생했는지 유의미한지를 확인해야합니다.

CTR이 좋아졌는지 보려면?

예를들어 테스트그룹1이 콘트롤그룹보다 CTR이 좋은지 보려면 2주간 버킷테스를 진행하고 CTR에 대한 T-test를 수행하면됩니다. 이때 CTR의 분포가 정규분포에 가까워야 합니다.

CTR은 하루 또는 전체 기간의 CTR을 계산하는 것이 통상적인데 페이지뷰는 있지만 CTR이 없는 경우에는 CTR이 계산이 안되는 것들은 버리고 불균등한 샘플의 숫자는 많은쪽에서 일부 줄여서 버려야 합니다.

의료과학에서의 A/B테스트

의료과학에서는 실험 대상의 샘플도 적고 콘트롤이 잘 안되고 관찰도 잘 안되는 문제 때문에 매우 어렵습니다. 온라인의 경우에는 콘트롤이 잘되고 샘플도 많습니다만 정작 실험 후에는 판단을 엉망으로 해서 잘못된 판단을 하는 것이 문제지만 의료과학은 케이스가 그때그때 다들 다르다는 문제가 있습니다. 그래서 그때 그때 방법을 선택해서 검정을 해야 합니다. 케이스별로 잘 알려진 통계적 검정법이 있는데 어떤 것을 써야 할지 애매할 때가 많습니다. 이런 경우에는 의료통계 전문가에게 물어봐야 합니다.

의료과학은 결과에 대한 검증이 매우 예민하고 철저하기 때문에 잘 해야하는데 사용해야 합니다. R언어를 사용하는 분들은 논문이 이미 R언어를 사용해서 실험을 평가한 것이 많으므로 관련 논문을 참조하거나 커뮤니티에 물어보면 어떤 테스트를 써야하는지 잘 알려주니 적극 활용할 필요가 있습니다. 미국의 유명한 의료과학 대학과 제약회사들은 모두 R언어를 기본으로 사용합니다.

마치며

A/B테스트는 버킷을 나누는 시스템을 만드는 것도 어렵지만 버킷테스트를 진행하고 나서 실험결과에 대한 올바른 과학적 해석과 그 논리적 결함, 통계적 해석 왜곡에 대한 검증이 매우 중요합니다.

테스트를 진행하고 단편적인 결과만 보거나 자신에게 유리한 것만 본다면 실패한 실험이 되므로 매우 주의해야 합니다.

의료과학에서 얼마나 철저하게 검증하는지 안다면 A/B테스트가 만만하지 않다는 것을 알 수 있습니다. 물론 온라인 서비스의 버킷테스트는 의료과학과는 달리 사람의 생명에 직접적연 영향을 주지 않을

만약 실험 결과에 대한 해석과 검정을 어떻게 하는지 모른다면 아예 하지 않는 것이 오히려 좋습니다.

A/B테스트를 진행하고 나서 그 결과가 믿을 만한 것인지 알고 싶다면 통계학의 가설검정법에 대해 공부하면 됩니다. 분량이 좀 많습니다.

Author: euriion

답글 남기기