First-touch, last-touch, linéaire, position-based, time-decay : tous ces modèles d’attribution partagent une limite fondamentale. Ils attribuent du crédit selon des hypothèses sur les touchpoints qui comptent, pas selon des mesures de ceux qui génèrent réellement des conversions. L’attribution data-driven adopte une approche différente : au lieu de supposer que la position détermine l’importance, elle calcule ce qui arrive à la probabilité de conversion quand on retire complètement un canal.
Pourquoi les modèles heuristiques ne suffisent pas
Les modèles position-based supposent que les premiers et derniers points de contact méritent plus de crédit. C’est peut-être vrai pour votre activité, ou peut-être pas. Les modèles linéaires supposent que tous les points de contact contribuent à parts égales (encore une hypothèse). Le time-decay suppose que la récence corrèle avec l’influence. Ce sont des hypothèses raisonnables, mais elles ne sont pas validées contre vos données réelles.
L’attribution data-driven pose une question fondamentalement différente : si ce canal n’existait pas, combien de conversions en moins observerait-on ? C’est l’effet de retrait (removal effect), et c’est le fondement de l’attribution par chaînes de Markov comme par valeurs de Shapley.
Voyez ce que ça implique pour les décisions budgétaires. Un canal qui apparaît dans de nombreux parcours convertissants peut sembler précieux avec les modèles heuristiques. Mais si le retirer ne change pas la probabilité de conversion (parce que les utilisateurs auraient trouvé un autre chemin), sa contribution réelle est inférieure à ce que suggère le crédit position-based.
Les chaînes de Markov pour l’attribution : le concept
Une chaîne de Markov modélise les parcours clients comme une séquence d’états où la probabilité de passer à l’état suivant ne dépend que de l’état actuel. C’est la « propriété de Markov » ou absence de mémoire. Le modèle ne se soucie pas de comment vous êtes arrivé à votre état actuel, seulement d’où vous êtes maintenant.
Pour l’attribution, les états sont les canaux plus trois états spéciaux : START (début du parcours), CONVERSION (résultat positif) et NULL (le parcours se termine sans conversion). Chaque parcours observé contribue aux probabilités de transition entre états.
Prenons un exemple simple avec trois canaux : Paid Search, Email et Direct. À partir des données historiques, on observe des patterns comme :
- 40 % des utilisateurs qui commencent vont vers Paid Search
- 30 % des utilisateurs sur Paid Search passent à Email
- 50 % des utilisateurs sur Email convertissent
Ces probabilités forment une matrice de transition, un tableau où les lignes sont les états « de départ » et les colonnes les états « d’arrivée ». Chaque cellule contient la probabilité de cette transition d’après vos données historiques de parcours.
L’intérêt de cette représentation, c’est qu’on peut calculer la probabilité globale d’atteindre CONVERSION depuis START en suivant tous les chemins possibles dans la matrice. Et surtout, on peut recalculer cette probabilité après avoir retiré un canal, ce qui donne l’effet de retrait.
L’effet de retrait : comment fonctionne l’attribution par Markov
L’effet de retrait mesure de combien la probabilité de conversion baisse quand un canal est retiré du graphe de parcours. La formule est directe :
Effet de retrait(Canal X) = 1 - (P(conversion sans X) / P(conversion avec tous les canaux))Prenons un exemple concret. Supposons que votre matrice de transition produise ces résultats :
- Probabilité de conversion totale avec tous les canaux : 50 %
- Probabilité de conversion sans Paid Search : 35 %
- Probabilité de conversion sans Email : 45 %
- Probabilité de conversion sans Direct : 48 %
Les effets de retrait seraient :
- Paid Search : 1 - (0,35 / 0,50) = 30 %
- Email : 1 - (0,45 / 0,50) = 10 %
- Direct : 1 - (0,48 / 0,50) = 4 %
Ces pourcentages totalisent 44 %, pas 100 %. Les effets de retrait mesurent la contribution marginale, et ces contributions se chevauchent. Retirer Paid Search affecte des chemins qui incluaient aussi Email. Pour obtenir des parts d’attribution qui totalisent 100 % des conversions, on normalise :
Total des effets de retrait = 30 % + 10 % + 4 % = 44 %
Part d'attribution(Paid Search) = 30 % / 44 % = 68 %Part d'attribution(Email) = 10 % / 44 % = 23 %Part d'attribution(Direct) = 4 % / 44 % = 9 %Il suffit ensuite de multiplier ces parts par le total de vos conversions pour obtenir les conversions attribuées par canal.
Implémenter l’attribution Markov en SQL
L’attribution complète par chaînes de Markov nécessite des opérations matricielles qui poussent SQL au-delà de sa zone de confort. L’approche pratique consiste à utiliser SQL pour l’extraction des chemins et la préparation des données, puis à passer le relais à Python pour les calculs matriciels.
Extraction des chemins dans BigQuery
La première étape est d’extraire les chemins de parcours à partir de vos données de touchpoints. Vous avez besoin de deux jeux de données : les chemins qui ont abouti à une conversion et ceux qui n’ont pas converti.
WITH touchpoints AS ( SELECT user_id, channel, event_timestamp, conversion_id FROM {{ ref('int__touchpoints') }} WHERE event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 90 DAY)),
converting_paths AS ( SELECT t.user_id, t.conversion_id, STRING_AGG(t.channel, ' > ' ORDER BY t.event_timestamp) AS journey_path, 'conversion' AS outcome FROM touchpoints t INNER JOIN {{ ref('int__conversions') }} c ON t.user_id = c.user_id AND t.conversion_id = c.conversion_id WHERE t.event_timestamp BETWEEN TIMESTAMP_SUB(c.conversion_timestamp, INTERVAL 30 DAY) AND c.conversion_timestamp GROUP BY t.user_id, t.conversion_id),
non_converting_paths AS ( SELECT t.user_id, CAST(NULL AS STRING) AS conversion_id, STRING_AGG(t.channel, ' > ' ORDER BY t.event_timestamp) AS journey_path, 'null' AS outcome FROM touchpoints t LEFT JOIN {{ ref('int__conversions') }} c ON t.user_id = c.user_id WHERE c.user_id IS NULL GROUP BY t.user_id)
SELECT user_id, conversion_id, journey_path, outcomeFROM converting_paths
UNION ALL
SELECT user_id, conversion_id, journey_path, outcomeFROM non_converting_pathsCe qui produit des lignes comme :
| user_id | journey_path | outcome |
|---|---|---|
| user_123 | Paid Search > Email > Direct | conversion |
| user_456 | Organic > Paid Search > Organic | null |
| user_789 | Email > Email > Direct | conversion |
Comptage des transitions
À partir de ces chemins, on peut calculer les transitions en SQL :
WITH path_transitions AS ( SELECT journey_path, outcome, SPLIT(journey_path, ' > ') AS channels FROM journey_paths),
transitions AS ( SELECT 'START' AS from_state, channels[OFFSET(0)] AS to_state, COUNT(*) AS transition_count FROM path_transitions GROUP BY from_state, to_state
UNION ALL
SELECT channels[OFFSET(i)] AS from_state, channels[OFFSET(i + 1)] AS to_state, COUNT(*) AS transition_count FROM path_transitions, UNNEST(GENERATE_ARRAY(0, ARRAY_LENGTH(channels) - 2)) AS i GROUP BY from_state, to_state
UNION ALL
SELECT channels[OFFSET(ARRAY_LENGTH(channels) - 1)] AS from_state, CASE outcome WHEN 'conversion' THEN 'CONVERSION' ELSE 'NULL' END AS to_state, COUNT(*) AS transition_count FROM path_transitions GROUP BY from_state, to_state)
SELECT from_state, to_state, transition_count, transition_count / SUM(transition_count) OVER (PARTITION BY from_state) AS transition_probabilityFROM transitionsÀ partir de là, le calcul de l’effet de retrait nécessite des opérations matricielles (en particulier, calculer la probabilité d’atteindre CONVERSION depuis START à travers tous les chemins possibles). Le package ChannelAttribution en R ou marketing-attribution-models en Python gère cela efficacement avec des backends C++ optimisés pour le passage à l’échelle.
Les valeurs de Shapley : une approche par la théorie des jeux
Les valeurs de Shapley viennent de la théorie des jeux coopératifs, conçues à l’origine pour répartir équitablement les profits entre les joueurs d’une coalition. Pour l’attribution, les canaux sont les joueurs et les conversions sont la valeur à répartir.
La valeur de Shapley d’un canal correspond à sa contribution marginale moyenne sur tous les ordres possibles de canaux. Mathématiquement :
φᵢ = Σ [|S|!(n-|S|-1)!/n!] × [v(S ∪ {i}) - v(S)]En clair : pour chaque sous-ensemble possible de canaux, on calcule combien l’ajout du canal i augmente la probabilité de conversion. On pondère ces contributions par la probabilité de chaque sous-ensemble, puis on somme.
Les valeurs de Shapley satisfont quatre axiomes d’équité :
- Efficacité : les crédits totalisent exactement le nombre total de conversions
- Symétrie : les canaux à contribution égale reçoivent un crédit égal
- Joueur nul : les canaux sans valeur ajoutée reçoivent zéro crédit
- Additivité : les attributions de deux analyses séparées peuvent être combinées
L’élégance théorique a un coût pratique : calculer les valeurs de Shapley nécessite d’évaluer 2^n coalitions où n est le nombre de canaux. Avec 10 canaux, ça fait 1 024 coalitions. Avec 20, plus d’un million. Les méthodes d’approximation par échantillonnage Monte Carlo rendent le calcul possible à grande échelle, mais il reste plus intensif en calcul que les chaînes de Markov.
Quand utiliser Shapley vs Markov
Les chaînes de Markov excellent quand la nature séquentielle des parcours compte pour votre activité. La probabilité de transition de Paid Search vers Email peut différer significativement de celle d’Email vers Paid Search. Les modèles de Markov capturent ces asymétries.
Les valeurs de Shapley traitent les canaux comme des membres interchangeables d’une coalition, sans ordre inhérent. C’est pertinent quand vous vous intéressez plus à quels canaux apparaissent dans les parcours qu’à l’ordre dans lequel ils apparaissent.
En pratique, les chaînes de Markov sont plus courantes pour trois raisons : coût de calcul moindre, interprétation intuitive parce que les probabilités de transition correspondent à des comportements clients réels, et bonne performance empirique. Les valeurs de Shapley prennent l’avantage quand vous avez besoin de garanties théoriques sur l’équité ou quand des exigences réglementaires imposent une méthodologie démontrable.
Comparaison avec l’attribution data-driven de Google
L’attribution data-driven de Google dans GA4 utilise une combinaison de méthodes : modèles de probabilité de conversion, analyse contrefactuelle et distribution de crédit basée sur Shapley, enrichie par du machine learning. Elle prend en compte jusqu’à 50 touchpoints par conversion avec une fenêtre de lookback par défaut de 90 jours.
Un point critique qui piège beaucoup d’équipes : le DDA nécessite plus de 400 conversions par type de conversion sur les 30 derniers jours, plus environ 10 000 chemins avec au moins deux interactions. Si vous n’atteignez pas ces seuils, GA4 bascule silencieusement vers l’attribution last-click sans notification. Vous pouvez croire que vous utilisez l’attribution data-driven alors que vous obtenez du last-click.
Construire l’attribution dans votre data warehouse offre des avantages au-delà d’éviter ces bascules silencieuses :
- Transparence : vous pouvez inspecter chaque étape du calcul
- Personnalisation : ajustez les fenêtres de lookback, les groupements de canaux et les paramètres du modèle
- Intégration : combinez les touchpoints en ligne avec les données offline, les interactions CRM et les plateformes non-Google
- Auditabilité : exportez les résultats pour validation et revue par les parties prenantes
La contrepartie, c’est l’effort d’implémentation. Le DDA de Google est clé en main si vous atteignez les seuils. L’attribution native en data warehouse demande de construire et maintenir le pipeline.
Recommandations pratiques d’implémentation
Groupement des canaux
Commencez avec 5 à 10 groupes de canaux de haut niveau. Trop de canaux produit des matrices de transition éparses et des probabilités peu fiables. Regroupez les canaux à faible volume (moins de 2 % des touchpoints) dans une catégorie « Autre ». Vous pourrez ajouter de la granularité plus tard quand le volume de données augmente.
Les choix de groupement comptent : « Paid Social » comme canal unique se comporte différemment de « Facebook Ads » et « LinkedIn Ads » comme canaux séparés. Commencez large, validez la stabilité du modèle, puis augmentez la granularité.
Volume de données minimum
Pour une attribution Markov fiable, il faut environ 10 fois plus de transitions que de types de transitions uniques. Avec 10 canaux (plus START, CONVERSION, NULL), vous avez jusqu’à 13 × 13 = 169 transitions possibles. Visez au moins 1 690 transitions de chemin au total, ce qui est généralement atteignable avec quelques centaines de conversions.
Les modèles de Markov d’ordre supérieur (où l’état suivant dépend de l’état actuel et des précédents) nécessitent exponentiellement plus de données. Les modèles de premier ordre fonctionnent bien dans la plupart des cas.
Stratégie de validation
Exécutez l’attribution Markov en parallèle de vos modèles heuristiques sur la même période. Comparez les classements de canaux :
- Forte concordance : les canaux se classent de façon similaire entre les modèles. Confiance plus élevée dans les résultats.
- Divergence significative : un modèle crédite un canal beaucoup plus que les autres. Investiguer la raison, car c’est soit un insight, soit un problème de qualité des données.
La validation ultime reste le test d’incrémentalité : exclure une partie des utilisateurs de la diffusion publicitaire d’un canal et mesurer la différence réelle de conversion. Utilisez les résultats d’incrémentalité pour calibrer votre modèle d’attribution, en traitant le lift incrémental mesuré comme vérité terrain.
Pour aller plus loin
L’attribution data-driven mesure ce que les modèles heuristiques supposent : la contribution réelle de chaque canal à la probabilité de conversion. Les chaînes de Markov calculent cette contribution via les matrices de transition et les effets de retrait. Les valeurs de Shapley la calculent via l’analyse de coalitions et les contributions marginales. Les deux approches font mieux que les heuristiques position-based, même si elles demandent plus de données et de calcul.
Une première implémentation pragmatique combine l’extraction des chemins en SQL avec les chaînes de Markov en Python. Exécuter les résultats en parallèle de vos rapports d’attribution existants permet de construire la confiance des parties prenantes, et les tests d’incrémentalité fournissent la vérité terrain quand le budget le permet.
Aucun modèle d’attribution ne capture la vérité parfaite, parce que les décisions des clients sont influencées par des facteurs qu’aucun modèle ne peut mesurer. Mais les approches data-driven se rapprochent davantage de la réalité que de supposer que les premiers et derniers points de contact méritent 40 % chacun. Visez de meilleures décisions budgétaires, pas l’attribution parfaite.