Accueil / Factory / Algos ML / Thompson Sampling — factory / algos ML / apprentissage par renforcement

THOMPSON SAMPLING.

Un algorithme qui choisit entre plusieurs options (offres, visuels, prix) en tirant au sort selon la probabilité que chacune soit la meilleure. Les options prometteuses sont montrées de plus en plus souvent, les mauvaises disparaissent vite. C'est l'A/B test qui cesse de perdre des ventes pendant le test.

DécisionTest A/B adaptatifBandit bayésienMarketing digitalNiveau : intermédiaire

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceProche de l'optimum : peu de visiteurs gaspillés sur les mauvaises options
InterprétabilitéDonne la probabilité que chaque option soit la meilleure
VitesseUn tirage aléatoire par décision, rien à entraîner
Facilité de réglageAucun réglage obligatoire, l'a priori Beta(1, 1) suffit
Tolérance aux données brutesExige un résultat connu vite ; les conversions tardives faussent tout
EN 30 SECONDES

Un restaurateur hésite entre quatre plats du jour. Chaque midi, il propose plus souvent celui qui a le plus de chances d'être le préféré, sans abandonner les autres tant qu'un doute subsiste.

1. Une croyance par option

Chaque option est décrite par une loi Beta, qui résume ce que l'on sait de son taux de conversion. Au départ tout est possible, puis la courbe se resserre à chaque visiteur observé.

2. Un tirage au sort pondéré par les chances

À chaque visiteur, on tire une valeur plausible dans la croyance de chaque option et on affiche celle qui sort la plus haute. Une option encore incertaine sort parfois en tête : c'est l'exploration.

3. Le résultat met à jour la croyance

Achat ou non, on ajoute le résultat au compteur de l'option affichée. Plus une option accumule de preuves, moins sa croyance varie, et plus le choix se concentre sur la meilleure.

LE CAS MÉTIER

e-commerce · test d'offres promotionnelles
EN ENTRÉE

Quatre codes promo en concurrence

Livraison offerte, -10 %, cadeau, -5 %. Pour chaque visiteur, on sait quel code a été affiché et s'il a acheté. Les données sont simulées : les vrais taux sont connus, ce qui permet de vérifier que l'algorithme trouve le bon code.

EN SORTIE

Un trafic qui se déplace tout seul

Dans l'exemple Python, sur 20 000 visiteurs, le meilleur code (-10 %) reçoit près de 90 % des affichages. L'algorithme donne aussi, pour chaque code, la probabilité qu'il soit le meilleur.

CE QU'ON MESURE

Les ventes perdues pendant le test

On mesure le regret : les achats perdus par rapport à un choix parfait fait dès le premier visiteur. Dans l'exemple, 956 achats contre 1 000 attendus avec le meilleur code dès le départ (regret d'environ 44 achats), et environ 775 avec un partage égal du trafic, comme dans un A/B test classique.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Plusieurs versions à comparer (offres, visuels, objets d'email) avec un résultat connu en minutes ou en heures
  • Trafic limité, où chaque visiteur envoyé sur une mauvaise version coûte cher
  • Tests permanents : de nouvelles options arrivent en cours de route, sans tout relancer
  • Besoin d'un indicateur simple pour la direction : la probabilité que chaque option soit la meilleure

NON

  • Besoin d'une preuve statistique solide pour une décision durable : un A/B test à taille fixe reste la référence
  • Résultat connu après plusieurs semaines (résiliation, réachat) : l'algorithme décide sur des données incomplètes
  • Meilleure option différente selon le profil du client : passer à un bandit contextuel ou à l'uplift modeling
  • Décisions qui s'enchaînent et s'influencent, comme un prix fixé jour après jour : c'est le terrain du Q-learning
LES 3 CHOIX QUI COMPTENT

Thompson Sampling n'a presque pas d'hyperparamètre. Ce sont les choix de modélisation qui font la différence.

A priori Beta(a, b)

Beta(1, 1) signifie « aucune idée ». Si l'historique situe la conversion autour de 4 %, un a priori comme Beta(4, 96) évite les emballements sur les premiers visiteurs.

Type de récompense

Pour un résultat oui / non, la loi Beta convient. Pour un panier en euros, on change de loi (normale ou gamma) : le principe du tirage reste le même.

Oubli progressif

Si les goûts changent (saison, concurrence), on donne moins de poids aux anciens résultats, par exemple en multipliant les compteurs par 0,99 chaque jour. Sans cela, l'algorithme reste figé sur son premier gagnant.

LE CODE MINIMAL

données simulées dans le code
# Codes promo sur le site : Thompson Sampling en R
set.seed(42)
codes <- c("LIVRAISON", "MOINS10", "CADEAU", "MOINS5")
taux_reels <- c(0.030, 0.050, 0.040, 0.035)   # inconnus dans la réalité
succes <- rep(0, 4)
echecs <- rep(0, 4)

for (visiteur in 1:20000) {
  # Un tirage dans la loi Beta de chaque code : on affiche le plus haut
  tirages <- rbeta(4, 1 + succes, 1 + echecs)
  k <- which.max(tirages)
  achat <- runif(1) < taux_reels[k]
  succes[k] <- succes[k] + achat
  echecs[k] <- echecs[k] + 1 - achat
}

# Probabilité que chaque code soit le meilleur (10 000 tirages a posteriori)
tir <- sapply(1:4, function(j) rbeta(10000, 1 + succes[j], 1 + echecs[j]))
p_meilleur <- tabulate(max.col(tir), nbins = 4) / 10000
print(data.frame(code = codes, affichages = succes + echecs,
                 taux_observe = round(succes / (succes + echecs), 4), p_meilleur))
cat("Achats obtenus :", sum(succes), "| attendus en partage égal :", 20000 * mean(taux_reels), "\n")

QUESTIONS FRÉQUENTES

Quelle différence entre Thompson Sampling et A/B test ?

Un A/B test partage le trafic à parts fixes jusqu'à la fin, puis on choisit. Thompson Sampling déplace le trafic vers la meilleure option pendant le test. On perd moins de ventes, mais les options délaissées sont estimées moins précisément.

Thompson Sampling ou UCB ?

Les deux gèrent le dilemme entre exploration et exploitation. UCB choisit de façon déterministe l'option dont l'estimation optimiste est la plus haute. Thompson Sampling tire au sort, ce qui le rend robuste quand les résultats arrivent par paquets, et il fait en pratique au moins aussi bien dans la plupart des études publiées.

Quand arrêter un test Thompson Sampling ?

Une règle courante : arrêter quand une option dépasse 95 % de probabilité d'être la meilleure, ou quand la perte attendue en choisissant la favorite devient négligeable. On peut aussi ne jamais arrêter et laisser l'algorithme s'adapter en continu.

LES ALGOS VOISINS

à comparer avant de choisir
la famille

Bandit manchot

Le problème général : explorer et exploiter en même temps. Epsilon-greedy et UCB en sont d'autres solutions, plus simples mais souvent moins efficaces.

Voir la fiche →
le moteur

Théorème de Bayes

Chaque résultat met à jour la croyance sur le taux de conversion : c'est Bayes appliqué visiteur après visiteur.

Voir la fiche →
quand les décisions s'enchaînent

Q-learning

Pour des choix dont l'effet dépend des choix passés, comme un prix fixé chaque jour sur un stock qui baisse.

Voir la fiche →
— formation

Passer de la fiche à la pratique

Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.

Voir les formations →