본문 바로가기
AB 테스트

[A/B테스트] 07 민감도를 개선하는 트리거링 알아보기

by 권미정 2023. 9. 18.

책 <A/B 테스트(론 코하비.다이앤 탕.야 쉬 지음)>의 '20장 민감도 향상을 위한 트리거링'를 요약정리한 내용입니다.


트리거링

트리거링은 실험의 영향을 받지 않았을 사용자가 생성한 노이즈를 필터링해서 민감도(통계적 검정력)을 개선할 수 있는 방법입니다. 조직의 실험 성숙도가 향상됨에 따라 더 많은 트리거 실험이 실행되고 있죠.

실험을 분석할 때, 어떤 사용자가 있는 변형군과 다른 어떤 변형군(반사실적) 간의 시스템 또는 사용자 행동에 (잠재적으로) 차이가 있는 경우, 사용자에게 트리거를 적용할 수 있습니다. 적어도 모든 트리거된 사용자에 대해 분석 단계를 수행하는 것이 중요합니다. 실험 실행 시에 트리거 이벤트가 로그에 기록되게 하면, 트리거된 사용자 모집단을 더 쉽게 식별할 수 있습니다.

 

트리거링의 예

일부 사용자에게만 영향을 주는 변경을 수행한 경우, 영향을 받지 않은 사용자의 실험효과는 0입니다. 변경의 영향을 받았을 가능성이 있는 사용자만 분석하면 된다는 이 간단한 관찰은 실험 분석에 큰 의미를 가지고, 민감도나 통계적 검정력을 크게 향상시킬 수 있습니다. 단계적으로 복잡성을 증가시키면서 몇 가지 트리거링의 예를 살펴볼까요?

 

예시 1: 의도적인 부분 노출

미국의 사용자만 변경을 주는 대상으로 하는 실험이 있다고 해 보겠습니다. 이 경우에는 미국의 사용자만 대상으로 분석해야 합니다. 다른 국가의 사용자는 변경되지 않았으므로 실험 효과가 없고, 만약 이들을 분석에 추가하면 노이즈가 더해지고 통계적 검정력이 감소하겠죠. 그런데 만약 이 분석에서 사용자들이 변경에 노출된 것을 확인한 후에는 미국 및 다른 국가의 "혼합된" 사용자를 모두 포함한 분석을 실시해야 합니다. 왜냐하면 미국 이외에서도 변경에 노출될 수 있고 이로부터 비롯된 잔여효과가 있을 수 있기 때문입니다.

예시 2: 조건부 노출

체크아웃 페이지와 같은 특정 웹사이트에 도달한 사용자 또는 엑셀에서 그래프를 그리는 것과 같은 기능을 사용하는 사용자에게 변경이 주어지고, 변경에 노출된 사용자들만 분석한다고 가정해 봅시다. 이 예에서는 사용자가 변경사항에 노출되자마자 실험에 트리거됐습니다. 왜냐하면 사용자가 특정 조건을 만족시키는 것 자체가 차이를 만들었기 때문입니다. 조건부 노출에 의한 트리거링은 매우 일반적인데, 다음은 추가 예시입니다.

 

  1. 결제 변경: 결제를 개시한 사용자만 트리거하라.
  2. 마이크로소프트 워드 또는 구글 문서도구에서 문서 공동 편집과 같은 공동 작업 변경: 공동 작업에 참여하는 사용자만 트리거하라.
  3. 구독 취소 화면 변경: 이러한 변경이 표시된 사용자만 트리거하라.
  4. 검색 엔진 결과 페이지에 날씨 답변이 표시되는 방식 변경: 날씨 답변이 표시된 쿼리를 발송한 사용자만 트리거하라.

예시 3: 적용 범위 증가

우리가 만든 쇼핑 사이트에서 장바구니에 35000원이 넘는 사용자에게 무료 배송을 제공하고 있었는데 이를 25000원으로 더 낮추는 테스트를 하고 있다고 가정해 보겠습니다. 여기서 중요한 관찰 포인트는 "어떠한 시점에 25000원에서 35000원 사이의 장바구니로 결제를 개시한 사용자들만" 이 변경에 의해 영향을 받는다는 것입니다. 장바구니가 35000원 이상인 사용자와 25000원 미만인 사용자는 대조군과 실험군에서 같은 행동을 보입니다. 장바구니에 25000원~35000원이 있어서 무료 배송 제의를 받는 사용자들만 트리거합니다. 이 예에서는 무료 배송 프로모션의 "광고"가 사이트에 없다고 가정합니다. 만약 어떠한 시점에 무료 배송 광고가 사용자에게 표시되고 그것이 대조군과 실험군 간에 다르다면, 그 광고 표시 시점이 트리거 포인트가 됩니다.

아래 그림은 이 예를 벤 다이어그램으로 표현한 것입니다. 대조군은 무료 배송의 제의를 받는 일부 사용자(35000원 이상)이며, 실험군에서는 무료 배송의 적용 범위를 확대한 것(25000원 이상)을 보여줍니다. 예시 2와 같이 T의 외부의 사용자(25000원 미만)를 트리거할 필요는 없고, C의 조건(T의 일부도 포함)에서는 대조군과 실험군에 대한 제의가 같기 때문에 트리거할 필요는 없습니다.

예시 4: 적용 범위 변경

아래 벤다이어그램에 보이는 것처럼 적용 범위가 단순한 확대가 아니라 변경되는 경우라면, 상황은 조금 더 복잡합니다. 예를 들어 대조군에서는 장바구니에 35000원 이상 있는 사용자에게 무료 배송을 제공하지만, 실험군에서는 실험 시작 전 60일 이내에 품목을 반품한 경우를 제외하고 장바구니에 25000원 이상 있는 사용자에게 무료 배송을 제공한다고 가정합시다.

대조군 및 실험군은 모두 "기타" 조건, 즉 "반사실"을 평가하고 두 변형군 간에 차이가 있는 경우에만 사용자가 트리거된 것으로 표시해야 합니다.

예시 5: 머신러닝 모델에 대한 반사실 트리거링

사용자를 세 가지 프로모션 중 하나로 분류하는 머신러닝 분류기 또는 페이지에 표시된 제품에 관련 제품을 추천하는 추천 모델이 있다고 가정하겠습니다. 우리는 새로운 분류 또는 추천 모델을 훈련시켰으며, 오프라인 테스트에서 V2는 매우 좋은 성과를 보였습니다. 이제 우리는 이것이 OEC를 개선하는지 여부를 확인하기 위해 실제 사용자에 적용해보고자 합니다.

중요한 점은 만약 새로운 모델이 대부분의 사용자에 대해 기존 모델과 중복된다면, 즉 동일한 입력에 대해 동일한 분류 또는 추천을 할 경우 이들 사용자들에 대한 실험효과는 0이라는 것입니다.

이를 알기 위해서는 "반사실"을 생성해야 합니다. 대조군에서 구 모델과 신 모델 모두 다 실행하고, 신 모델 출력값과 구 모델 출력값(반사실)을 로그에 기록합니다. 그리고 실제와 반사실 출력에 차이가 나는 사용자만이 트리거됩니다. 이 예에서는 계산 비용이 증가하고, 지연시간도 영향을 받을 수 있습니다.

 

최적 및 보수적 트리거링

두 가지 버전을 비교할 때 최적의 트리거 조건은 변수의 적용으로 인한 차이가 발생하는 사용자에게만 분석을 하는 것입니다. 실험군이 여러 개인 경우 모든 변형군에 대한 사실과 반사실을 기록하는 것이 이상적이고 최적으로 트리거할 수 있지만, 다중 실험군에는 상당한 비용이 발생합니다.

때로는 보수적인 트리거링을 수행하는 것이 더 쉬운데, 최적보다 더 많은 사용자를 포함하는 것이 이에 해당합니다. 이것은 분석의 의미를 잃게 하진 않지만, 통계적 검정력을 떨어뜨립니다. 보수적인 트리거가 이상적인 트리거보다 더 많은 사용자를 식별하지 않는 경우 단순한 트레이드 오프가 유용할 수 있는데, 예로는 다중 실험군과 사후 분석이 있습니다.

 

전반적인 실험 효과

트리거된 모집단에 대한 실험 효과를 계산할 때는 반드시 효과를 전체 사용자 기반으로 희석해야 합니다. 사용자 10%에 대해 수익이 3% 증가했다면 전체 수익이 10% * 3% = 0.3% 만큼 증가한 것일까요? 절대 그렇지 않습니다. 전반적인 영향은 0%에서 3% 사이 어느 값도 될 수가 있습니다.

 

신뢰할 수 있는 트리거링

신뢰할 수 있는 트리거링 사용을 보장하기 위해서는 두 가지 검사를 수행해야 합니다. 이를 수행하면 주기적으로 이슈들을 발견할 수 있습니다.

  1. 샘플 비율 불일치(SRM): 전체 실험에 SRM이 없지만 트리거된 분석이 SRM을 보여준다면 약간의 편향이 도입된 것입니다. 일반적으로 반사실 트리거링이 제대로 수행되지 않았을 경우 나타납니다.
  2. 보완 분석: 한 번도 트리거되지 않은 사용자에 대한 점수를 생성하고 A/A 테스트 점수를 구합니다. 예상한 지표보다 통계적으로 유의미한 경우 트리거 조건이 올바르지 않을 가능성이 높습니다. 트리거 조건에 포함되지 않은 사용자에게 영향을 미친 것입니다.

 

일반적인 함정

주의해야 할 몇 가지 함정을 알아보겠습니다.

 

함정 1: 일반화하기 어려운 작은 세그먼트 실험

컴퓨터 아키텍처 분야에서 암달의 법칙은 전체 실행 시간의 작은 부분을 차지하는 시스템 일부분의 속도를 높이는 것을 피하기 위해 자주 언급되는데, 이 규칙에는 작은 아이디어의 일반화라는 중요한 예외가 있습니다.

예를 들어, 2008년 8월에 MSN UK는 핫메일에 대한 링크가 새 탭에서 열리는 실험을 했는데 홈페이지 클릭 수/사용자 수로 측정한 MSN 사용자의 참여도가 핫메일 링크를 클릭한 트리거된 사용자에게서 8.9% 증가했습니다. 이건 엄청난 향상이었지만 상대적으로 작은 세그먼트였죠. 몇 년 동안 이 아이디어를 일반화하기 위해 많은 실험이 진행됐고 당시엔 논란이 많았습니다. 2011년까지 1,200만 명이 넘는 사용자를 대상으로 대규모 실험을 실행했고 사용자당 클릭 수로 측정한 참여도가 무려 5% 증가했습니다. 이건 MSN이 사용자 참여 증가 측면에서 구현한 최고의 기능 중 하나였습니다.

 

함정 2: 트리거된 사용자가 남은 실험 기간 동안 제대로 트리거되지 않음

사용자가 트리거되는 즉시 그들을 분석에 포함해야 합니다. 실험군은 약간의 경험 차이로 인해 그들의 미래의 행동에 영향을 미칠 수 있습니다. 일별 또는 세션별로 트리거된 사용자 분석은 이전 경험의 영향을 받기 쉽습니다.

예를 들어, 실험이 사용자의 방문을 매우 감소시키는 끔찍한 경험을 제공한다고 가정해 봅시다. 만약 일별 또는 세션별로 사용자를 분석한다면 실험 효과는 과소 평가됩니다. 사용자당 방문수가 통계적으로 크게 변하지 않을 경우 트리거된 방문을 통해 통계적 검정력을 얻을 수 있습니다.

 

함정 3: 반사실 기록의 성능 영향

반사실을 기록하기 위해 대조군과 실험군은 서로의 코드를 실행합니다. 한 집단에 대한 모델이 다른 집단보다 훨씬 느리면 종합 대조 실험의 결과가 명확하지 않을 수 있습니다. 이때 다음 두 가지를 참고해야 합니다.

  1. 이 문제에 대한 인식. 직접 비교할 수 있도록 각 모델의 실행 타이밍을 로그에 기록한다.
  2. A/A' /B 테스트를 실행하라. 여기서 A는 원래 시스템(대조군), A'는 반사실 기록이 있는 원래 시스템, B는 반사실 로깅이 있는 새 실험군이다. A와 A'가 크게 다를 경우 이는 반사실의 로그가 영향을 받고 있다는 경고가 된다.

공유 대조군은 일반적으로 코드 변경 없이 실행되기 때문에 반사실 기록은 공유 대조군을 사용하는 것을 매우 어렵게 만든다는 점을 유의해야 합니다. 경우에 따라 트리거링 조건은 다른 방법을통해 결정될 수 있지만 이로 인해 최적이 아닌 트리거링 또는 오류 조건이 발생할 수 있습니다.


이번 글에서는 '트리거링'에 대해 알아보았습니다. 퀴즈도 열심히 풀어주세요!

 

1. 트리거링 사례에 대한 설명입니다. 괄호에 들어갈 말을 순서대로 써 주세요.

한 쇼핑사이트에서 대조군에서는 장바구니에 3만 원 이상 있는 사용자에게 무료 배송을 제공하지만, 실험군에서는 실험 시작 전 60일 이내에 반품 내역이 있는 경우를 제외하고 장바구니에 2만 5천 원 이상 있는 사용자에게 무료 배송을 제공한다고 가정하겠습니다.
이때, 대조군 및 실험군은 모두 (        )을 평가하고 두 변형군 간에 (              ) 경우에만 사용자가 트리거된 것으로 표시해야 합니다.

 

 

답(드래그): 반사실, 차이가 있는

 

 

2. 트리거링에 대한 설명 중 틀린 것을 고르세요.

① 머신러닝 모델이 OEC를 개선하는지 여부를 확인하기 위해서는 반사실을 생성해야 한다.

② 보수적인 트리거가 이상적인 트리거보다 더 많은 사용자를 식별하지 않는 경우 단순한 트레이드 오프가 유용할 수 있다.

③ 트리거된 모집단에 대한 실험 효과를 계산할 때는 반드시 효과를 전체 사용자 기반으로 희석할 필요는 없다.

④ 실험군은 약간의 경험 차이로 인해 그들의 미래의 행동에 영향을 미칠 수 있는데, 일별 또는 세션별로 트리거된 사용자 분석은 이전 경험의 영향을 받기 쉽다.

⑤ 공유 대조군은 일반적으로 코드 변경 없이 실행되기 때문에 반사실 기록은 공유 대조군을 사용하는 것을 매우 쉬워지게 만든다.

 

 

답(드래그): ③ 트리거된 모집단에 대한 실험 효과를 계산할 때는 반드시 효과를 전체 사용자 기반으로 희석해야 한다. , ⑤ 공유 대조군은 일반적으로 코드 변경 없이 실행되기 때문에 반사실 기록은 공유 대조군을 사용하는 것을 매우 어렵게 만든다는 것을 유의해야 한다.

댓글