Czym jest testowanie A/B?

Testy A/B w Pythonie

Moe Lotfy, PhD

Principal Data Science Manager

Wprowadzenie do testowania A/B

  • Test A/B to...

     
    • eksperyment służący sprawdzeniu, która wersja jest lepsza
    • oparty na metrykach: współczynnik rejestracji, średnia sprzedaż na użytkownika itp.
    • z losowym przypisaniem i analizą wyników
Testy A/B w Pythonie

Testować czy nie testować A/B?

Kiedy warto stosować testy A/B:

  • Optymalizacja współczynnika konwersji
  • Wdrażanie nowych funkcji aplikacji
  • Ocena przyrostowego efektu reklam
  • Ocena skuteczności badań klinicznych

Kiedy nie stosować testów A/B:

  • Niewystarczający ruch/„mała" próba
  • Brak jasnej hipotezy
  • Względy etyczne
  • Wysoki koszt alternatywny
Testy A/B w Pythonie

Podstawowe kroki testowania A/B

  1. Określ cel oraz warianty/doświadczenia
  2. Losowo dobierz użytkowników do rejestracji
  3. Losowo przypisz użytkowników do:
    • wariantu kontrolnego: stan obecny
    • wariantu testowego: nowy projekt
  4. Rejestruj działania i obliczaj metryki
  5. Sprawdź istotność statystyczną różnic

Kroki testowania A/B

Testy A/B w Pythonie

Wartość randomizacji

  • Uogólnialność i reprezentatywność
  • Minimalizacja błędu systematycznego między grupami
  • Ustalenie przyczynowości przez izolację efektu leczenia

 

Ilustracja losowego doboru i losowego przypisania

1 https://www.statology.org/random-selection-vs-random-assignment/
Testy A/B w Pythonie

Losowe przypisanie w Pythonie – przykład

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
Testy A/B w Pythonie

Losowe przypisanie w Pythonie – przykład

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
Testy A/B w Pythonie

Losowe przypisanie w Pythonie – przykład

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
Testy A/B w Pythonie

Czas na ćwiczenia!

Testy A/B w Pythonie

Preparing Video For Download...