Co je A/B testování?

A/B testování v Pythonu

Moe Lotfy, PhD

Principal Data Science Manager

Úvod do A/B testování

  • A/B test je...

     
    • experiment navržený k testování, která verze je lepší
    • založený na metrikách: míra registrací, průměrné tržby na uživatele apod.
    • využívající náhodné přiřazení a analýzu výsledků
A/B testování v Pythonu

A/B testovat, či netestovat?

Vhodné použití A/B testování:

  • Optimalizace konverzních poměrů
  • Vydávání nových funkcí aplikace
  • Vyhodnocování inkrementálních efektů reklam
  • Hodnocení dopadu klinických studií

A/B test neprovádějte, pokud:

  • Není dostatečná návštěvnost / vzorek je příliš malý
  • Chybí jasná logická hypotéza
  • Existují etické překážky
  • Náklady příležitosti jsou vysoké
A/B testování v Pythonu

Základní kroky A/B testování

  1. Stanovte cíl a varianty/zkušenosti
  2. Náhodně vyberte uživatele k zařazení
  3. Náhodně přiřaďte uživatele do skupin:
    • kontrolní varianta: současný stav
    • testovací varianta(y): nový design
  4. Zaznamenejte akce uživatelů a vypočítejte metriky
  5. Testujte statisticky významné rozdíly

Kroky A/B testování

A/B testování v Pythonu

Hodnota randomizace

  • Zobecnitelnost a reprezentativnost
  • Minimalizace zkreslení mezi skupinami
  • Prokázání kauzality izolací efektu léčby

 

Ilustrace náhodného výběru a náhodného přiřazení

1 https://www.statology.org/random-selection-vs-random-assignment/
A/B testování v Pythonu

Příklad náhodného přiřazení v Pythonu

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 testování v Pythonu

Příklad náhodného přiřazení v Pythonu

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 testování v Pythonu

Příklad náhodného přiřazení v Pythonu

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 testování v Pythonu

Pojďme si procvičit!

A/B testování v Pythonu

Preparing Video For Download...