Che cos'è l'A/B testing?

A/B Testing in Python

Moe Lotfy, PhD

Principal Data Science Manager

Introduzione all'A/B testing

  • Un test A/B è...

     
    • un esperimento per capire quale versione funziona meglio
    • basato su metriche: tasso di iscrizione, vendite medie per utente, ecc.
    • con assegnazione casuale e analisi dei risultati
A/B Testing in Python

Fare A/B test o no?

Buoni usi dell'A/B testing:

  • Ottimizzare i tassi di conversione
  • Rilasciare nuove funzionalità dell'app
  • Valutare effetti incrementali degli annunci
  • Valutare l'impatto dei trial farmacologici

Non fare A/B test se:

  • Traffico insufficiente/campione "piccolo"
  • Nessuna ipotesi chiara e logica
  • Considerazioni etiche
  • Alto costo opportunità
A/B Testing in Python

Passi fondamentali dell'A/B testing

  1. Definisci obiettivo e design/esperienze
  2. Campiona utenti a caso per l'arruolamento
  3. Assegna utenti a caso a:
    • variante di controllo: stato attuale
    • variante/i di trattamento/test: nuovo design
  4. Registra le azioni e calcola le metriche
  5. Verifica differenze statisticamente significative

Fasi dell'A/B testing

A/B Testing in Python

Valore della randomizzazione

  • Generalizzabilità e rappresentatività
  • Minimizzare i bias tra gruppi
  • Stabilire la causalità isolando l'effetto del trattamento

 

Illustrazione di campionamento casuale e assegnazione casuale

1 https://www.statology.org/random-selection-vs-random-assignment/
A/B Testing in Python

Esempio Python di assegnazione casuale

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 in Python

Esempio Python di assegnazione casuale

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 in Python

Esempio Python di assegnazione casuale

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 in Python

Esercitiamoci!

A/B Testing in Python

Preparing Video For Download...