Contesto storico. Nel classico e-commerce, l'assenza di un prodotto nell'ordine (out-of-stock) veniva tradizionalmente risolta mediante cancellazione della posizione o telefonata manuale del gestore, riducendo drasticamente la conversione e la soddisfazione. Con lo sviluppo dei sistemi di raccomandazione ML, è diventato possibile offrire sostituzioni in tempo reale basate sulla vicinanza semantica, parità di prezzo e storia delle sostituzioni. Tuttavia, un semplice confronto tra ordini con sostituzioni e senza fornisce una stima distorta, poiché la presenza stessa di una sostituzione è correlata alla carenza iniziale del prodotto, e gli utenti che accettano sostituzioni automatiche differiscono sistematicamente da quelli che le rifiutano.
Definizione del problema. La chiave difficoltà risiede nell'endogeneità dell'auto-selezione: gli utenti leali tendono a consentire sostituzioni automatiche, mentre la carenza casuale colpisce il campione in modo non uniforme tra le categorie (deperibile vs tecnologia). Inoltre, l'implementazione avviene a livello di magazzini, il che esclude il classico A/B testing a livello utente a causa della contaminazione tramite inventario condiviso. È necessario isolare il puro effetto della sostituzione ML dalle negatività di base dell'assenza del prodotto e considerare l'eterogeneità per categorie.
Soluzione dettagliata. L'approccio ottimale è una combinazione di Difference-in-Differences (DiD) a livello di magazzini e Causal Forest per valutare l'eterogeneità dell'effetto. Per i magazzini con implementazione di sostituzioni ML (trattamento), viene selezionato un gruppo di controllo utilizzando il Synthetic Control Method, facendo uso di magazzini senza sostituzioni automatiche con una struttura di domanda e stagionalità simile. Per gli utenti all'interno dei magazzini di trattamento, viene applicato il Propensity Score Matching per abbinare i consumatori che accettano e rifiutano le sostituzioni in base a caratteristiche storiche (frequenza degli ordini, valore medio del carrello, preferenze per categoria). L'effetto è stimato come Conditional Average Treatment Effect (CATE) con suddivisione per categorie di sostituibilità (alta/media/bassa), consentendo di separare l'effetto tecnologico dall'effetto selettivo.
L'azienda "ProdottoPiu" ha implementato un sistema di sostituzioni intelligenti per le posizioni mancanti negli ordini online. Il problema era che il 15% degli ordini conteneva posizioni out-of-stock, il che portava a una perdita di utenti. Gli analisti dovevano misurare se le sostituzioni ML riducessero davvero l'effetto negativo della carenza o nascondessero semplicemente problemi di approvvigionamento.
Primo opzione — classico A/B testing sugli utenti con suddivisione tra il gruppo "sostituzione automatica attivata" e "disattivata". Pro: semplice interpretazione e comparabilità diretta delle metriche di conversione. Contro: impraticabile, poiché un magazzino serve entrambi i gruppi, e se un prodotto finisce, non può essere "restituito" al gruppo di controllo, creando un collasso logistico e contaminazione.
Seconda opzione — confronto "prima e dopo" negli stessi magazzini senza gruppo di controllo. Pro: semplicità di calcolo e assenza della necessità di sincronizzazione con altri magazzini. Contro: stagionalità della domanda e cambiamento della matrice di assortimento distorcono il risultato, rendendo impossibile separare l'effetto della funzione dalla crescita generale della base.
Terza opzione — disegno quasi sperimentale Difference-in-Differences utilizzando i micro-magazzini urbani come unità di randomizzazione, dove i magazzini di trattamento ricevevano il modello ML, mentre i controlli rimanevano sotto approvazione manuale. Pro: elimina tendenze sistematiche e stagionalità, consente di utilizzare conclusioni statisticamente significative. Contro: richiede una rigorosa assunzione di tendenze parallele e un numero sufficiente di magazzini omogenei per costruire un controllo sintetico.
Soluzione scelta: il team ha scelto la terza opzione con ulteriori applicazioni di Causal Forest per segmentare gli utenti in base alla propensione ad accettare sostituzioni. Questo ha permesso di isolare l'effetto per "conservatori" e "primi seguaci" separatamente, rettificando la storia pregressa degli ordini tramite Propensity Score Matching.
Risultato finale: è stato possibile determinare che le sostituzioni ML aumentano il retention del 12% solo per le categorie con alta sostituibilità (latticini, prodotti secchi), ma riducono la soddisfazione dell'8% per prodotti di nicchia (birra artigianale, biologico), dove le sostituzioni sono percepite come intrusive. L'azienda ha limitato le sostituzioni automatiche a categorie con alta correlazione delle preferenze, portando a un aumento del NPS di 0,4 punti e una riduzione dei costi operativi per la risortazione manuale del 23%.
Come distinguere l'effetto della tecnologia di sostituzione dall'effetto della qualità di un determinato modello ML e evitare il bias di sopravvivenza (survivorship bias)?
Risposta. I candidati spesso confondono l'effetto tecnologico (la possibilità di sostituzione in quanto tale) con quello qualitativo (accuratezza dell'abbinamento del sostituto). Per separare è necessario costruire una funzione dose-risposta (dose-response function), dove la "dose" è la probabilità di rilevanza della sostituzione secondo la metrica del modello (NDCG@1). Utilizzando Fuzzy Regression Discontinuity attorno alla soglia di acceptance rate del modello (ad esempio, sostituzioni con confidence > 0.8 vs 0.6), è possibile isolare l'effetto netto della qualità dall'effetto della presenza della funzione. È importante considerare anche il survivorship bias: gli utenti che ricevono sostituzioni scadenti nel primo ordine possono disattivare la funzione per sempre, distorcendo il campione a favore dei casi di successo. Per la correzione viene utilizzato il modello di selezione di Heckman, che modella equazion di selezione (probabilità di restare nel campione dopo la prima esperienza) e equazione del risultato (soddisfazione) congiuntamente.
Come considerare la contaminazione incrociata (spillover) tra categorie, quando una sostituzione non riuscita in una categoria influisce sulla percezione dell'intero ordine e sulla cancellazione di altre posizioni?
Risposta. L'approccio standard valuta l'effetto della categoria in modo isolato, ignorando i negative spillover sul carrello. Per considerare gli effetti inter-categoriali, è necessario modellare l'ordine come un sistema di beni interdipendenti, utilizzando Graph Causal Models o Structural Equation Modeling (SEM). Nello specifico: viene costruito un grafo di dipendenze tra categorie (ad esempio, la sostituzione di uno yogurt influisce sulla percezione dei cereali), e l'effetto è valutato tramite il Total Treatment Effect con controllo delle covariate per le posizioni adiacenti. In alternativa, viene applicata l'Analisi di Mediazione, in cui il mediatore è il "flag di delusione" (rimozione di altri articoli dal carrello dopo la visualizzazione della sostituzione). Questo consente di decomporre l'effetto generale in diretto (dentro la categoria) e indiretto (attraverso la modifica del carrello), evitando una sovrastima del beneficio delle sostituzioni.
Come interpretare correttamente i risultati se il modello ML dimostra un apprendimento dinamico (learning effects) e la qualità delle sostituzioni migliora nel tempo, creando una tendenza temporale nel gruppo di trattamento?
Risposta. Gli analisti principianti ignorano la non-stazionarietà dell'effetto, assumendo un ATE costante su tutto l'orizzonte di osservazione. Con apprendimento dinamico del modello, l'effetto "oggi" differisce sistematicamente dall'effetto "il mese scorso", violando l'assunzione di Stable Unit Treatment Value Assumption (SUTVA) sulla stabilità temporale. La soluzione è applicare Time-Varying Coefficient Models o Bayesian Structural Time Series (BSTS) modellando la tendenza dell'effetto come variabile latente. Nell'ambito del DiD è necessario includere l'interazione tempo-trattamento (design di studio evento), verificando l'ipotesi delle tendenze parallele per ogni intervallo temporale. Se l'effetto cresce, è importante distinguere tra learning curve del modello stesso (miglioramento dell'algoritmo) e user adaptation (adattamento degli utenti alla funzione), utilizzando differenti coorti di utenti e coorti delle versioni del modello per la decomposizione.