Что такое A/B-тестирование?

A/B-тестирование в Python

Moe Lotfy, PhD

Principal Data Science Manager

Введение в A/B-тестирование

  • A/B-тест — это...

     
    • эксперимент, позволяющий определить лучшую версию
    • основанный на метриках: коэффициент регистрации, средние продажи на пользователя и т. д.
    • использующий случайное распределение и анализ результатов
A/B-тестирование в Python

Проводить A/B-тест или нет?

Когда A/B-тестирование уместно:

  • Оптимизация конверсии
  • Выпуск новых функций приложения
  • Оценка эффекта рекламы
  • Анализ результатов клинических испытаний

Когда A/B-тестирование не подходит:

  • Недостаточный трафик / «малый» размер выборки
  • Отсутствие чёткой гипотезы
  • Этические ограничения
  • Высокая альтернативная стоимость
A/B-тестирование в Python

Основные этапы A/B-тестирования

  1. Определите цель и варианты дизайна
  2. Случайно выберите пользователей для участия
  3. Случайно распределите пользователей на:
    • контрольный вариант: текущее состояние
    • тестовый вариант(ы): новый дизайн
  4. Зафиксируйте действия пользователей и вычислите метрики
  5. Проверьте статистическую значимость различий

Этапы A/B-тестирования

A/B-тестирование в Python

Ценность рандомизации

  • Обобщаемость и репрезентативность
  • Минимизация смещения между группами
  • Установление причинно-следственной связи путём изоляции эффекта воздействия

 

Иллюстрация случайной выборки и случайного распределения

1 https://www.statology.org/random-selection-vs-random-assignment/
A/B-тестирование в Python

Пример случайного распределения на Python

checkout.info()
RangeIndex: 9000 entries, 0 to 8999
Data columns (total 6 columns):
 #   Column         Non-Null Count  Dtype  
 0   user_id        9000 non-null   int64  
 1   checkout_page  9000 non-null   object 
 2   order_value    7605 non-null   float64
 3   purchased      9000 non-null   float64
 4   gender         9000 non-null   object 
 5   browser        9000 non-null   object 
dtypes: float64(2), int64(1), object(3)
memory usage: 422.0+ KB
A/B-тестирование в Python

Пример случайного распределения на Python

checkout['gender'].value_counts(normalize=True)
F    0.507556
M    0.492444
Name: gender, dtype: float64
sample_df = checkout.sample(n=3000)
sample_df['gender'].value_counts(normalize=True)
M    0.506333
F    0.493667
Name: gender, dtype: float64
A/B-тестирование в Python

Пример случайного распределения на Python

checkout.groupby('checkout_page')['gender'].value_counts(normalize=True)
checkout_page  gender
A              M         0.505000
               F         0.495000
B              F         0.507333
               M         0.492667
C              F         0.520333
               M         0.479667
Name: gender, dtype: float64
A/B-тестирование в Python

Давайте потренируемся!

A/B-тестирование в Python

Preparing Video For Download...