본문 바로가기
추천 시스템/Study

A/B 테스트

A/B 테스트

1. A/B 테스트란?

A/B 테스트란 디지털 환경에서 전체 실사용자를 대상으로 대조군(Control Group)과 실험군(Experimental Group)으로 나누어서 어떤 특정한 알고리즘의 효과를 비교하는 방법론이다.

  • A와 B 알고리즘의 성능을 비교 평가
  • 하나의 서비스에 여러 개의 추천 컨셉 및 알고리즘 적용 가능
  • Ex) 음악 서비스

서비스 만족도를 향상시키기 위해서 어떤 알고리즘의 성능이 우수한지 비교 평가하는 것이 중요하다.

2. Online A/B 테스트 vs Offline A/B 테스트

  • Online A/B 테스트
    • 실제 서비스에 A와 B 알고리즘을 적용해서 성능을 비교 평가
    • Offline A/B 테스트 보다 결과가 더 정확
  • Offline A/B 테스트
    • 과거 A 알고리즘이 실제 서비스에 적용되었던 histroy 데이터를 이용하여 B 모델의 실제 성능을 추론

Online A/B 테스트의 높은 비용

  • 결과를 신뢰할 수 있지만, 충분한 양의 데이터가 수집되기 까지 많은 시간이 소요되고 리스크가 큼
  • 만약 테스트 알고리즘의 성능이 좋지 않을 경우 사용자가 서비스를 탈퇴할 수 있음
  • 광고/오픈마켓의 경우 클릭이 수익으로 직결되기 때문에 매출이 하락할 수 있음

Offline A/B 테스트를 대안으로 사용

  • 사용자의 경험비용 최소화
  • 새로운 아이디어를 빠르게 확인하여, 사전에 성능이 떨어지는 알고리즘은 미리 제외하고 성능이 보장된 알고리즘만 online에 적용 가능

출처 : [NDC21-데이터분석] 추천알고리즘 Offline A/B 테스트 (feat. PAIGE 프로야구 서비스)

하지만, 많은 가정이 필요하고 Offline 테스트 결과가 실제 결과와 다를 수 있다는 리스크 존재한다.

Offline A/B 테스트의 결과는 실제와 다름

  • 과거 데이터는 A 알고리즘과 그로 부터 생성된 사용자의 반응에 편향되어 있음
  • 즉, 이미 적용된 알고리즘을 통해 추천된 콘텐츠에 대해서만 반응을 평가할 수 있고 테스트 알고리즘이 새롭게 제시할 콘텐츠에 대한 사용자의 선호도를 평가하기 어려움

Counterfactual thinking 접근

  • ‘만약 ~ 했다면(조건), ~했을 텐데(결과)’
  • 즉, 만약 과거 A 알고리즘을 통해 추천된 콘텐츠가 B 알고리즘에 의해 추천되었다면, 20%의 확률로 추천 되었을 텐데
  • B 알고리즘의 아이템 추천 확률 개념을 이용해서 사용자의 반응을 re-weighting하는 방법

최근 Offline A/B 테스트

  • 최근에 AI/머신러닝 관련 학술지에 Offline A/B 테스트 주제의 논문들이 증가하는 추세
  • 2018년에는 이 주제로 RECSYS workshop이 진행됨
  • 추천 알고리즘 외에도 적용 가능
    • User-Interaction 시스템
    • Ex) 상품 검색, 소셜미디어 피드 랭킹, 뉴스 추천 등

3. Offline A/B 테스트 추론 방법

Importance weight 개념

  • 관측된 데이터
랭킹 A 알고리즘 추천 콘텐츠 반응 A 알고리즘 내 추천 확률 B 알고리즘 내 추천 확률 weight
1 google 0 0.8 0.2 0.25
2 naver 1 0.6 0.2 0.33
3 yahoo 1 0.7 0.9 1.3
  • A 알고리즘에서 각 콘텐츠가 k번째 추천될 확률 존재

  • B 알고리즘을 적용했을 때, 각 노래가 추천될 확률을 계산

    • Monte carlo simulation 기법 적용 n번 추천리스트를 생성한 다음 각 아이템이 k번째 추천될 확률 계산 → A, B 모두 stochastic 알고리즘
  • weight = (B 알고리즘 내 k번째 추천될 확률) / (A 알고리즘 내 k번째 추천될 확률 + $\epsilon$)

    • $\epsilon$ : 확률이 0이 되는 것을 방지
  • B 알고리즘 추청 반응률

    $$
    \frac{1}{n}\sum{w \cdot r }
    $$

    • w : weight
    • r : 반응
    • n : 데이터 개수
  • IS(Importance Sampling) 기법: weight를 기반으로 사용자의 반응을 보정

  • A 알고리즘에 비해서 B 알고리즘의 성능이 얼마나 향상할지 혹은 감소할지 추정

  • IS에 의한 B 알고리즘의 추정 반응률 = (0 + 0.33 + 1.3) / 3 = 1.63 / 3 = 54.3%

IS 기법의 weight 문제점

  • A 알고리즘에서 매우 낮은 확률로 콘텐츠가 추천되는 경우, 굉장히 큰 weight가 생성될 수 있음
  • 하나의 데이터 weight가 전체 결과에 큰 영향을 미침
랭킹 A 알고리즘 추천 콘텐츠 반응 A 알고리즘 내 추천 확률 B 알고리즘 내 추천 확률 weight
1 google 0 0.8 0.2 0.25
2 naver 1 0.6 0.2 0.33
3 yahoo 1 0.7 0.1 0.9 1.3 9
  • B 알고리즘의 추정 반응률 = (0 + 0.33 + 9) / 3 = 9.33 / 3 = 311%

CIS, weight를 제한하는 방법

  • CIS(Capping Importance Sampling)

  • 특정 값 c 보다 weight가 큰 경우, c로 대체

  • B 알고리즘 추청 반응률

    $$
    \frac{1}{n}\sum{\overline{w} \cdot r }, \quad \overline{w} = min(w,c)
    $$

    • c : capping value
랭킹 A 알고리즘 추천 콘텐츠 반응 A 알고리즘 내 추천 확률 B 알고리즘 내 추천 확률 weight
1 google 0 0.8 0.2 0.25
2 naver 1 0.6 0.2 0.33
3 yahoo 1 0.7 0.1 0.9 1.3 9→2
  • B 알고리즘의 추정 반응률 = (0 + 0.33 + 2) / 3 = 2.33 / 3 = 77.6%

NCIS, 정규화 기법 적용

  • NCIS(Normalized Capping Importance Sampling)
  • CIS값을 정규화하여 예측 에러를 최소화 시킨 Esimator
  • B 알고리즘 추청 반응률

$$
\frac{\frac{1}{n}\sum{\overline{w} \cdot r }}{\frac{1}{n}\sum{\overline{w}}}
$$

  • 추가적인 방법론
    • pieceNCIS : 데이터를 적절한 그룹별로 나눠서 normalization
    • pointNCIS : 데이터 각각을 normalization

deterministic 알고리즘

  • 위의 stochastic 알고리즘과 달리 deterministic 알고리즘은 user-item pair에 대해 score가 변하지 않기 때문에, 추가적으로 stochastic model로 근사화 해야함
  • Ranking score 기반의 weighted sampling을 통해 추천확률을 생성할 수 있음
  • 또는, Doubly Robust 방법론을 적용해 볼 수 있음

4. A/B 테스트에서 사용자를 분리 방법

보통 A/B 테스트를 간단히 수행할 때, 단순히 트래픽 비율을 나누는 방법을 사용한다. 하지만 실제 A/B 테스트를 수행할 때 서로 다른 대조군과 실험군을 보여주는 방법은 1) 노출 빈도 분산 방식, 2) 사용자 분산 방식, 3) 시간대 분산 방식의 3가지 방식이 존재한다.

노출 빈도 분산 방식 사용자 분산 방식 시간대 분산 방식
방법론 A/B 테스트가 진행되는 페이지가 렌더링 될 때, 비율로 A와 B를 다르게 노출 사용자를 A그룹과 B그룹으로 분리하여, 고정적으로 다른 Variation을 노출 초~분 단위 정도로 시간대를 세밀하게 분할하여 A안과 B안을 노출
특징 가장 통계적 유의성이 높지만, UI/UX의 경우 사용자들에게 혼란을 줄 수 있음 사용자 별로 고정 UI/UX가 나오기 때문에 UI/UX 테스트에 적합하지만, 특정 Heavy User에 의해 결과값이 왜곡될 수 있음 보안/설계 상의 문제로 분산 방식을 사용하기 어려울 때, 상대적으로 쉽게 활용 가능
적합한 테스트 알고리즘 테스트 UI/UX 테스트 노출/사용자 분산 방식을 사용할 수 없는 경우 대안으로 활용
  1. 노출 빈도 분산 방식 : 테스트가 진행되는 페이지가 렌더링될 때 마다, 특정 비율(50%:50% or 80%:20%)에 따라 A안과 B안을 다르게 노출시키는 방식으로 특정 Heavy User가 매우 많은 Action을 보여주더라도 노출 빈도에 따라 A안과 B안 모두에 포함이 될 수 있기 때문에 상대적으로 통계적 유의성이 더 높다. 하지만 동일한 사용자더라도 매번 UI/UX가 다르게 나올 수 있기 때문에 사용자들에게 혼란을 주고 오히려 결과값에 Bias를 만들 수 있기 때문에 UI/UX 테스트 보다는 알고리즘 테스트 등에 더 적합하다.
  2. 사용자 분산 방식 : 특정한 사용자 ID에 따라 사용자 그룹을 나누고, 각 사용자 그룹에 대해 A안과 B안을 노출시키는 방식이다. 이 방식은 앞서 말한 노출 빈도 분산 방식보다는 UI/UX가 사용자 그룹별로 고정되어 있어서 혼란을 덜 주는 장점이 있지만, 반면에 특정 Heavy User의 Outlier들에 의해 전체 결과값이 왜곡될 수 있기 때문에 결과값 검증 절차가 필요하다.
  3. 시간대 분산 방식 : 시스템 설계 상 노출이나 사용자 분산이 불가능할 경우, 시간 단위로 시간 대역을 분할하여 테스트를 수행하는 방식이다. 과거에는 일부 금융사나 통신사 등 보안과 하드웨어 특성 때문에 이러한 방식을 사용하였지만 현재는 많이 활용되는 방식은 아니다.

5. 추천 알고리즘

deterministic 알고리즘

  • deterministic 알고리즘은 user-item pair에 대해 score가 변하지 않기 때문에, 추가적으로 stochastic model로 근사화 해야함
  • Ranking score 기반의 weighted sampling을 통해 추천확률을 생성할 수 있음
  • 또는, Doubly Robust 방법론을 적용해 볼 수 있음

기본 추천 알고리즘

  • Thompson sampling (TS)
    • Multi-armed bandit 기반 알고리즘
    • Exploration(탐색) + Exploitation(활용)을 적절하게 수행
    • 최신성과 인기성을 반영하여 추천 ranking을 결정

References

'추천 시스템 > Study' 카테고리의 다른 글

MAB (Multi-Armed Bandit) 알고리즘  (0) 2022.02.14
연관 분석 (Association Analysis)  (0) 2022.02.10

댓글