reference. https://mlops.community/the-what-why-and-how-of-a-b-testing-in-ml/
통제 실험(Controlled experiment) 또는 무작위 대조 시험(Randomized control trial)이라고도 하는 A/B 테스트는 일련의 변형(Set of variants) 중 어떤 것이 가장 좋은지 결정하는 통계적 방법입니다. A/B 테스트를 통해 조직과 정책 결정자는 추측에 의존하지 않고 데이터에 기반한 더 현명한 의사 결정을 내릴 수 있습니다.
가장 간단한 버전의 A/B 테스트에서는 실험 대상(Subjects)을 무작위로 대조군(A 그룹) 또는 실험군(B 그룹)에 배정합니다. 실험군의 실험 대상(Subjects)은 실험(예: 신약, 특별 행사 또는 새로운 웹 페이지 디자인)를 적용하고, 대조군은 실험의 적용 없이 정상적으로 진행합니다. 그런 다음 결과에 대한 데이터를 수집하여 실험 적용에 대한 효과를 연구하는 데 사용합니다. 오늘날 A/B 테스트는 제품 가격 책정, 웹사이트 디자인, 마케팅 캠페인 디자인, 브랜드 메시지 등의 영역에서 의사 결정을 내리는 데 사용되는 중요한 비즈니스 도구입니다.
데이터 과학에서 A/B 테스트는 실제 환경에서 어떤 모델이 더 나은 성능을 보이는지 측정하여 프로덕션에서 두 모델 중 하나를 선택하는 데에도 사용할 수 있습니다. 이 공식에서 대조군(Control)은 종종 현재 생산 중인 기존 모델이며, ‘챔피언’이라고도 합니다. 실험(Treatment)은 기존 모델을 대체하기 위해 고려 중인 새로운 모델입니다. 이 새로운 모델을 ‘챌린저’라고 부르기도 합니다. 여기서는 '대조'와 '실험'라는 용어 대신 '챔피언'과 '챌린저'라는 용어를 사용하겠습니다.
머신 러닝에서 ‘실험'과 '시험’이라는 용어는 종종 당면한 문제에 가장 적합한 학습 구성을 찾는 프로세스를 의미하기도 합니다(하이퍼파라미터 최적화라고도 함). 이 문서에서는 실험이라는 용어를 사용하여 프로덕션에서 서로 다른 모델의 성능을 비교하기 위해 A/B 테스트를 사용하는 것을 가리킵니다.
A/B 테스트는 의견과 직관에 덜 의존하고 데이터에 기반한 의사 결정을 내릴 수 있는 방법이지만, 몇 가지 원칙이 있습니다. 실험자는 여러 가지 사항을 결정해야 합니다.
이를 Overall Evaluation Criterion(종합 평가 기준) 또는 OEC라고 부릅니다. 이는 모델을 학습할 때 사용한 손실 함수와는 다르고 비즈니스 중심적일 수 있지만, 측정할 수 있는 것이어야 합니다. 일반적인 예로는 매출, 클릭률, 전환율 또는 프로세스 완료율 등이 있습니다.
"챌린저가 챔피언보다 더 나은 것이 성공이다"라고 말하고 싶을 수도 있지만, 이는 적어도 통계적 의미에서는 테스트할 수 있는 질문이 아닙니다. 챌린저가 얼마나 더 뛰어나야 하는지를 결정해야 합니다. 두 가지 수치를 정의해 보겠습니다:
y0 : 챔피언의 추정된 OEC(종합 평가 기준)입니다. 챔피언이 한동안 운영되었으므로 이 값에 대해 잘 알고 있어야 합니다. 예를 들어 전환율을 측정하는 경우 챔피언의 전환율이 일반적으로 y0 = 2%라는 것을 이미 알고 있을 수 있습니다.
δ: 안정적으로 감지하고자 하는 최소 델타값(Minimum Delta Effect Size)입니다. 이 수치는 챌린저가 "승자"라고 선언하기 위해 얼마나 더 나은 성과를 보여야 하는지를 나타냅니다. 예를 들어, 전환율을 1%이상 개선하는 경우, 즉 챌린저 모델의 전환율이 0.02 * (1.01) = 0.0202 이상이면 챌린저 모델로 전환하기로 결정할 수 있습니다. 즉, δ = 0.002입니다.
일부 표본 계산기(Sample Size Calculators)는 최소값(Minimum Effect Size)을 상대적인 델타값(Relative Delta)으로 지정하며, 이 예에서 상대 델타 값은 0.01(1%)이고 절대 델타값은 0.002입니다.
다시 말하지만, "전혀"라고 말하고 싶을 수도 있지만, 이는 현실적이지 않습니다. 허용할 수 있는 오류가 적을수록 더 많은 데이터가 필요하며, 온라인 환경에서는 테스트를 실행하는 데 더 오랜 시간이 걸립니다. 고전적인 통계 공식에서 A/B 테스트에는 오류를 설명하는 다음과 같은 매개 변수가 있습니다:
α: 허용할 수 있는 유의도(Significance) 또는 오탐률(False Positive Rate)입니다. 이상적으로는 α를 가능한 한 작게 설정하는 것이 좋지만, 실제로는 일반적으로 α를 0.05로 설정합니다. 이는 A/B 테스트를 반복해서 실행하면 5%의 확률로 열등한 챌린저를 잘못 선택한다는 의미로 생각할 수 있습니다.
β: 달성하고자 하는 값. 진양성률(True Positive Rate)입니다. 이상적으로는 β가 1에 가까울수록 좋지만, 실제로는 보통 β를 0.8로 설정합니다. 이는 A/B 테스트를 반복해서 실행하면 80%의 경우 우수한 챌린저를 정확하게 선택한다는 의미로 생각할 수 있습니다.
α와 β는 양립할 수 없는 상황에 대해 이야기하고 있다는 점에 유의하세요(그래서 1이 되지 않는 것입니다). 첫 번째 경우는 챌린저가 더 나쁘다고 가정하고, 다른 경우는 더 좋다고 가정하며, 어떤 상황에 처해 있는지 알아내는 것이 A/B 테스트의 핵심입니다.
A/B 테스트에는 마지막 매개변수가 하나 더 있습니다:
n: 오탐률 α 및 진양성률 β 임계값을 충족하는지 확인하기 위해 실험해야 하는 최소 Example 수(모델 당)입니다. 또는 흔히 말하는 것처럼 "통계적 유의성을 확보하기 위해(To make sure we achieve statistical significance.)”라고도 합니다.
n은 모델 당 필요하므로, 고객을 50대 50으로 분할하여 A와 B로 라우팅하는 경우 총 실험 규모 2n의 고객이 필요합니다. 트래픽의 90%를 A로 라우팅하고 10%를 B로 라우팅하는 경우, B는 최소 n명의 고객을 확인해야 합니다(그러면 A는 약 9n명의 고객을 확인하게 됩니다). 따라서 50대 50 분할이 가장 효율적이지만, 안전이나 안정성과 같은 다른 이유로 불균형 분할을 선호할 수도 있습니다.
A/B 테스트를 실행하기 위해 실험자는 α, β 및 최소값 δ(Minimum Effect Size)를 선택한 다음 n을 결정합니다. 여기서는 n을 계산하는 공식에 대해 설명하지 않으므로 값 계산기 또는 표본 크기 계산기를 사용하여 계산할 수 있습니다. 다음은 Statsig에서 제공하는 비율 계산기입니다(https://statsig.com/calculator). 기본값은 α = 0.05, β = 0.8, 분할 비율은 50 대 50입니다. 다양한 상황에서 샘플 크기가 얼마나 커야 하는지 자유롭게 사용해 보세요.
필요한 n을 얻을 수 있을 만큼 충분히 오랫동안 A/B 테스트를 실행한 후에는 각 모델에 대한 OEC(종합 평가 기준)를 측정합니다. OEC챌린저 - OEC챔피언 > δ 면 챌린저가 더 나은(Better)것입니다. 그렇지 않으면 챔피언 모델을 고수하는 것이 좋습니다.
실험 대상(Subjects)을 모델 간에 무작위로 분할할 때는 그 과정이 정말 무작위인지 확인하고 두 그룹 간의 간섭을 고려하세요. 어떤 식으로든 서로 소통하거나 영향을 주고받나요? 무작위 배정 방식이 의도하지 않은 편견을 유발하나요? 그룹 할당에 편견이 있으면 결과가 무효화될 수 있습니다. 또한 각 실험 대상(Subjects)이 항상 동일한 대우를 받을 수 있도록 배정 방식이 일관성을 유지해야 합니다. 예를 들어 특정 고객이 가격 페이지를 새로 고침할 때마다 다른 가격이 표시되어서는 안 됩니다.
두 그룹을 모두 대조군 또는 실험군으로 설정하는 A/A 테스트를 실행하는 것이 좋습니다. 이렇게 하면 처리 과정에서 의도하지 않은 편견이나 오류를 발견하는 데 도움이 되며, 무작위 변수가 중간 결과에 어떤 영향을 미칠 수 있는지 더 잘 파악할 수 있습니다.
인간의 본성상 결과를 미리 엿보고 결론을 내리거나 최소 표본 크기에 도달하기 전에 실험을 중단하는 것은 어렵습니다. 유혹을 뿌리치세요. 때때로 '잘못된' 모델이 잠시 동안 운이 좋을 수 있습니다. 관찰한 행동이 이상한 우연이 아니라 실제로 대표성이 있다고 확신할 수 있을 만큼 충분히 오랫동안 테스트를 실행해야 합니다.
A/B 테스트의 결단성(감지할 수 있는 델타값)은 샘플의 제곱에 따라 증가합니다. 즉, 감지할 수 있는 델타값(Delta Effect Size)를 절반으로 줄이려면 샘플 크기를 4배로 늘려야 합니다.
위에서 설명한 A/B 테스트에 대한 고전적(A.K.A Frequentist) 통계적 접근 방식은 일부 사람들에게는 다소 직관적이지 않을 수 있습니다. 특히 α와 β의 정의는 A/B 테스트를 반복해서 실행한다고 가정하지만, 실제로는 일반적으로 (특정 A와 B에 대해) 한 번만 실행한다는 점에 유의하세요. 베이지안 접근 방식은 한 번의 실행에서 얻은 데이터를 주어진 것으로 간주하고 "내가 관찰한 것과 일치하는 OEC(종합 평가 기준) 값은 무엇인가?"라고 질문합니다.
실험 그룹에 대해 가능한 OEC(종합 평가 기준) 값에 대한 이전 정보(Prior Beliefs)을 지정합니다. 예를 들어 두 그룹의 전환율이 서로 다르며 0~10% 사이라고 가정할 수 있습니다.
베이지안 분석 도구(예: Using distributional techniques)를 사용하여 통계 모델을 정의하고 각 그룹에 대해 Flat, Uninformative, or Equal Priors(평탄, 비정보 또는 동일한 이전 정보)를 정의합니다.
데이터를 수집하고 OEC(종합 평가 기준) 매개 변수의 가능한 값에 대한 정보(Beliefs)를 계속 업데이트합니다. 가능한 OEC(종합 평가 기준) 매개변수의 분포는 처음에는 광범위한 값을 포함하며, 실험을 계속할수록 분포가 좁아지고 분리되는 경향이 있습니다(If there is a difference).
OEC(종합 평가 기준)의 추정치를 개선하는 데 가치가 있다고 생각되는 한 실험을 계속합니다. 효과값(Effect Size)의 사후 분포(Posterior Distributions)로부터 델타값(Delta Effect Size)를 추정할 수 있습니다.
A/B 테스트에 대한 베이지안 접근 방식을 사용한다고 해서 테스트가 반드시 짧아지는 것은 아닙니다. 실험의 불확실성을 정량화하는 것이 더 쉬워질 뿐입니다. 더 간단하고 직관적으로 만들 수 있습니다. 빈도주의적 추론(Frequentist)과 실험/대조군 실험에 대한 베이지안 접근법(임상시험의 맥락에서)에 대한 자세한 내용은 이 블로그 게시물을 참조하세요. (https://win-vector.com/2013/05/06/bayesian-and-frequentist-approaches-ask-the-right-question/)
실험이 끝날 때까지 기다렸다가 조치를 취하는 시간을 최소화하고 싶다면, Multi-Armed Bandits 접근 방식을 고려해 보세요. Multi-Armed Bandits은 해당 Option의 과거 성능을 기반으로 각 Option으로 이동하는 새 요청의 비율을 동적으로 조정합니다.
기본적으로 모델의 성능이 좋을수록 더 많은 트래픽이 발생합니다. 그러나 일부 트래픽은 여전히 성능이 낮은 모델로 이동하므로 실험에서는 해당 모델에 대한 정보를 계속 수집할 수 있습니다. 이는 활용(Exploitation, 기존의 관측한 결과를 통해서 얻은 결과를 통해서 가장 좋은 모델을 선택)과 탐색(Exploration, 새로운 정보를 위해 해보지 않은 모델을 선택하는 것) 사이의 균형을 유지(Trade-Off)합니다. Multi-armed bandits 실험이 충분히 오랫동안 실행되면 결국 최상의 모델(존재하는 경우)로 수렴됩니다.
Multi-armed bandits 테스트는 통계적 유의성을 달성할 만큼 오랫동안 테스트를 실행할 수 없는 경우 유용할 수 있습니다. 아이러니하게도 이런 상황은 델타값(Delta Effect Size)이 작을 때 자주 발생하기 때문에 잘못된 모델을 선택하더라도 큰 손실은 없습니다. 실제로 활용/탐색(Exploitation/Exploration) Trade-Off는 표준 A/B 테스트를 실행하는 것보다 실험 중에 잠재적으로 더 많은 가치를 얻을 수 있음을 의미합니다.