Section 14.3.3 : Attribution multi-touch
🎯 Objectif pédagogique
Comprendre et implémenter des modèles d'attribution multi-touch pour mesurer l'impact réel de chaque canal marketing sur les conversions et optimiser le budget.
Le problème de l'attribution
Un client interagit avec votre marque 10+ fois avant d'acheter. Quel touchpoint a "causé" la conversion ? L'attribution résout cette question critique pour l'allocation budgétaire.
Parcours type d un client B2B SaaS :
1. Google Search → article de blog (SEO)
2. Retargeting → ad LinkedIn
3. Email nurturing → ouvre 3 emails
4. Google Search → page produit (branded)
5. LinkedIn → post du CEO
6. Webinar → inscription + participation
7. Demo request → conversion !
Question : quel canal reçoit le crédit ?
Modèles d'attribution
Modèles d attribution
← Scroll horizontally →
Attribution data-driven (ML)
# Attribution avec Shapley values
# Concept : chaque canal reçoit sa contribution marginale
from itertools import combinations
import numpy as np
def shapley_attribution(channels, conversions_by_path):
"""
Calcule la valeur Shapley de chaque canal.
channels : liste des canaux
conversions_by_path : dict {frozenset(canaux) -> taux_conversion}
"""
n = len(channels)
shapley_values = {c: 0 for c in channels}
for channel in channels:
for size in range(n):
# Toutes les coalitions de taille 'size' sans 'channel'
others = [c for c in channels if c != channel]
for subset in combinations(others, size):
subset_set = frozenset(subset)
with_channel = frozenset(subset) | {channel}
# Contribution marginale
marginal = (conversions_by_path.get(with_channel, 0)
- conversions_by_path.get(subset_set, 0))
# Poids Shapley
weight = (np.math.factorial(size)
* np.math.factorial(n - size - 1)
/ np.math.factorial(n))
shapley_values[channel] += weight * marginal
return shapley_values
Dashboard d'attribution
Pourquoi le modèle last-touch est-il problématique pour l'allocation budgétaire ?
Learn AI, from prompts to agents