Qu'est-ce qu'un test A/B ?

A/B Testing en Python

Moe Lotfy, PhD

Principal Data Science Manager

Intro au test A/B

  • Un test A/B, c'est…

     
    • une expérience pour comparer quelle version est meilleure
    • basée sur des indicateurs : taux d'inscription, ventes moyennes par utilisateur, etc.
    • avec répartition aléatoire et analyse des résultats
A/B Testing en Python

Tester en A/B ou pas ?

Bonnes utilisations du test A/B :

  • Optimiser les taux de conversion
  • Déployer de nouvelles fonctions d'application
  • Évaluer les effets incrémentaux des annonces
  • Mesurer l'impact des essais cliniques

N'utilisez pas de test A/B si :

  • Trafic insuffisant/taille d'échantillon « petite »
  • Aucune hypothèse claire et logique
  • Enjeux éthiques
  • Coût d'opportunité élevé
A/B Testing en Python

Étapes fondamentales d'un test A/B

  1. Définir l'objectif et les maquettes/expériences
  2. Échantillonner aléatoirement des utilisateurs à inscrire
  3. Les répartir au hasard entre :
    • variante témoin : état actuel
    • variante(s) traitement/essai : nouveau design
  4. Consigner les actions et calculer les indicateurs
  5. Tester des écarts statistiquement significatifs

Étapes d'un test A/B

A/B Testing en Python

Valeur de l'aléa

  • Généralisation et représentativité
  • Réduire au minimum les biais entre groupes
  • Établir la causalité en isolant l'effet du traitement

 

Illustration de l'échantillonnage et de l'assignation aléatoires

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

Exemple Python d'assignation aléatoire

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

Exemple Python d'assignation aléatoire

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

Exemple Python d'assignation aléatoire

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

Passons à la pratique !

A/B Testing en Python

Preparing Video For Download...