Що таке A/B‑тестування?

A/B Testing на Python

Moe Lotfy, PhD

Principal Data Science Manager

Вступ до A/B‑тестування

  • A/B‑тест — це...

     
    • експеримент, щоб з'ясувати, яка версія краща
    • на основі метрик: рівень реєстрацій, середні продажі на користувача тощо
    • із випадковим призначенням і аналізом результатів
A/B Testing на Python

Тестувати A/B чи ні?

Коли A/B‑тестування доречне:

  • Оптимізація конверсій
  • Випуск нових функцій застосунку
  • Оцінка приростного ефекту реклами
  • Оцінка впливу випробувань ліків

Не проводьте A/B‑тест, якщо:

  • Недостатній трафік/«мала» вибірка
  • Немає чіткої логічної гіпотези
  • Є етичні застереження
  • Висока альтернативна вартість
A/B Testing на Python

Основні кроки A/B‑тестування

  1. Визначте мету та дизайни/досвіди
  2. Випадково відіберіть користувачів для участі
  3. Випадково призначте користувачів до:
    • контрольного варіанта: поточний стан
    • експериментального варіанта(ів): новий дизайн
  4. Логуйте дії користувачів і рахуйте метрики
  5. Перевірте статистичну значущість відмінностей

Кроки A/B‑тестування

A/B Testing на Python

Цінність рандомізації

  • Узагальнюваність і репрезентативність
  • Мінімізація упередженості між групами
  • Встановлення причинності через ізоляцію ефекту втручання

 

Ілюстрація випадкової вибірки та випадкового призначення

1 https://www.statology.org/random-selection-vs-random-assignment/
A/B Testing на 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 Testing на 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 Testing на 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 Testing на Python

Давайте потренуємось!

A/B Testing на Python

Preparing Video For Download...