Shapley Value nel Marketing: Cos’è, Come Calcola l’Attribuzione e Differenze con Markov
Due aziende investono entrambe 100.000 € in marketing. Entrambe utilizzano Google Ads, SEO, email marketing, content e demo commerciali.
Alla fine dell’anno, la prima azienda conclude che Google Ads genera il 70% delle vendite e decide di raddoppiarne il budget. La seconda scopre invece che Google Ads chiude le conversioni soltanto perché la SEO e l’email marketing hanno educato il cliente nei tre mesi precedenti: tagliando i canali d’inizio funnel, la pipeline crollerebbe.
Stessi dati. Decisioni strategiche opposte.
Chi ha ragione?
La risposta sta nell’illusione dell’attribuzione deterministica. La maggior parte delle aziende continua a distribuire il proprio budget guidata da regole arbitrarie come il Last Click o il First Click. Si tratta di scorciatoie euristiche che soffrono di un vizio sistematico: puniscono i canali che creano l’interesse iniziale e premiano oltre misura quelli che si limitano a raccogliere la conversione al traguardo. Il risultato è una distorsione del Costo di Acquisizione Cliente (CAC) e del Return on Ad Spend (ROAS), con conseguenti tagli ingiustificati ai touchpoint educativi e sovra-investimenti in quelli di chiusura.
Per uscire da questo vicolo cieco occorre abbandonare le euristiche e adottare il rigore della teoria dei giochi cooperativi: lo Shapley Value. Formulato nel 1953 dal matematico e Premio Nobel Lloyd Shapley, questo modello offre un framework per misurare il reale contributo marginale di ogni singolo canale quando collabora con tutti gli altri, garantendo una ripartizione provabilmente equa del merito e del budget.
Perché il Last Click Porta a Decisioni di Budget Sbagliate
Assegnare il credito di una conversione è come analizzare un’azione da gol nel calcio. Se guardiamo solo l’ultimo tocco dell’attaccante a porta vuota, ignoriamo il recupero palla del difensore e l’assist del centrocampista.
Nel marketing accade esattamente la stessa cosa. Il modello Last Click scambia la fase di chiusura per l’intero processo di persuasione, portando le aziende a tagliare i budget sui canali di prima acquisizione (SEO, Content) per concentrare le risorse sugli ultimi metri (Ads, Demo). Risultato? Nel breve termine i numeri sembrano reggere, ma nel giro di sei mesi la pipeline si prosciuga perché nessuno alimenta più l’inizio del funnel.
Il confronto diretto su un singolo percorso cliente mostra in modo plastico la differenza di prospettiva tra i diversi approcci:
Percorso di Conversione dell’Utente
SEO ───► Email / Newsletter ───► Demo ───► VENDITA
| Modello | SEO | Demo | Rischio Strategico per il Business | |
|---|---|---|---|---|
| Last Click | 0% | 0% | 100% | Miopia sul fondo funnel: taglia l’acquisizione e prosciuga la pipeline futura. |
| Lineare | 33.3% | 33.3% | 33.3% | Uguaglianza artificiale: tratta una ricerca organica informativa come una demo commerciale da 45 minuti. |
| Shapley Value | 31.25% | 25.00% | 43.75% |
Le 3 Conseguenze del Last Click sulla Gestione del Budget
- Illuso da Falsi Top Performer: I canali di retargeting e le keyword di brand appaiono sempre come i canali più redditizi semplicemente perché intercettano utenti già decisi ad acquistare.
- Sottovalutazione dell’Effetto Alone: La SEO e i contenuti educativi non prendono quasi mai il merito diretto della conversione, ma senza di essi l’efficacia di newsletter e demo crolla drammaticamente.
- Distribuzione Inefficiente del CAC: Il Costo di Acquisizione Cliente viene calcolato in modo distorto, portando a sovra-investire in aste pubblicitarie sature anziché in asset di proprietà a lungo termine.
Le 4 Garanzie Matematiche contro la Distorsione del Budget
Molti modelli di attribuzione falliscono perché non hanno regole d’ingaggio rigorose. Lo Shapley Value non è un’ipotesi arbitraria né una “black box”: è l’unico algoritmo nella teoria dei giochi cooperativi capace di rispettare contemporaneamente quattro garanzie matematiche inviolabili.
Per chi deve difendere le scelte di allocazione del budget davanti a un CFO o al board aziendale, questi quattro assiomi rappresentano la prova che la ripartizione dei ricavi non è frutto di una negoziazione politica, ma di un vincolo logico e matematico.
1. Efficienza (Zero dispersioni e zero ricavi fantasma)
La somma dei crediti attribuiti ai singoli canali deve corrispondere esattamente al [math]100\%[/math] delle conversioni o del valore generato dalla coalizione complessiva. Non si inventano metriche che non esistono e non si perde un singolo euro lungo la strada.
[math]\displaystyle \sum_{i \in N} \phi_i(v) = v(N)[/math]
2. Simmetria (Parità di trattamento tra canali equivalenti)
Se due touchpoint distinti (ad esempio due campagne di retargeting su piattaforme differenti) generano lo stesso identico incremento marginale in qualsiasi scenario di funnel, riceveranno la medesima quota di merito. Il modello elimina ogni favoritismo aprioristico verso uno specifico partner mediatico.
[math]\displaystyle \text{Se } v(S \cup \{i\}) = v(S \cup \{j\}) \quad \forall S \subseteq N \setminus \{i, j\}, \quad \text{allora } \phi_i(v) = \phi_j(v)[/math]
3. Giocatore Nullo (Zero tolleranza per i canali parassita)
Un canale che non apporta alcun valore incrementale a nessuna combinazione di touchpoint riceve un credito pari a zero. Questo assioma individua e neutralizza i canali che si limitano a “intercettare” conversioni già certe senza aver mai spostato la decisione dell’utente.
[math]\displaystyle \text{Se } v(S \cup \{i\}) = v(S) \quad \forall S \subseteq N \setminus \{i\}, \quad \text{allora } \phi_i(v) = 0[/math]
4. Additività (Coerenza cross-campagna e aggregabilità)
Se analizziamo separatamente due micro-obiettivi di business (es. Iscrizione alla Demo e Acquisto Finale), il contributo totale di un canale nel funnel complessivo è esattamente uguale alla somma dei contributi calcolati sui singoli obiettivi. È possibile scomporre le analisi senza che il quadro strategico perda coerenza.
[math]\displaystyle \phi_i(v_1 + v_2) = \phi_i(v_1) + \phi_i(v_2)[/math]
Come preparare i dati per lo Shapley Value: dal Customer Journey alla funzione valore (v(S))
La parte più complessa di un modello di attribuzione basato sullo Shapley Value non è il calcolo matematico.
La formula è elegante e relativamente semplice.
La vera sfida consiste nel costruire correttamente la funzione valore:
[math]v(S)[/math]
cioè il valore generato da ogni possibile combinazione di canali.
In un ambiente reale, i dati non arrivano già sotto forma di coalizioni.
Arrivano da sorgenti diverse:
- CRM aziendale;
- piattaforme advertising;
- Google Analytics;
- Marketing Automation;
- strumenti di email nurturing;
- sistemi di Sales Intelligence;
- piattaforme SaaS.
Ogni interazione rappresenta un evento nel tempo:
| User ID | Data | Canale | Evento |
|---|---|---|---|
| U001 | 03/01 | SEO | Visita blog |
| U001 | 15/01 | Apertura newsletter | |
| U001 | 28/01 | Webinar | Partecipazione |
| U001 | 10/02 | Demo | Richiesta commerciale |
| U001 | 20/02 | Sales | Contratto |
Il primo passaggio è quindi ricostruire il customer journey completo.
Dal Journey alla Coalizione di Canali
Per lo Shapley Value non interessa soltanto la sequenza temporale, ma quali canali hanno partecipato alla conversione.
Il percorso:
SEO → Email → Webinar → Demo
diventa una coalizione:
[math]S = \{ \text{SEO}, \text{Email}, \text{Webinar}, \text{Demo} \}[/math]
A ogni journey viene associato un valore.
Questo valore può essere:
Numero di conversioni
Esempio:
| Journey | Conversioni |
|---|---|
| SEO + Email | 120 |
| SEO + Demo | 90 |
| Email + Demo | 80 |
| SEO + Email + Demo | 200 |
oppure:
Revenue generata
Nel SaaS B2B spesso è più corretto utilizzare il valore economico:
| Journey | ARR generato |
|---|---|
| SEO + Email | 240.000 € |
| SEO + Demo | 180.000 € |
| Email + Demo | 150.000 € |
| SEO + Email + Demo | 500.000 € |
Perché dieci conversioni enterprise da 50.000 € non equivalgono a dieci lead gratuiti.
Esempio pratico con pandas
Un dataset iniziale potrebbe avere questa struttura:
import pandas as pd
journeys = pd.DataFrame({
"user_id": [
"U001",
"U002",
"U003",
"U004"
],
"channels": [
["SEO", "Email", "Demo"],
["LinkedIn Ads", "Webinar", "Demo"],
["SEO", "Content", "Email", "Demo"],
["Google Ads", "Demo"]
],
"conversion": [
1,
1,
1,
1
],
"revenue": [
50000,
30000,
50000,
20000
]
})
print(journeys)
Output:
| user_id | channels | conversion | revenue |
|---|---|---|---|
| U001 | SEO, Email, Demo | 1 | 50.000 € |
| U002 | LinkedIn Ads, Webinar, Demo | 1 | 30.000 € |
| U003 | SEO, Content, Email, Demo | 1 | 50.000 € |
| U004 | Google Ads, Demo | 1 | 20.000 € |
Costruzione della funzione valore
Da questi dati bisogna generare tutte le coalizioni osservate.
Ad esempio:
from collections import defaultdict
coalitions = defaultdict(float)
for _, row in journeys.iterrows():
channels = row["channels"]
value = row["revenue"]
coalition = frozenset(channels)
coalitions[coalition] += value
Il risultato diventa:
{
frozenset({"SEO","Email","Demo"}): 50000,
frozenset({"LinkedIn Ads","Webinar","Demo"}):30000,
frozenset({"SEO","Content","Email","Demo"}):50000
}
Questo dizionario rappresenta l’input richiesto dal modello Shapley.
Le decisioni analitiche più importanti prima del calcolo
Prima ancora di applicare l’algoritmo bisogna definire alcune scelte metodologiche.
1. Conversione o fatturato?
Due aziende possono ottenere risultati molto diversi:
- attribuzione per numero di clienti;
- attribuzione per revenue;
- attribuzione per margine;
- attribuzione per Customer Lifetime Value.
Nel SaaS, usare solo il numero di conversioni può essere fuorviante perché un cliente enterprise e un cliente small business hanno valori completamente diversi.
2. Finestra temporale del journey
Bisogna stabilire:
Quanto tempo può passare tra il primo touchpoint e la conversione?
Esempio:
- 30 giorni per e-commerce;
- 90-180 giorni per SaaS B2B;
- 12 mesi per enterprise software.
Una finestra troppo corta elimina i touchpoint iniziali.
Una troppo lunga rischia di attribuire valore a interazioni casuali.
3. Gestione dei dati mancanti
Nei sistemi reali spesso manca una parte del percorso:
- cookie non riconosciuti;
- utenti multi-device;
- contatti offline;
- CRM non sincronizzato;
- lead duplicati.
Per questo sono fondamentali tecniche di:
- identity resolution;
- session stitching;
- deduplicazione utenti;
- integrazione CRM-Marketing Automation.
Dal dato grezzo al modello decisionale
La pipeline completa diventa quindi:
Eventi Marketing → Customer Journey → Coalizioni → v(S) → Shapley Value → Allocazione Budget
Il valore dello Shapley Value non nasce soltanto dalla formula matematica.
Nasce dalla qualità della rappresentazione del customer journey.
Un modello perfetto applicato a dati incompleti produrrà comunque decisioni sbagliate: nella marketing attribution, la vera sfida non è calcolare il contributo dei canali, ma ricostruire correttamente il percorso che ha generato quel contributo.
Il problema delle coalizioni non osservate: il limite dei dati reali
Negli esempi didattici si assume spesso di conoscere il valore ([math]v(S)[/math]) di ogni possibile coalizione di canali.
Nella pratica, però, questa ipotesi è raramente soddisfatta.
Con [math]n[/math] canali esistono infatti:
[math]2^n[/math]
possibili coalizioni.
Con soli 15 touchpoint si ottengono già:
[math]2^{15} = 32.768[/math]
combinazioni teoriche.
Nella maggior parte delle aziende, tuttavia, solo una piccola frazione di queste viene realmente osservata nei customer journey.
Questo fenomeno prende il nome di sparsità delle coalizioni ed è uno dei principali problemi nell’applicazione dello Shapley Value ai dati di marketing.
Perché le coalizioni mancanti sono un problema?
Supponiamo di osservare frequentemente questi percorsi:
- SEO → Email → Demo
- Google Ads → Demo
- Webinar → Demo
ma di non aver mai osservato utenti che abbiano seguito il percorso:
[math]\{ \text{SEO, Webinar, Demo} \}[/math]
L’assenza nei dati non implica necessariamente che quella combinazione non generi conversioni.
Potrebbe semplicemente trattarsi di una coalizione rara oppure non ancora osservata nel periodo di analisi.
Attribuire automaticamente un valore pari a zero alle coalizioni mancanti può alterare significativamente il contributo marginale dei canali e produrre attribuzioni distorte.
Come affrontare il problema in produzione
Nelle implementazioni enterprise, il valore della funzione ([math]v(S)[/math]) viene spesso stimato anziché osservato direttamente.
L’obiettivo è costruire un modello capace di prevedere il valore anche delle coalizioni mai viste, riducendo il bias dovuto alla scarsità dei dati.
Le strategie più comuni includono:
1. Smoothing statistico
Le coalizioni poco frequenti vengono regolarizzate utilizzando informazioni provenienti da combinazioni simili.
Questo riduce la variabilità dovuta a eventi osservati poche volte e limita il rischio di attribuzioni estreme.
2. Modelli predittivi della funzione valore
Anziché utilizzare esclusivamente le coalizioni osservate, è possibile stimare ([math]v(S)[/math]) mediante un modello statistico o di machine learning.
Tra gli approcci più utilizzati:
- regressione lineare con variabili indicatrici dei canali;
- modelli lineari generalizzati (GLM);
- Gradient Boosting (ad esempio XGBoost o LightGBM);
- Random Forest;
- reti neurali per customer journey complessi.
In questo caso, ogni coalizione diventa un vettore di caratteristiche e il modello apprende la relazione tra combinazione di canali e valore economico generato.
3. Regolarizzazione bayesiana
Quando il numero di osservazioni è limitato, modelli gerarchici bayesiani consentono di incorporare informazione a priori e ottenere stime più stabili per le coalizioni rare.
Questo approccio è particolarmente utile nel SaaS B2B, dove i volumi di conversione sono inferiori rispetto all’e-commerce.
Una pipeline più realistica
In un progetto di Marketing Attribution enterprise, lo Shapley Value rappresenta soltanto l’ultimo passaggio della pipeline analitica.
Il flusso tipico è il seguente:
Eventi → Customer Journey → Feature Engineering → [math]\widehat{v}(S)[/math] → Shapley Value
dove
[math]\widehat{v}(S)[/math]
non è il valore osservato della coalizione, ma una stima ottenuta attraverso un modello statistico.
In questo modo è possibile attribuire un contributo anche a combinazioni di canali mai osservate direttamente, migliorando la robustezza del modello.
Nota metodologica
L’esempio Python presentato in questo articolo utilizza esclusivamente le coalizioni osservate per semplicità didattica. In un sistema di Marketing Analytics destinato alla produzione, è generalmente preferibile stimare la funzione valore mediante tecniche di smoothing o modelli predittivi prima di calcolare lo Shapley Value.
Formulazione Matematica dello Shapley Value
Sia [math]N[/math] l’insieme di tutti i canali di marketing ([math]|N| = n[/math]) e [math]S \subseteq N \setminus \{i\}[/math] una coalizione (sottoinsieme) di canali che non include il canale [math]i[/math]. Sia [math]v(S)[/math] la funzione caratteristica che associa a ogni coalizione [math]S[/math] il valore generato (es. numero di conversioni).
Il valore di Shapley [math]\phi_i(v)[/math] per il canale [math]i[/math] è definito dalla seguente equazione:
[math]\displaystyle \phi_i(v) = \sum_{S \subseteq N \setminus \{i\}} \frac{|S|!(|N| – |S| – 1)!}{|N|!} \left[ v(S \cup \{i\}) – v(S) \right][/math]
Dove:
- [math]v(S \cup \{i\}) – v(S)[/math] rappresenta il contributo marginale del canale [math]i[/math] alla coalizione [math]S[/math].
- [math]\frac{|S|!(|N| – |S| – 1)!}{|N|!}[/math] costituisce il peso combinatorio, ovvero la probabilità statistica che la coalizione [math]S[/math] si formi quando i canali vengono introdotti in ordine casuale.
Shapley Value non è causalità: il limite metodologico da conoscere
Lo Shapley Value rappresenta uno degli strumenti più rigorosi per l’attribuzione del valore tra canali di marketing, ma è fondamentale chiarire un punto spesso frainteso: attribuzione e causalità non sono la stessa cosa.
Il modello risponde alla domanda:
“Come distribuire equamente il valore di una conversione tra tutti i canali che hanno partecipato al percorso?”
Non risponde invece direttamente alla domanda:
“Cosa sarebbe successo alle vendite se avessimo eliminato completamente un determinato canale?”
Questa distinzione è fondamentale nelle decisioni di investimento.
Immaginiamo un customer journey composto da:
SEO → Email → Demo → Vendita
Applicando lo Shapley Value, potremmo ottenere un’attribuzione come:
- SEO: 31,25%
- Email: 25%
- Demo: 43,75%
Questo significa che, considerando tutte le possibili combinazioni tra i touchpoint, la SEO ha contribuito per una quota pari al 31,25% del valore generato dalla coalizione complessiva.
Tuttavia, non significa automaticamente che eliminando la SEO perderemmo il 31,25% delle vendite.
La differenza è sottile ma decisiva.
Un cliente potrebbe comunque arrivare alla conversione attraverso altri percorsi:
- cercando direttamente il brand;
- ricevendo una raccomandazione;
- entrando tramite un altro canale organico;
- utilizzando un touchpoint alternativo.
Lo Shapley Value misura quindi il contributo distribuito del canale all’interno dell’ecosistema osservato, non l’effetto causale puro della sua rimozione.
Per stimare un effetto realmente causale servono metodologie differenti, ad esempio:
Esperimenti controllati (A/B Test)
Si confrontano gruppi simili di utenti:
- gruppo esposto al canale;
- gruppo non esposto al canale.
La differenza nelle conversioni può fornire una stima dell’incremento causato dal touchpoint.
Modelli causali
Quando gli esperimenti non sono praticabili, si possono utilizzare approcci statistici come:
- Propensity Score Matching;
- Causal Forest;
- Bayesian Structural Time Series;
- Marketing Mix Modeling (MMM);
- modelli di uplift.
Questi strumenti cercano di stimare il counterfactual, cioè lo scenario ipotetico:
“Quante conversioni avremmo ottenuto se questo canale non fosse mai esistito?”
Lo Shapley Value e i modelli causali rispondono quindi a domande diverse:
| Domanda | Modello più adatto |
|---|---|
| Come dividere equamente il merito tra canali collaborativi? | Shapley Value |
| Quale canale crea più valore marginale nel customer journey? | Shapley Value |
| Quante vendite perderemmo eliminando un canale? | Modello causale |
| Qual è il vero incremento generato da una campagna? | A/B Test o Causal Inference |
| Come allocare budget tra molti canali nel tempo? | Shapley + MMM + modelli predittivi |
La vera maturità analitica nasce quindi dall’integrazione dei due approcci.
Lo Shapley Value evita l’errore del Last Click, riconoscendo il contributo dei diversi touchpoint. I modelli causali verificano invece quanto quel contributo rappresenti un effetto realmente incrementale.
In un sistema di marketing data-driven avanzato, l’obiettivo non è scegliere tra attribuzione e causalità, ma combinarle:
- Shapley Value per capire chi ha partecipato alla creazione del valore;
- Modelli causali per capire chi ha realmente modificato il comportamento del cliente.
Calcolo Pratico (Esempio a 3 Canali)
Immaginiamo un ecosistema formato da tre canali: [math]N = \{\text{SEO}, \text{Email}, \text{Demo}\}[/math]. Analizzando i dati storici delle conversioni aggregate generate da ciascuna combinazione (coalizione) osserviamo i seguenti risultati:
| Coalizione S | Conversioni Osservate v(S) |
|---|---|
| [math]\emptyset[/math] (Nessun canale) | [math]0[/math] |
| [math]\{\text{SEO}\}[/math] | [math]20[/math] |
| [math]\{\text{Email}\}[/math] | [math]15[/math] |
| [math]\{\text{Demo}\}[/math] | [math]30[/math] |
| [math]\{\text{SEO, Email}\}[/math] | [math]60[/math] |
| [math]\{\text{SEO, Demo}\}[/math] | [math]90[/math] |
| [math]\{\text{Email, Demo}\}[/math] | [math]80[/math] |
| [math]\{\text{SEO, Email, Demo}\}[/math] | [math]120[/math] |
Con [math]n = 3[/math] canali, esistono [math]3! = 6[/math] possibili sequenze d’ingresso (permutazioni). Per calcolare lo Shapley Value di ciascun canale, valutiamo l’incremento di conversioni fornito da quel canale in ogni singola sequenza:
1. Sequenze di Permutazione e Contributi Marginali
Permutazione (SEO, Email, Demo):
- Contributo SEO (entra per primo): [math]v(\{\text{SEO}\}) – v(\emptyset) = 20 – 0 = \mathbf{20}[/math]
- Contributo Email (entra su SEO): [math]v(\{\text{SEO, Email}\}) – v(\{\text{SEO}\}) = 60 – 20 = \mathbf{40}[/math]
- Contributo Demo (entra su SEO+Email): [math]v(\{\text{SEO, Email, Demo}\}) – v(\{\text{SEO, Email}\}) = 120 – 60 = \mathbf{60}[/math]
Permutazione (SEO, Demo, Email):
- Contributo SEO: [math]v(\{\text{SEO}\}) – v(\emptyset) = 20 – 0 = \mathbf{20}[/math]
- Contributo Demo: [math]v(\{\text{SEO, Demo}\}) – v(\{\text{SEO}\}) = 90 – 20 = \mathbf{70}[/math]
- Contributo Email: [math]v(\{\text{SEO, Email, Demo}\}) – v(\{\text{SEO, Demo}\}) = 120 – 90 = \mathbf{30}[/math]
Permutazione (Email, SEO, Demo):
- Contributo Email: [math]v(\{\text{Email}\}) – v(\emptyset) = 15 – 0 = \mathbf{15}[/math]
- Contributo SEO: [math]v(\{\text{SEO, Email}\}) – v(\{\text{Email}\}) = 60 – 15 = \mathbf{45}[/math]
- Contributo Demo: [math]v(\{\text{SEO, Email, Demo}\}) – v(\{\text{SEO, Email}\}) = 120 – 60 = \mathbf{60}[/math]
Permutazione (Email, Demo, SEO):
- Contributo Email: [math]v(\{\text{Email}\}) – v(\emptyset) = 15 – 0 = \mathbf{15}[/math]
- Contributo Demo: [math]v(\{\text{Email, Demo}\}) – v(\{\text{Email}\}) = 80 – 15 = \mathbf{65}[/math]
- Contributo SEO: [math]v(\{\text{SEO, Email, Demo}\}) – v(\{\text{Email, Demo}\}) = 120 – 80 = \mathbf{40}[/math]
Permutazione (Demo, SEO, Email):
- Contributo Demo: [math]v(\{\text{Demo}\}) – v(\emptyset) = 30 – 0 = \mathbf{30}[/math]
- Contributo SEO: [math]v(\{\text{SEO, Demo}\}) – v(\{\text{Demo}\}) = 90 – 30 = \mathbf{60}[/math]
- Contributo Email: [math]v(\{\text{SEO, Email, Demo}\}) – v(\{\text{SEO, Demo}\}) = 120 – 90 = \mathbf{30}[/math]
Permutazione (Demo, Email, SEO):
- Contributo Demo: [math]v(\{\text{Demo}\}) – v(\emptyset) = 30 – 0 = \mathbf{30}[/math]
- Contributo Email: [math]v(\{\text{Email, Demo}\}) – v(\{\text{Demo}\}) = 80 – 30 = \mathbf{50}[/math]
- Contributo SEO: [math]v(\{\text{SEO, Email, Demo}\}) – v(\{\text{Email, Demo}\}) = 120 – 80 = \mathbf{40}[/math]
2. Calcolo della Media sui Permutazioni
Sommando i contributi marginali ottenuti da ogni canale e dividendo per il numero totale di permutazioni ([math]6[/math]):
[math]\phi_{\text{SEO}} = \frac{20 + 20 + 45 + 40 + 60 + 40}{6} = \frac{225}{6} = \mathbf{37.5} \text{ conversioni } (\mathbf{31.25\%})[/math]
[math]\phi_{\text{Email}} = \frac{40 + 30 + 15 + 15 + 30 + 50}{6} = \frac{180}{6} = \mathbf{30.0} \text{ conversioni } (\mathbf{25.00\%})[/math]
[math]\phi_{\text{Demo}} = \frac{60 + 70 + 60 + 65 + 30 + 30}{6} = \frac{315}{6} = \mathbf{52.5} \text{ conversioni } (\mathbf{43.75\%})[/math]
Verifica dell’Assioma di Efficienza:
[math]\phi_{\text{SEO}} + \phi_{\text{Email}} + \phi_{\text{Demo}} = 37.5 + 30.0 + 52.5 = 120.0 = v(\{\text{SEO, Email, Demo}\})[/math]
Il modello riconosce alla Demo il peso maggiore ([math]43.75\%[/math]) per il suo ruolo decisivo di chiusura, ma attribuisce alla SEO ([math]31.25\%[/math]) e all’Email ([math]25.00\%[/math]) il giusto merito per aver alimentato l’interesse lungo il journey.
Complessità Computazionale e Algoritmo Monte Carlo
Il calcolo esatto dello Shapley Value richiede la valutazione di [math]n![/math] permutazioni. L’aumento del numero di canali comporta una crescita fattoriale del costo computazionale:
[math]n = 5 \implies 120[/math] permutazioni
[math]n = 10 \implies 3.628.800[/math] permutazioni
[math]n = 20 \implies 20! \approx 2.43 \times 10^{18}[/math] permutazioni
In contesti reali con decine di touchpoint, il calcolo esatto è impraticabile. Si ricorre quindi a un’approssimazione tramite Campionamento Monte Carlo: si estrae un campione casuale di [math]M[/math] permutazioni (es. [math]M = 5.000[/math]). Per la legge dei grandi numeri, la media dei contributi campionati converge rapidamente al valore teorico reale.
Implementazione Python: Shapley Value con Simulazione Monte Carlo
Nota
Per semplicità il codice assegna valore zero alle coalizioni non presenti nel dizionario. Nei sistemi reali tali valori vengono generalmente stimati mediante modelli statistici o tecniche di smoothing prima del calcolo dello Shapley Value.
import itertools
import random
from typing import Dict, FrozenSet, List, Tuple
class ShapleyAttribution:
def __init__(self, coalition_values: Dict[FrozenSet[str], float]):
"""coalition_values: dizionario dove le chiavi sono frozenset di canali
e i valori rappresentano le conversioni generati.
"""
self.coalition_values = coalition_values
if frozenset() not in self.coalition_values:
self.coalition_values[frozenset()] = 0.0
self.channels = sorted(
list(
set().union(*[s for s in coalition_values.keys() if len(s) > 0])
)
)
self.n = len(self.channels)
def compute_exact(self) -> Dict[str, float]:
"""Calcola lo Shapley Value esatto esaminando tutte le n!
permutazioni.
"""
shapley_values = {channel: 0.0 for channel in self.channels}
permutations = list(itertools.permutations(self.channels))
total_permutations = len(permutations)
for perm in permutations:
current_coalition = set()
for channel in perm:
v_before = self.coalition_values.get(
frozenset(current_coalition), 0.0
)
current_coalition.add(channel)
v_after = self.coalition_values.get(
frozenset(current_coalition), 0.0
)
shapley_values[channel] += v_after - v_before
return {k: v / total_permutations for k, v in shapley_values.items()}
def compute_monte_carlo(self, n_samples: int = 5000) -> Dict[str, float]:
"""Stima lo Shapley Value tramite campionamento Monte Carlo."""
shapley_values = {channel: 0.0 for channel in self.channels}
for _ in range(n_samples):
perm = list(self.channels)
random.shuffle(perm)
current_coalition = set()
for channel in perm:
v_before = self.coalition_values.get(
frozenset(current_coalition), 0.0
)
current_coalition.add(channel)
v_after = self.coalition_values.get(
frozenset(current_coalition), 0.0
)
shapley_values[channel] += v_after - v_before
return {k: v / n_samples for k, v in shapley_values.items()}
# Esecuzione del modello
if __name__ == "__main__":
data = {
frozenset(): 0,
frozenset(["SEO"]): 20,
frozenset(["Email"]): 15,
frozenset(["Demo"]): 30,
frozenset(["SEO", "Email"]): 60,
frozenset(["SEO", "Demo"]): 90,
frozenset(["Email", "Demo"]): 80,
frozenset(["SEO", "Email", "Demo"]): 120,
}
model = ShapleyAttribution(data)
print("--- Shapley Value Esatto ---")
exact_results = model.compute_exact()
for ch, val in exact_results.items():
print(f"{ch}: {val:.2f} conversioni")
print("\n--- Stima Monte Carlo (5000 campioni) ---")
mc_results = model.compute_monte_carlo(n_samples=5000)
for ch, val in mc_results.items():
print(f"{ch}: {val:.2f} conversioni")
Analisi dell’Output
Eseguendo lo script si ottengono i seguenti risultati:
--- Shapley Value Esatto ---
Demo: 52.50 conversioni
Email: 30.00 conversioni
SEO: 37.50 conversioni
--- Stima Monte Carlo (5000 campioni) ---
Demo: 52.83 conversioni
Email: 29.70 conversioni
SEO: 37.47 conversioni
L’output conferma due principi chiave:
- Accuratezza Statistica: Con 5.000 iterazioni Monte Carlo, l’errore rispetto al calcolo teorico esatto è inferiore allo [math]0.6\%[/math] per ogni canale (es. la Demo registra uno scarto marginale di [math]+0.33[/math] conversioni).
- Efficienza del Calcolo: L’algoritmo riduce la complessità computazionale da fattoriale [math]\mathcal{O}(n!)[/math] a lineare [math]\mathcal{O}(M \cdot n)[/math], consentendo di analizzare decine di touchpoint in pochi secondi con un margine di errore del tutto trascurabile.
Nota sulla Complessità Computazionale
Il calcolo esatto dello Shapley Value può essere effettuato enumerando tutte le [math]n![/math] permutazioni dei canali oppure valutando tutte le coalizioni possibili tramite la formula assiomatica, con una crescita esponenziale [math]O(n 2^n)[/math].
| Approccio | Formulazione Matematica | Complessità | Scalabilità |
|---|---|---|---|
| Permutazionale | [math]\sum_{\pi \in \Pi} \left[ v(S_\pi^i \cup \{i\}) – v(S_\pi^i) \right][/math] | [math]O(n!)[/math] | Impraticabile già con [math]n \ge 10[/math] |
| Coalizionale (Standard) | [math]\sum_{S \subseteq N \setminus \{i\}} \frac{|S|! (n – |S| – 1)!}{n!} [v(S \cup \{i\}) – v(S)][/math] | [math]O(n 2^n)[/math] | Impraticabile con [math]n \ge 15[/math] |
| Campionamento Monte Carlo | Approssimazione stocastica su [math]M[/math] permutazioni casuali | [math]O(M \cdot n)[/math] | Scalabile per [math]n > 20[/math] canali |
Quando il numero di touchpoint aziendali supera [math]n \ge 10[/math], la valutazione di [math]2^n[/math] combinazioni nel Data Warehouse diventa computazionalmente insostenibile. In produzione si abbandona il calcolo combinatorio esatto in favore del campionamento Monte Carlo, che stimando i contributi marginali su un sottoinsieme casuale di [math]M[/math] permutazioni abbassa la complessità a livello lineare [math]O(M \cdot n)[/math].
Shapley Value vs. Catene di Markov
Oltre allo Shapley Value, l’altro grande modello algoritmico avanzato è rappresentato dalle Catene di Markov. Sebbene entrambi superino le euristiche tradizionali, rispondono a quesiti analitici differenti:
| Dimensione di Confronto | Shapley Value | Catene di Markov |
|---|---|---|
| Fondamento Matematico | Teoria dei Giochi Cooperativi | Processi Stocastici / Grafi Probabilistici |
| Quesito Principale | Quanto valore crea mediamente un canale quando coopera con gli altri? | Come varia la probabilità totale di conversione se rimuovo un canale? |
| Metrica Chiave | Contributo Marginale Medio ([math]\phi_i[/math]) | Effetto Rimozione (Removal Effect) |
| Ordine del Journey | Tratta i percorsi come coalizioni (insiemi di canali) | Tratta i percorsi come sequenze temporali ordinate |
| Punto di Forza | Soluzione equa, assiomatica, priva di arbitrio | Individua i punti di interruzione e i colli di bottiglia del funnel |
| Svantaggio Principale | Complessità combinatoria ([math]n![/math]) | Sensibile alla qualità della matrice di transizione e ai dati mancanti |
Complementarità dei Modelli
In un’architettura dati avanzata, i due modelli non competono ma si integrano:
- Il Modello di Shapley guida l’allocazione finanziaria del budget tra i vari team e partner di canale.
- Il Modello di Markov aiuta i Growth Manager a diagnosticare dove gli utenti abbandonano il percorso e quali transizioni di fase richiedono ottimizzazione.
Applicazioni Estese: Explainable AI (SHAP) e Finanza
L’eleganza dello Shapley Value ha travalicato i confini del marketing, diventando una pietra angolare della scienza dei dati contemporanea:
Explainable AI (SHAP): Algoritmi complessi come XGBoost o le reti neurali profonde vengono spesso criticati per la loro natura opaca. La libreria SHAP (SHapley Additive exPlanations) sfrutta lo Shapley Value per calcolare l’impatto di ogni singola feature sulle predizioni dell’algoritmo (ad esempio, quantificando quanto il reddito o l’età abbiano inciso sul punteggio di credito assegnato a un cliente).
Gestione del Rischio Finanziario: In finanza, lo Shapley Value viene impiegato per scomporre il Value at Risk (VaR) di un portafoglio di investimenti, attribuendo a ciascun asset la propria quota di responsabilità sulla varianza complessiva del rischio.
Caso SaaS B2B Enterprise: perché il Last Click può distruggere la pipeline
Nel mercato SaaS B2B, il problema dell’attribuzione è ancora più evidente perché il percorso di acquisto raramente è lineare.
Un cliente enterprise non acquista un software da 50.000 € di valore annuale dopo aver visto un singolo annuncio. Prima della firma del contratto possono trascorrere settimane o mesi durante i quali diversi touchpoint contribuiscono alla costruzione della fiducia.
Immaginiamo questo customer journey:
LinkedIn Ads → Webinar → Whitepaper → Email Nurturing → Sales Demo → Contratto Annuale 50.000€
Visione Last Click
Applicando un modello Last Click, l’intero valore della conversione viene assegnato all’ultimo punto di contatto:
| Canale | Attribuzione Last Click |
|---|---|
| LinkedIn Ads | 0% |
| Webinar | 0% |
| Whitepaper | 0% |
| Email Nurturing | 0% |
| Sales Demo | 100% |
La conclusione apparente sarebbe:
“La Sales Demo genera tutte le vendite. Aumentiamo il budget commerciale e riduciamo gli investimenti in awareness.”
Questa decisione però ignora un elemento fondamentale: la demo spesso non crea la domanda, ma raccoglie un interesse già costruito nei mesi precedenti.
Visione Shapley Value
Applicando invece un modello basato sul contributo marginale dei diversi touchpoint, la distribuzione potrebbe diventare:
| Canale | Quota Shapley |
|---|---|
| LinkedIn Ads | 15% |
| Webinar | 20% |
| Whitepaper | 18% |
| Email Nurturing | 22% |
| Sales Demo | 25% |
La Sales Demo rimane il touchpoint più vicino alla conversione, ma il modello riconosce che il risultato finale è stato costruito attraverso una collaborazione tra marketing e sales.
Implicazione strategica
La differenza tra i due modelli porta a decisioni di investimento completamente diverse.
Con il Last Click:
- aumenta il budget sulle demo;
- riduce i contenuti educativi;
- taglia le attività di awareness;
- nel medio periodo diminuisce il numero di prospect qualificati.
Con lo Shapley Value:
- la Sales Demo viene ottimizzata come fase di chiusura;
- Webinar e Whitepaper vengono riconosciuti come generatori di domanda;
- Email Nurturing viene considerato un acceleratore della conversione;
- gli investimenti vengono distribuiti lungo tutto il funnel.
La conseguenza economica è una migliore gestione del CAC (Customer Acquisition Cost).
Un canale apparentemente poco redditizio nel breve periodo potrebbe avere un ruolo fondamentale nel ridurre il CAC complessivo perché aumenta la probabilità che un prospect attraversi correttamente il funnel.
Collegamento con LTV/CAC e Rule of 40
Nel SaaS, una corretta attribuzione non riguarda solo il marketing reporting: influenza direttamente le metriche utilizzate da investitori e management.
Un CAC sovrastimato o sottostimato altera:
- il rapporto LTV/CAC, cioè il valore generato da un cliente rispetto al costo di acquisizione;
- il Payback Period, ovvero il tempo necessario per recuperare il costo commerciale;
- la valutazione della crescita efficiente secondo la Rule of 40.
Per questo motivo l’attribuzione multi-touch non è soltanto un problema analitico.
È un problema finanziario.
Un modello come lo Shapley Value permette di evitare una delle distorsioni più frequenti nel SaaS B2B: tagliare gli investimenti che generano domanda futura perché non compaiono come ultimo clic prima della firma.
Conclusione
Continuare a distribuire il budget di marketing sulla base del Last Click equivale a guidare a fari spenti. Lo Shapley Value restituisce al decision-making strategico la solidità della prova matematica: quantifica il valore generato dalla collaborazione tra i canali, elimina i canali parassita e protegge gli investimenti di prima acquisizione.
Investire in un modello di attribuzione basato sulla teoria dei giochi non è un semplice esercizio tecnico, ma una decisione finanziaria ad alto rendimento capace di ottimizzare l’efficienza di ogni euro speso sul mercato.
Lo Shapley Value non sostituisce l’intuizione del marketing, ma elimina una delle sue principali fonti di errore: attribuire il merito seguendo scorciatoie arbitrarie. In organizzazioni che gestiscono decine di touchpoint e milioni di interazioni, rappresenta uno degli strumenti più solidi per trasformare i dati di customer journey in decisioni di investimento realmente data-driven.
📚 Marketing Analytics, Customer Journey e Crescita SaaS Data-Driven
Nel business digitale moderno, acquisizione, retention e crescita non possono essere analizzate con metriche isolate.
Modelli probabilistici, attribuzione multi-touch, catene di Markov e analisi del ciclo di vita del cliente permettono di trasformare i dati in decisioni strategiche su CAC, churn e valore futuro del cliente.
Ecco le guide per approfondire questi approcci:
👉Attribuzione Multi-Touch nel SaaS B2B: Catene di Markov, Shapley Value e calcolo del CAC
👉Attribuzione Multi-Touch nel SaaS B2B: guida completa a Markov, Shapley e calcolo del CAC – Parte 2
👉Rule of 40 nel SaaS: la formula che gli investitori usano per valutare un business
👉Catene di Markov in Python: modellare funnel, retention e churn oltre le classiche dashboard
👉Analisi avanzata Churn Rate e CLV: modello Python ed Excel per ottimizzare la retention clienti





