A/B 테스트를 95% 대 5% 비율로 해도 괜찮을까?

답부터 말하면

안 괜찮습니다.

사실 비율 보다는 샘플의 크기가 중요하지만 어쨌든 95%대 5%로는 A/B테스트는 문제를 만듭니다.

A/B테스트 흔히 온라인서비스에서는 버킷테스트라고 하는데 이 테스트에서 A와 B 두개의 샘플의 수가 서로 불균등하다고 하면 대부분의 통계학자들은 표정이 안좋아지며 심각하게 생각하지만 개발자들은 별것 아니라고 생각합니다.

이게 논란의 여지가 항상 있는 것이므로 조심스럽지만

A/B테스트는 통계학에서 나온 것이므로 통계학자들이 더 잘 알것이므로 이쪽을 더 신뢰하는 것이 맞습니다. 통계학자들은 경험과 이론을 통해 그게 왜 문제인지 설명하지만 개발자들은 그런 설명을 하지 않습니다.

개발자들은 근거를 말하지 않지만 통계학자들은 근거를 말합니다.

A/B 테스트, 버킷테스트는 여러개의 샘플에 각기 다른 처치(작용 또는 변화를 주는것)를 하고 그게 정말 효과가 있는 지 살펴보는 것이라는 것을 기억해야 합니다.

A/B 테스트는 샘플이 중요하다

A/B 테스트는 통계학에서 다루는 실험 운영 방법입니다. 실험계획법이라는 통계학 과목이 있습니다. 과목이 따로 있을 만큼 만만한 것이 아닙니다

통계학은 샘플을 매우 중요하게 생각합니다.
적어도 통계학파 중에 빈도주의자(Frequatist)들은 매우 중요하게 생각합니다.
그와 비교되는 다른 학파들도 있지만 이건 다음에 얘기하겠습니다.

샘플은 어떤 집합에서 일부를 떼어 낸 것을 말합니다.

통계학에서 샘플을 중요하게 생각하는 이유는 샘플을 통해서 원래 전체 데이터의 특성을 파악해야 하기 때문입니다. 샘플을 사용해서 원래 집합을 알아내려고 하는 이유는
대부분의 전체 데이터를 다 확인하는 것은 불가능하기 때문입니다.

“빅데이터 플랫폼도 있는데 전체데이터 확인을 왜 못하냐?” 라고 물어볼 수 있습니다. 잘못 이해한 것인데 거기서 말하는 전체데이터는 실제로 알고자 하는 사실을 얻어야 하는 대상의 전체가 아니기 때문입니다.
예를 들어서
어제까지 가입한 쇼핑몰 전체의 고객 데이터는 전체 데이터가 맞긴 하지만 쇼핑몰의 고객 전체는 아닙니다. 앞으로도 가입할 사람이 있을 것이고 탈퇴할 사람도 있을 것이기 때문입니다. 그런 관점에서 통계학에서 생각하는 전체 데이터를 얻는 것은 불가능하다고 할 수 있습니다.

어제까지 전체 고객 데이터는 통계학에서는 전체데이터가 아닌 그냥 매우 큰 샘플데이터입니다.

A/B테스트에서 A와 B는 각각 전체 모집단에 대한 샘플이라고 봅니다.

A/B테스트에서 샘플 수가 균등하지 않으면 통계 검정을 할 수 없는가?

그래서 A/B의 비율이 5:5로 균등하지 않으면 정확한 비교를 하지 못하는가?
라는 의문이 있을 것이다.
할 수는 있습니다.
다만 꽤 복잡한 방법을 써야 하고 정확하지 않은데다 선택한 검정 자체를 적용하는 것 자체가 맞는지 안맞는지는 확인하려고 하는 것은 노련하고 뛰어난 통계학자도 매우 어렵게 하는 것입니다.

간단하게 공식 몇 개 넣어서 계산하면 되는 것이 아닙니다.

그래서 이렇게 불균등한 샘플 비교를 최대한 피해야 합니다.

샘플 간의 성능 비교를 한다면 균등한 것이 낫다

균등하지 않은 샘플로 샘플의 불균형성을 극복하면서 테스트하는 것 보다 균형 샘플을 만들어서 테스트하는 것이 더 쉽고 돈도 더 적게 듭니다. 균등하지 않은 샘플로 서로를 비교하는 것은 일반적으로 실험계획이 잘못된 경우나 하지 못한 후시 테스트일 가능성이 높습니다.

A/B 테스트와 관련되었대고 하면 무조건 샘플 수를 맞추고 시작합니다.

불균등한 것이 뭐가 그리 문제인가?

샘플이라고해서 그렇게 거창한 것은 아닙니다.
A그룹에서 추출한 숫자들, B그룹에서 추출한 숫자들을 비교하는 것인데
샘플이 균등하지 않으면 크게 달라질 수 있는 것이 파라미터(모수, parameter)인데 평균과 분산입니다.
A/B테스트는 A와 B의 평균과 분산이 실험 후에 많이 차이가 나는지 아닌지를 보는 것입니다.
이때 샘플의 수 그러니까 숫자의 갯수가 많이지면 숫자의 갯수가 적을 때 보다 분산은 무조건 커집니다.
이게 자연적인 현상입니다.
그래서 샘플의 수가 50대 50으로 균등하지 않으면 샘플 수로 인해서 생길 수 있는 기본적인 분산의 차이를 보정하고 검정을 해야 하는데 보정이 매우 어렵고 보정을 해도 정확도가 떨어집니다.

실험결과를 잘못 해석하게 됩니다.
이런 결과로 결정을 하면 비즈니스에 큰 실패를 가져올 수 있습니다.

실험 자체를 잘못하는 것은 그 실험을 없었던 것으로 하면 되기 때문에 피해가 덜하지만
결과를 잘못해석하면 틀렸다는 것 자체를 의심하지 않기 때문에 큰 문제를 생깁니다.

한쪽을 언더샘플링(Under sampling)을 하면 어떤가?

크기(갯수)가 다른 두 샘플들이 있을 때 크기가 적은 샘플 수만큼을 크기가 큰 색플에서 도려내서 숫자를 맞추는 것이 언더샘플링(under sampling)이라는 방법입니다.
간단히 말하면
그냥 큰 쪽을 작은쪽의 크기 만큼 잘라서 맞추는 것입니다.
보통 자를 때 무작정 자르지 않고 랜덤으로 샘플링을 합니다. (확실하게 랜덤으로 분할 한 것과 같은 것으로 분할 할 수 있으면 랜덤 샘플링을 하지 않아도 됩니다. 이건 따로 설명하지요)

어쨌든 이러면 괜찮지 않은가?
라고 생각할 수 있는데
이것도 괜찮지 않습니다.

언더샘플링을 하는 순간 샘플의 모집단이 달라지게 됩니다. 샘플이 뽑힌 것의 자유도라는 것도 다르기 때문에 두 샘플은 비교하기 어렵게 됩니다.
부모가 낳은 형과 동생을 비교하다가 형과 동생의 아들인 조카를 비교하는 꼴인 것이다.
부트스트래핑을 쓰면 하게되면 이러 불균형에서 샘플링을 통해 문제를 해결할 수 있지만 역시 그 보다는 샘플 수를 맞추는게 편하고 낫습니다.

대부분의 버킷시스템은 샘플 수를 맞추도록 설계되어 있다

빅테크 회사들의 버킷시스템이 존재합니다. A/B테스트를 할 수 있도록 플랫폼이 갖춰줘 있고 샘플의 수 등을 수정할 수 있습니다.
저런 대형 기업들의 시스템에서도 기본으로 두 비교군의 샘플 수를 맞추도록 설계되어 있습니다.
다른 대기업들도 모두 마찬가지입니다.
그들은 왜 모두 그렇게 하는지 생각을 해보기로 합시다.
그냥 그렇게 하거나 단순한 전통이어서 그렇게 하는 걸이다 아닙니다.
그것이 통계적이고 과학적으로 실험의 결과를 오해석하지 않는 최선의 방법이기 때문입니다.

통계학자들이 무능하고 실력이 없으면서 복잡해 보이기 좋아하기 때문에 저렇게밖에 못한다고 생각할 수도 있지만.

버킷시스템에서는 언더샘플링이 가능하다

추가로 말하면 대부분의 버킷시스템은 사용자의 ID 또는 비식별ID를 비트연산을 통해 그룹을 나눠서 관리하도록 되어 있습니다.

따라서 많은 쪽의 비트 몇개를 무시해서 언더샘플링을 하면 샘플비교를 할 수 있습니다.
조금 복잡하니 자세한 것은 따로 설명하겠습니다.

참고

A/B테스트에 대해 포스트를 올린적이 있습니다. 시간이 있다면 자세한 내용은 그걸 참조하세요.

Author: 떰학

답글 남기기