A/B Test 프로젝트
A/B Test
이번 진행할 프로젝트는 A/B Test를 직접 수행 해 보는건데요!
A/B Test가 무엇일까요? 만약 웹 사이트 혹은 앱을 운영한다고 가정을 해 보겠습니다.
운영자가 새로운 기능을 개발했는데, 개발한 기능을 바로 적용해도될까요?
바로 적용을 해도 상관은 없지만, 바꾼 기능이 오히려 사용자의 구매로 이어지는 데 어려움을 겪는 상황이 발생할 수도 있습니다.
새로운 기능을 개발할 때는 개발 비용, 운영 비용, 여러 비용들이 들어가지만 그 만큼 효율을 내지 못 한다면 새로운 기능은 사실상 필요가 없습니다.
따라서 A/B Test는 실전 적용을 하기 전 개발한 기능이 비즈니스 목표로 영향을 주는 지를 확인하고 싶을 때 사용하는 방법입니다.
그렇다면 어떻게 확인을 하는 걸까요?
웹, 앱을 이용하는 고객을 두개의 그룹으로 먼저 나누게 됩니다. 운영자는 기존 기능과 개발한 기능을 무작위로 고객에게 노출시키고, 두 그룹간 구매로 이어졌는지와 같은 차이를 비교를 해 새로운 기능이 실제 효과가 있는지 다양한 분석 방법으로 확인을 하게 됩니다!
그리고 A/B Test를 할때는 몇가지 주의할 점이 있는데요.
두 개의 그룹으로 나눈다고 했는데, 이때 기준이 중요합니다. 만약 오전에 방문하는 사람을 기존 기능, 오후에 방문하는 사람을 새로운 기능으로 노출시키면 어떻게 될까요?
오전 방문자와 오후 방문자는 분명히 어떤 특성 차이가 있습니다. 따라서 이러한 특성으로 인해 기존 기능과 새로운 기능의 실험 결과 차이가 있더라도 단순히 기능의 효과인지, 그룹의 특성 차이인지 확실하게 알기가 어렵습니다.
A/B Test는 인과관계를 밝히는 데 도움이 되는 분석으로 다른 요인과 관련없이 특정 요인이 실험결과에 영향을 미치는지를 확인해야하므로 동일 요일, 동일 시간대, 이러한 요소를 고려해서 실험을 계획해야 합니다.
A/B Test를 설계할 때 몇가지를 고려해야 합니다!
첫 번째, 가장 중요한 단계는 비즈니스 목표를 결정하는 것입니다.
기업 내 사람들이 중요하게 생각하는 목표가 서로 다를 수 있습니다. 따라서 구체적인 명확한 변수를 사용해서 비즈니스 목표를 설정하는 것이 중요합니다.
두 번째, 구체적인 비즈니스 목표를 결정했다면, 실험의 성공 여부를 측정하는 목표 지표를 결정해야 합니다.
이때 신뢰성 있게 측정할 수 있는 것을 골라야 하며, 처음 설정한 지표의 효과는 미미하지만 다른 지표는 효과가 있다고 하더라고 이를 보고 지표를 결정하는 것을 피해야합니다!
세 번째, 개입을 할 때 최소한의 개입을 테스트하는 것이 좋습니다!
여기서 개입은 새로운 기능을 의미합니다. 만약 기존 기능의 색깔이 어두워 고객의 구매를 이끄는 데 어려움을 겪었다는 가설을 세웠다면, 새로운 기능은 색깔을 먼저 바꾸는 최소한의 기능을 개발해야합니다.
가설은 어두운 색깔이 고객에게 잘 보이지 않아 고객의 구매를 이끌지 못 했다는 것인데, 색깔, 글꼴, 형태를 다 새롭게 개발한다면 색깔과 구매율의 인과관계를 밝히는데 어려움을 겪을 수도 있습니다.
A/B Test 적용
설명한 것을 따라 A/B Test를 진행하려고 합니다!
제가 사용한 데이터는 임의로 만들어진 데이터이고 게임 회사의 데이터라고 가정하겠습니다.
게임을 가입하면 온보딩 과정이 있는데, 이때 기존 온보딩 과정 중 특정 부분이 문제가 있어 한 부분을 수정한 새로운 기능의 효과를 분석하려고 합니다.
따라서 이번 실험의 비즈니스 목표는 수익 증대, 실험의 성공 여부를 측정하는 목표 지표는 온보딩 과정 완료, 개입은 구체화 하지 않고 단순히 새로운 기능이라고 정의하겠습니다.
기존 기능을 사용하는 고객을 control 집단, 새로운 기능을 사용한 고객을 variant 1이라고 하겠습니다.
먼저 집단별로 온보딩 완료, 미완료로 나누어 보겠습니다.
새로운 기능일 때 온보딩 완료 비율이 76.14% 기존 기능일 때 온보딩 완료 비율이 72.69%를 보이며 온보딩을 경험한 고객이 온보딩을 더욱 많이 완료하는 것으로 보이는데요! 이는 비율의 차이만 보여줄 뿐이지 실제로 차이가 있는지 없는지는 통계 검정을 해 봐야지만 알 수 있습니다! 실제로 그런지 카이제곱 검정을 통해 확인 해 보겠습니다!
위 결과는 파이썬 라이브러리를 통해 카이제곱 검정을 한 결과인데요!
p_value가 0과 가까우므로 새로운 기능과 기존 기능간 온보딩 완료율이 다르다는 것을 의미합니다!
목표는 단순히 온보딩 완료율이 높은지 낮은지를 비교하는 것이 아닌 구매 금액이 올랐는 지를 확인하는 것이므로 구매 금액 상승으로 이어졌는 지를 확인해야 합니다!
위 결과는 control 집단과 variant 1 집단의 소비 금액의 평균과 표준 편차를 구한 값 입니다!
기존 기능을 사용한 고객의 평균 소비가 조금 더 많고, 사실 상 거의 차이가 없다고 볼 수 있을 것 같습니다!
정말 차이가 없는지 이표본 t-검정을 진행 해 보겠습니다!
위 결과는 이표본 t-검정을 수행한 결과입니다!
이때 귀무가설은 두 집단간 평균 소비 금액이 같다. 이며 이를 양측 검정을 진행했습니다. p_value가 0.43으로 유의수준을 5%라고 했을 때 기준보다 큰 값을 가지므로 귀무가설을 기각할 증거가 없게 됩니다.
즉 두 집단간 평균 소비 금액이 같다고 결론을 내릴 수 있습니다!
사실 검정을 위해 정규성, 등분산성 검정을 진행해야 하지만 임의로 만들어진 데이터이므로 이는 생략했습니다.
그렇다면 새로 개발한 기능은 효과가 없는 것인가요!?
게임이 온보딩을 완료하지 않아도 시작할 수 있다면 맞습니다!
온보딩을 완료해야 게임을 시작할 수 있다면 어떤 결과가 나올지 분석을 해 보겠습니다!
온보딩을 완료한 고객을 대상으로 구매 금액의 평균을 구했을 때 역시 기존 기능을 사용한 고객의 구매 금액이 높은 것을 볼 수가 있습니다!
또한 두 평균의 차이가 이전보다 많이 나는 것을 볼 수가 있습니다.
그렇다면 이번은 기존 기능을 사용한 고객의 구매 금액의 평균이 새로운 기능을 사용한 고객의 구매 금액보다 많은 것이 맞는 지를 확인하기 위해 이표본 t-검정을 진행하겠습니다! 아까는 양측 검정을 진행했지만, 이번은 단측 검증을 진행했습니다.
검정 결과 5% 유의 수준을 기준으로 p_value가 0.01으로 기준은 0.05보다 작은 값을 가지는데요! 따라서 기존 기능 온보딩을 완료한 고객의 구매 금액이 새로운 기능 온보딩을 완료한 고객의 구매 금액보다 낮다는 것을 통계적으로 유의하다고 할 수 있습니다!
이렇게 새로운 기능을 개발했다는 가정과 A/B Test를 통해 새로운 기능이 더 많은 구매로 이끄는 지 확인을 해봤는데요!
여기서 중요한 점은 비즈니스 목표를 정확히 설정하는 것의 중요성입니다.
만약 정확히 목표가 설정되지 않았다면, 일부는 새로운 기능의 온보딩 완료율이 더 높다는 것을 긍정적으로 바라보고 새로운 기능으로 교체하자! 라고 주장할 수도 있습니다.
하지만 이는 최종 목표를 가기 위한 성공 완료 여부를 나타내는 결과일 뿐입니다. 온보딩을 완료한 고객만 게임을 하는 것을 추가하지 않았을 때 실제로 완료율이 높다고 해서 최종 목표인 구매율 상승으로는 이끌지 않았습니다. 따라서 A/B Test는 비즈니스 목표와 실험의 성공 여부를 측정하는 기준을 정확히 구분해서 설계하는 것이 중요합니다.
A/B Test와 관련하여 긴 글 읽어 주셔서 감사드립니다!