Tous les guides
IntermédiaireÀ votre rythmeGuide gratuitSection 10/27

Attribution multi-touch

Explorez l’IA pour les opérations marketing et commerciales : CRM, suivi des prospects, workflows et mesure des résultats. Travaillez les contrôles sur des exemples pédagogiques.

💡

Contenu gratuit, accessible sans compte. Les outils et modèles évoluent : consultez le dossier actuel pour vérifier leurs versions. Modèles et sources

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

ModèleLogiqueAvantageInconvénient
First touch100% au premier contactSimpleIgnore le nurturing
Last touch100% au dernier contactSimpleIgnore la découverte
LinéairePoids égal à chaque touchÉquitablePas de différenciation
Time decayPlus de poids aux récentsRéalisteSous-estime discovery
Position-based40/20/40 premier/milieu/dernierÉquilibréArbitraire
Data-driven (ML)Poids calculé par algorithmeLe plus précisRequiert beaucoup de données

← 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

Vérification rapide

Pourquoi le modèle last-touch est-il problématique pour l'allocation budgétaire ?

Apprendre l’IA, du premier prompt aux agents

15 guides gratuitsQuiz, schémas et ateliersSans compte

Votre progression

Cette progression est déclarative et conservée dans votre navigateur. L’attestation finale ne constitue pas un diplôme ni une évaluation indépendante.

Voir ma progression et mon attestation

Apprendre l’IA, du premier prompt aux agents

15 guides gratuitsQuiz, schémas et ateliersSans compte

Un cas pratique IA dans votre boîte mail

Méthodes, ressources et nouveaux exercices. Gratuit, avec désinscription à tout moment.