CUPED 설명

Tue Jun 24 2025

참고: 이 글은 원래 영어로 작성된 블로그의 한국어 번역본입니다. 원문은 다음 링크에서 확인하실 수 있습니다: https://statsig.com/blog/cuped

CUPED는 2013년 마이크로소프트가 처음 소개한 이후로 온라인 실험 분야에서 점차 일반적인 용어가 되고 있습니다. '실험 전 데이터를 활용한 통제 실험(Controlled-experiment Using Pre-Experiment Data)'을 의미하는 CUPED는 실험 프로그램의 속도와 정확성을 높이는 가장 강력한 알고리즘 도구 중 하나로 자주 언급되고 사용됩니다.

이 글에서는 다음 내용을 다룹니다:

  • CUPED의 배경 설명

  • CUPED의 핵심 개념 설명

  • 이 도구를 활용하여 더 빠르고 편향이 적은 실험을 실행하는 방법 소개

CUPED가 해결하는 문제:

실험이 진행되어 목표 분석 날짜에 도달했을 때, 통계적으로 유의미하다고 판단되는 범위를 겨우 벗어난 결과를 보는 것은 드문 일이 아닙니다. 빈도주의 관점에서 이는 여러분의 변경사항이 사용자 행동에 변화를 일으켰다는 충분한 증거가 되지 못합니다.

실제 효과가 있었다면, 통계적으로 유의미한 결과를 얻을 가능성을 높이기 위해 더 많은 표본 크기가 필요했을 것입니다. 실험에서 표준 오차 또는 "노이즈"는 표본 크기의 제곱근에 따라 감소합니다. 하지만 표본 크기는 비용이 많이 드는 자원으로, 보통 실험의 등록 기간에 비례합니다.

더 많은 표본을 기다리는 것은 정보에 입각한 결정을 내리는 능력을 지연시키며, 실제 효과가 있을 때 통계적으로 유의미한 결과를 관찰할 것이라는 보장도 없습니다.

페이스북이나 아마존 같은 거대한 규모의 회사에서도 사람들은 실험에 사용자를 등록하고 성숙시키기를 기다리는 고통을 겪어야 합니다. 왜냐하면 보통 상대적으로 작은 효과를 찾고 있기 때문입니다.

이것을 생각해보세요: 페이스북에서 매출이 0.1% 증가하면 연간 1억 달러 이상의 가치가 있습니다!

더 작은 회사들의 경우, 작은 효과 크기는 측정하기 불가능해질 수 있습니다. 목표 지표에서 통계적으로 유의미한 변화를 안정적으로 관찰하는 데 필요한 표본을 얻는 데 너무 오래 걸릴 것입니다.

이러한 비용 때문에 동일한 지표와 표본 크기에 대해 표준 오차를 줄이기 위한 여러 방법이 개발되었습니다.

CUPED는 실험 전 데이터를 사용하여 결과 데이터의 분산 일부를 설명하는 매우 인기 있는 구현입니다.

CUPED의 통계적 개념

실험의 많은 것들과 마찬가지로 CUPED의 핵심 개념은 간단하지만, 구현은 까다롭고 비용이 많이 들 수 있습니다.

CUPED의 기본 원칙은 실험의 모든 분산이 무작위가 아니라는 것입니다. 실제로 사용자 결과의 많은 차이는 실험과 관련이 없는 기존 요인에 기반합니다.

이에 대해 잠시 이야기해보겠습니다:

무게를 달고 사람들이 더 느리게 달리는지 확인하는 테스트를 실행하고 싶다고 가정해봅시다. 물리학적 관점에서 답은 꽤 명백해 보입니다. 우리는 다음과 같은 데이터를 기록할 수 있습니다:

사람

테스트 그룹

실험 1마일 시간

샐리

무게 있음

6:40

데이브

무게 없음

7:10

제인

무게 있음

8:20

무게 없음

9:00

결과를 평균내면 예상된 효과를 명확히 볼 수도 있지만 그렇지 않을 수도 있습니다. 관찰된 마일 시간에는 많은 분산과 중복이 있습니다. 하지만 주자들이 이미 얼마나 빨랐는지가 근본적인 요인일 수 있다는 것은 꽤 명확해야 합니다. 기준선을 설정하기 위해 일주일 전에 1마일을 달리도록 요청했다면 어떨까요?

사람

그룹

기준선 1마일 시간

실험 1마일 시간

변화

샐리

무게 있음

6:30

6:40

+10

데이브

무게 없음

7:08

7:10

+2

제인

무게 있음

7:30

8:20

+50

무게 없음

9:15

9:00

-15

그들의 "일반적인" 마일 시간의 맥락에서 이 효과는 훨씬 더 명확해야 합니다! 우리는 암묵적으로 그들의 원시 "마일 시간"에 관심을 갖는 것에서 우리가 예상하는 것과의 차이에 관심을 갖는 것으로 전환했습니다!

이렇게 함으로써 우리는 실험 지표의 일부 노이즈와 분산을 "설명"했습니다. 이전에는 가장 빠른 주자와 가장 느린 주자 사이에 140초의 차이를 보았습니다. 이제 우리는 지표의 범위를 65초로 줄였습니다. 이 낮은 범위는 신뢰 구간과 p-값을 계산하는 데 사용할 분산이 더 낮다는 것을 의미해야 합니다.

이것은 개념적으로 CUPED의 원래 구현과 매우 유사합니다. 우리는 지표에 대한 실험 전 데이터를 사용하여 실험 후 값을 정규화합니다. 얼마나 정규화하는지는 실험 전 데이터가 실험 데이터를 얼마나 잘 예측하는지에 따라 달라집니다 - 이에 대해서는 나중에 자세히 다루겠습니다.

편향 보정

실험 그룹이 무작위로 할당되기 때문에 두 그룹이 무작위로 다른 기준선 달리기 시간을 가질 가능성이 있습니다. 운이 나쁘면 그 차이가 통계적으로 유의미할 수도 있습니다. 이는 무게가 아무 효과가 없더라도 두 그룹 사이에 차이가 있다고 결론을 내릴 수 있다는 것을 의미합니다.

그 기준선 데이터에 접근할 수 있다면, 기존에 차이가 있었다고 결론을 내리고 결과를 경계할 수 있을 것입니다. 아래 예에서는 테스트 전 그룹 간의 차이가 결과를 극도로 왜곡시킬 것이라는 것이 꽤 명백합니다.

보정

개념적으로, 한 그룹이 더 빠른 평균 기준선을 가지고 있다면, 그들의 실험 결과도 더 빠를 것입니다. CUPED 보정을 적용할 때, 더 빠른 그룹의 지표는 더 느린 그룹에 비해 하향 조정됩니다.

이 예에서 조정 후 평균은 다음과 같이 이동하여 무게 그룹의 실험 값을 대조군보다 높게 밀어낼 수 있습니다. 조정된 값의 차이가 통계적으로 유의미한지 이해하기 위해 통계 테스트를 수행할 수 있습니다.

계층화

CUPED의 일부 변형은 '비모수적' 또는 '버킷화'됩니다. 이것이 일반적으로 의미하는 것은 (이 예에서) 실험 전 달리기 시간을 기준으로 사용자를 그룹으로 나누고, 해당 그룹의 평균 지표 값에 상대적으로 지표를 측정한다는 것입니다.

예를 들어, 아래 데이터를 고려해보세요 - 이것은 기준선에서 6:30에서 6:40 사이의 마일을 달린 사용자 버킷에 대한 것입니다:

그룹

이전 마일 시간 버킷

평균 버킷 시간

실험 마일 시간

조정된 마일 시간

무게 있음

6:30-6:40

6:42

6:50

+8

무게 없음

6:30-6:40

6:42

6:35

-7

무게 있음

6:30-6:40

6:42

7:02

+20

다른 변수들

CUPED의 더 복잡한 구현은 동일한 지표에 대한 단일 과거 데이터 포인트에만 의존하지 않습니다. 사용자가 속한 실험 그룹과 독립적이기만 하면 다른 정보도 가져올 수 있습니다.

위의 예에서 실험의 요인으로 연령대를 추가할 수 있습니다. 이것은 우리 실험과 거의 관련이 없지만 사람들의 마일 시간에 주요 요인이 될 수 있습니다! 이것을 CUPED의 요인으로 포함시킴으로써 더 많은 분산을 줄일 수 있습니다.

그룹

기준선 마일 시간

나이

실험 마일 시간

변화

무게 있음

6:30

25

6:40

+10

무게 없음

7:08

32

7:10

+2

무게 있음

7:30

22

8:20

+50

무게 없음

9:15

45

9:00

-15

실제로 CUPED 사용하기

실제로는 사용자의 이전 값을 실험 값에서 단순히 빼낼 수 없습니다. 그 이유도 개념적으로 간단합니다 - 사람들의 과거 행동이 항상 미래 행동의 완벽한 예측 변수는 아니기 때문입니다.

우리가 사용할 수학에 대한 정신 모델

더 나아가기 전에 실험과 회귀(엑셀에서 실행하는 일반 최소 제곱 또는 "OLS" 회귀) 사이의 관계를 이해하는 것이 유용합니다.

주어진 지표에 대한 T-검정은 종속 변수가 지표이고 독립 변수가 사용자의 실험 그룹인 회귀를 실행하는 것과 수학적으로 동일합니다. 이를 증명하기 위해 위의 예제 실험에 대한 데이터를 생성했습니다. 여기서 사용자의 속도는 무작위로 할당된 기준선 속도와 테스트 그룹에 있는지 여부에 기반합니다.

이에 대한 모집단 통계는 다음과 같습니다:

모집단 통계 평균 시간(초): 547.6 테스트 평균(초): 551.3 대조군 평균(초): 543.8 테스트 n: 100 대조군 n: 100

T-검정을 실행하고 1 또는 0 테스트 플래그를 독립 변수로 사용하는 OLS를 실행한 결과를 비교해보겠습니다.

T-검정:

OLS:

이들을 비교하면 많은 유사점을 발견할 수 있습니다:

  • T-검정의 효과 크기(테스트와 대조군 간의 차이)는 OLS 회귀의 "test" 변수 계수와 정확히 동일합니다.

  • 계수의 표준 오차는 T-검정의 표준 오차와 동일합니다.

  • "test" 변수 계수의 p-값은 t-검정과 동일합니다!

요약하면, 우리의 표준 T-검정은 기본적으로 1 또는 0 변수에 대한 회귀입니다!

회귀를 더 정확하게 만들고 싶을 때 관련 설명 변수를 추가할 수 있습니다. 우리는 테스트에도 동일하게 할 수 있습니다. 다시 말하지만, 이것이 CUPED의 핵심 개념입니다.

기준선 속도를 회귀의 요인으로 포함시켜 봅시다. 이것은 매우 강력한 설명 변수이므로 회귀를 상당히 변경할 것으로 예상해야 합니다 - 그리고 실제로 그렇습니다.

검토해봅시다:

  • "test" 변수의 계수(실험 효과의 추정치)는 크게 변하지 않았습니다. 이는 예상된 것입니다 - 실험 전에 그룹 간에 유의미한 차이가 없었다면 실험 효과의 유사한 추정치를 얻어야 합니다.

  • 표준 오차(그리고 그에 따른 p-값)는 4.73에서 2.13으로 감소했습니다. 이는 이전에 테스트 변수에 귀속시켰던 많은 노이즈가 무작위가 아니었기 때문입니다: 사용자가 다른 기준선을 가지고 있었기 때문이며, 이제 우리는 이를 고려하고 있습니다!

  • 표준 오차 감소로 인해 p-값이 0.116에서 0.000으로 변합니다. 이전에는 통계적으로 유의미하지 않았던 결과가 이제는 명확히 유의미합니다.

기준선 속도와 함께 CUPED를 사용하면 거의 동일한 결과를 얻습니다. 분산/표준 오차의 감소를 시각화하기 위해 CUPED를 적용하기 전과 후의 이 샘플 데이터셋에서 사용자 속도의 분포를 플롯했습니다.

CUPED를 적용하면 회귀 결과와 마찬가지로 분산과 p-값이 크게 감소하는 것을 볼 수 있습니다. 실험 전 데이터를 사용하면 이 결과를 일관되게 보는 데 필요한 분산, p-값 및 데이터가 감소했습니다.

CUPED 수학 및 구현

이에 대한 자세한 내용은 2013년 마이크로소프트 백서를 참조하세요. 여기서는 해당 논문에 나타나는 많은 공식을 사용했습니다.

다른 변수를 사용하여 분산을 줄이려면 계산에 사용할 그룹 평균의 편향되지 않은 추정량으로 끝나도록 조정해야 합니다. 편향되지 않은 추정량은 단순히 추정량의 기댓값이 우리가 추정하는 매개변수의 실제 값과 같다는 것을 의미합니다.

실제로 이는 사용자가 할당된 테스트 그룹과 독립적인 조정을 선택해야 한다는 것을 의미합니다.

가장 간단한 원래 CUPED 구현의 경우 실험 전 값을 X로, 실험 값을 Y로 참조합니다. 아래 공식에 따라 Y를 조정하여 공변량 조정된 Ycv를 얻습니다:

여기서 θ는 파생된 상수일 수 있습니다. 이 방정식이 의미하는 것은 모든 θ에 대해 두 단계를 수행할 수 있다는 것입니다:

  • 실험 전 모집단 평균에 θ를 곱하고 각 사용자의 결과에 추가

  • 각 사용자의 결과에서 θ에 실험 전 값을 곱한 값을 뺌

이렇게 하면 추정치에 공변량을 고려한 편향되지 않은 추정량 Ycv를 얻습니다. 새로운 추정량 항의 분산을 계산할 수 있습니다:

이것은 Y에 대한 조정된 추정량의 분산입니다. 이 분산은 다음에 대해 가장 작은 것으로 밝혀졌습니다:

이것은 OLS 회귀에서 기울기를 계산하는 데 사용하는 항입니다! 이것은 또한 우리가 데이터 변환에 사용할 항입니다 - 실험의 모든 데이터를 가져와서 이 세타를 계산합니다. 추정량의 최종 분산은

여기서 ρ는 X와 Y 사이의 상관관계입니다. 실험 전과 실험 후 데이터 간의 상관관계는 분산이 얼마나 감소하는지와 직접적으로 연결됩니다. ρ가 [-1, 1] 사이에 제한되므로 이 새로운 분산은 항상 원래 분산보다 작거나 같을 것입니다.

실제로

CUPED의 기본 형태에 대한 데이터 파이프라인을 만들려면 다음 단계를 수행해야 합니다. X는 실험 전 데이터 포인트를 참조하고 Y 포인트는 실험 데이터를 참조합니다:

  • Y와 X 사이의 공분산과 X의 분산 및 평균을 계산합니다. 이를 사용하여 위의 공식에 따라 θ를 계산합니다.

    • 이를 위해서는 조정에 포함되려면 실험 전 또는 실험 후 데이터가 없는 사용자가 0으로 포함되어야 합니다

  • 각 사용자에 대해 사용자의 개별 실험 전 값을 계산합니다. 실험 전 데이터에 적합하지 않은 사용자(예: 신규 사용자)에 대해 조정을 적용하지 않도록 선택하는 것이 일반적입니다 - 이것은 효과적으로 1단계 계층화입니다.

  • 모집단 통계를 사용자 수준 데이터에 조인

  • 사용자의 조정된 항을 Y +θ*(X의 모집단 평균)- θX로 계산

  • 조정된 지표를 입력으로 사용하여 평소와 같이 통계 분석을 실행하고 해석

CUPED 수학의 함의(위):

분산 감소를 위해 사용할 수 있는 많은 공변량이 있습니다. 주요 요구 사항은 사용자가 할당된 실험 그룹과 독립적이어야 한다는 것입니다. 일반적으로 실험 전의 데이터가 가장 안전합니다.

우리는 일반적으로 실험 전의 동일한 지표를 공변량으로 사용합니다. 왜냐하면 실제로 매우 효과적인 예측 변수이고 대부분의 경우 직관적으로 이해가 되기 때문입니다.

전체 실험 모집단에 걸쳐 실험 전/실험 후 데이터에 대한 그룹 통계를 계산해야 합니다 - 그룹별로 계산하지 않습니다. 왜냐하면 처리와 사전 노출 데이터 사이에 상호 작용 효과가 있을 수 있기 때문입니다. 예를 들어, 더 빨리 달리는 사용자는 무게를 달고 달리는 데 더 잘 준비되어 있을 수 있으므로 사전 및 사후 기간 간의 상관관계가 느린 사용자와 다를 것입니다.

신규 사용자는 실험 전 데이터가 없습니다. 실험 전 데이터가 없는 실험은 CUPED를 활용할 수 없습니다. 이러한 경우 가능하면 인구 통계와 같은 공변량을 사용하는 것이 가장 좋습니다.

실험에 일부 신규 사용자와 일부 기존 사용자가 있는 경우 CUPED를 사용하고 다른 이진 공변량으로 모집단을 분할할 수 있습니다: 실험 전 데이터가 있는가 없는가? 기능적으로 이는 위에서 논의한 대로 실험 전 데이터가 있는 사용자에게만 CUPED를 적용한다는 것을 의미합니다.

CUPED 모범 사례

  • CUPED는 사용자의 과거 데이터에 접근할 수 있는 기존 사용자 실험에서 가장 효과적입니다. 신규 사용자 실험의 경우 계층화 또는 인구 통계와 같은 다른 공변량이 유용할 수 있지만 풍부한 공변량을 활용할 수 없습니다.

  • CUPED가 작동하려면 과거 데이터가 필요합니다. 즉, 지표 데이터가 실험 전 데이터 창의 시작 이전으로 거슬러 올라가는지 확인해야 합니다.

  • CUPED의 값 조정 능력은 지표가 동일한 사용자의 과거 값과 얼마나 상관관계가 있는지에 기반합니다. 일부 지표는 동일한 사용자에 대해 매우 안정적이어서 큰 조정을 허용합니다. 일부는 동일한 사용자에 대해 시간이 지남에 따라 노이즈가 많아서 조정된 값에서 큰 차이를 보지 못할 것입니다.

관련 읽을거리 및 자료



Please select at least one blog to continue.

Recent Posts

We use cookies to ensure you get the best experience on our website.
Privacy Policy