Storia della domanda
I grandi prodotti implementano continuamente nuovi punti di accesso ai contenuti: blocchi personalizzati, raccomandazioni AI o schemi di navigazione alternativi. Senza un'analisi della cannibalizzazione, il team potrebbe erroneamente attribuire il successo di una nuova funzionalità, mentre in realtà c'è stato solo un spostamento degli utenti tra gli schermi senza un incremento complessivo delle entrate.
Problema
È necessario separare l'effetto incrementale (nuove transazioni che non si sarebbero verificate senza il nuovo blocco) dalla cannibalizzazione (transazioni che si sono spostate dalle vecchie categorie al nuovo blocco). Un classico test A/B a livello utente non risolve questo problema, poiché l'utente vede entrambi i canali contemporaneamente e la scelta tra essi crea endogeneità.
Soluzione
Utilizziamo un Geo-experiment con controllo sintetico o randomizzazione clusterizzata per sessioni. Assegniamo casualmente regioni geografiche al test e al controllo, misurando la variazione del GMV non solo a livello di piattaforma nel suo complesso, ma anche disaggregando per categorie di navigazione. Applichiamo il metodo Difference-in-Differences con le categorie come dati in pannello, per sottrarre le entrate cannibalizzate dall'incremento totale.
Descrizione del problema
In un'app mobile di e-commerce è stato lanciato un nuovo blocco "Consigliato per te" basato su modelli di ranking TensorFlow. Dopo un mese, la metrica dei clic nella categoria è diminuita del 25%, mentre il GMV complessivo è aumentato solo del 5%. Il team prodotto discuteva: si tratta di cannibalizzazione o reale ottimizzazione del percorso utente? Era necessario determinare quanto dei 5% fosse vero incremento e quanto fosse spostamento della domanda esistente.
Soluzioni considerate
Prima soluzione: semplice confronto "prima/dopo" sul GMV complessivo. Questo approccio presuppone che senza il nuovo blocco le metriche sarebbero rimaste invariate. Pro: massima velocità, non richiede infrastruttura per esperimenti. Contro: ignora la stagionalità, campagne di marketing e tendenza organica alla crescita, il che porta a una stima distorta del 15-20%.
Seconda soluzione: test A/B classico a livello di user_id con split 50/50 tramite servizio di Splitting. Qui si ipotizza che se si nasconde il blocco per il gruppo di controllo, la differenza nel GMV mostrerà l'effetto reale. Pro: semplicità di attuazione, statistica nota. Contro: gli utenti nel test possono comunque trovare prodotti tramite ricerca o categorie, creando una cannibalizzazione diretta all'interno del gruppo di test, e il gruppo di controllo senza blocco genera meno dati per confrontare le categorie.
Terza soluzione: geo-esperimento con controllo sintetico (SCM). Abbiamo scelto 20 città con dinamiche di GMV simili, randomizzando 10 nel test (blocco attivo), 10 nel controllo (blocco non mostrato). Per il controllo, abbiamo costruito una somma ponderata delle città, il più simile possibile alle città di test nel periodo "prima". Pro: consente di misurare l'effetto a livello di mercati aggregati, tenendo naturalmente conto della cannibalizzazione tra categorie all'interno della città. Contro: richiede un campione grande (città), sensibile alle promozioni regionali, complessità nel calcolo dell'errore di secondo ordine.
Soluzione scelta e giustificazione
Ci siamo fermati sulla terza opzione — geo-esperimento con Synthetic Control Method. Un fattore chiave è stata l'impossibilità di misurare la cannibalizzazione all'interno di un singolo utente attraverso un normale test A/B, poiché anche nel gruppo di controllo senza blocco non vediamo il destino "controfattuale" delle transazioni che nel gruppo di test si sarebbero spostate nel blocco. Il livello geografico ha consentito di osservare come cambiano le strutture di acquisto tra le categorie nel loro insieme.
Risultato
Abbiamo scoperto che dei 5% di incremento complessivo del GMV, il 3.2% era dovuto alla cannibalizzazione (spostamento dalle lunghe code delle categorie ai top-3 prodotti del blocco), e solo l'1.8% era un effetto realmente incrementale. Sulla base di questi dati, abbiamo corretto l'algoritmo di ranking, aggiungendo una penalizzazione per prodotti popolari, portando l'incremento netto al 4.1%.
Domanda 1: Perché non si può semplicemente guardare la correlazione tra clic nel nuovo blocco e calo dei clic nella categoria a livello di sessione utente?
La risposta sta nell'endogeneità dell'auto-selezione. Gli utenti che cliccano nel nuovo blocco hanno una struttura di intenzioni diversa (alta intenzione di acquisto vs. navigazione) rispetto a quelli che vanno nelle categorie. Una correlazione diretta porterà all'effetto di Simpson: nei dati aggregati potrebbe sembrare che il blocco "abbia rubato" traffico, ma a livello di coorti ad alta intenzione vedremo che avrebbero comunque comprato, solo più velocemente. È necessario utilizzare Causal Forest o Propensity Score Matching per confrontare gli utenti con la stessa storia di comportamento "prima" dell'esposizione al blocco.
Domanda 2: Come calcolare l'effetto minimo significativo (MDE) per un esperimento di cannibalizzazione, se l'effetto potrebbe essere negativo per alcune categorie e positivo per altre?
Qui i candidati commettono un errore, applicando la formula standard per l'effetto medio. In caso di cannibalizzazione, la varianza tra le categorie aumenta, poiché ci troviamo di fronte a uno squilibrio: alcune categorie perdono, altre guadagnano. È necessario utilizzare Linear Mixed Models con effetto casuale sulle categorie e calcolare la potenza per una metrica combinata: GMV totale meno la diminuzione ponderata del GMV nelle categorie cannibalizzate con un coefficiente di compensazione del rischio.
Domanda 3: Qual è la differenza fondamentale tra la misurazione sperimentale della cannibalizzazione in un prodotto e la risoluzione del problema dell'interferenza nei social network?
Nell'analisi dei prodotti, la cannibalizzazione è una forma di "spostamento della domanda" all'interno di un singolo soggetto (utente), che raramente è modellato come interferenza tra unità. Nei social network (ad esempio, Facebook) l'interferenza è lo spillover tra gli utenti attraverso il grafo sociale. Per combattere la cannibalizzazione, utilizziamo la clusterizzazione per tempo o tipo di comportamento, non la randomizzazione grafica. È importante comprendere che qui l'assegnazione del trattamento è l'esposizione al nuovo UI, e non la comunicazione tra gli utenti, quindi metodi come la randomizzazione ego-cluster non sono applicabili; utilizziamo invece esperimenti Switchback a livello di segmenti utente.