Aleksei Terentev racconta su Towards Data Science come ha costruito un sistema di retention per un prodotto di debit card. La parte interessante non è la scelta degli algoritmi — gradient boosting e regressione logistica, niente di esotico — ma la sequenza dei due modelli e il motivo per cui il primo, da solo, non funzionava.
La definizione di churn è operativa: nessun pagamento con carta per 30 giorni. Il target è binario — l’utente farà almeno un pagamento nei prossimi 30 giorni? — e le feature coprono profilo utente, aggregati di attività su finestre a 7, 30 e 90 giorni, intervalli temporali tra transazioni, feature di calendario e rapporti derivati. L’autore segnala che il tempo trascorso dall’ultimo pagamento è spesso tra i predittori più forti.
Il problema della calibration
In validazione emerge un pattern che vale la pena memorizzare: la qualità di ranking (ROC-AUC) reggeva bene sui dati recenti, mentre la calibration si degradava, con le probabilità previste che si spostavano rispetto al tasso reale degli eventi. La soluzione adottata è leggera: un secondo modello di calibration — una regressione logistica che prende come unica feature la previsione del modello principale — riaggiornabile spesso senza rifare l’intero sistema.
Perché il pre-churn non basta
Identificato il segmento a rischio, il team ha lanciato un esperimento randomizzato con cashback maggiorato. Su due gruppi da 400.000 utenti il payment rate a 30 giorni passa dal 16,2% al 19,8%, cioè +3,6 punti percentuali, con 14.400 utenti trattenuti in modo incrementale: 36 ogni 1.000 offerte. Il problema è il costo, 1,23 volte il CAC. Trattenere costava più che acquisire, per via della quota di utenti organici nel segmento — persone che avrebbero pagato comunque — e di utenti del tutto insensibili all’offerta.
Da qui il secondo modello. L’uplift stima quanto l’offerta cambia la probabilità dell’azione target per uno specifico utente, e richiede dati sperimentali: senza gruppo di controllo non è stimabile. L’autore descrive T-learner (due modelli separati per trattati e controllo, con differenza tra le previsioni) e S-learner (un modello unico con il trattamento come feature aggiuntiva), notando che in pratica i risultati erano simili.
La validazione via A/B chiude il cerchio: a parità di 160.000 offerte, il targeting basato su uplift ha prodotto 9.280 utenti incrementali contro 5.600 (+66%), e il costo per utente trattenuto è sceso da 1,21 a 0,87 volte il CAC, il 28% in meno. Nota di design non banale: il sistema in produzione mantiene sia un gruppo escluso da qualsiasi meccanica sia una quota di offerte assegnate a caso, per generare in continuo i dati necessari a ricalibrare entrambi i modelli.
In sintesi
- Il modello di pre-churn dice chi è a rischio, non chi reagirà: da solo può produrre un costo di retention superiore al CAC.
- L’uplift model richiede dati da esperimento randomizzato; T-learner e S-learner hanno dato risultati simili in questo caso.
- La calibration si degrada prima del ranking: un modello di calibration separato costa meno di un retraining completo.
Hai qualcosa da aggiungere? Unisciti alla discussione.