Classificata in sesta posizione su 909 squadre nella competizione M5 forecasting
Un team di dipendenti di Lokad, ovvero Rafael de Rezende (leader), Ignacio Marín Eiroa, Katharina Egert e Guilherme Thompson 1, si è classificato in sesta posizione nella M5 Forecasting competition su 909 squadre concorrenti. È un risultato notevole, e sono orgoglioso di quanto questo team abbia raggiunto. Costruire una cultura orientata ai risultati quantitativi è stato un obiettivo a lungo termine per Lokad, e il risultato di questa competizione dimostra quanto abbiamo progredito in questo percorso.

Per quanto ne so, questa è la prima volta che una competizione pubblica sulla domanda forecasting competition ha coinvolto quantile forecasts, un’intuizione che si collega direttamente al lavoro di Lokad back in 2012. Sebbene all’accademia ci siano voluti 8 anni per recuperare il concetto di quantili, ciò non diminuisce l’importanza di questo risultato. Le previsioni “classiche” sono per natura inadeguate per la supply chain. Le previsioni a quantili non sono not the endgame, ma funzionano comunque dove le safety stocks non riescono a farlo. Questo rappresenta per me un importante passo nella giusta direzione.
Per quanto riguarda i risultati, i contendenti dal primo al sesto posto sono incredibilmente vicini. Il team classificatosi primo 2 è riuscito a guadagnare qualche punto percentuale. Tuttavia, la mia esperienza indica che, anche per una rete retail super grande come Walmart, una riduzione del 5% della perdita pinball - una metrica che può essere usata per valutare l’accuracy delle previsioni a quantili - sarebbe quasi impercettibile in termini di dollari di errore. Infatti, a questo livello di accuratezza, i modelli di forecasting sono essenzialmente equivalenti, e altri aspetti (che non sono stati coperti dalla competizione M5) dominano - come la capacità di gestire stockouts, assortimenti variabili, cannibalizzazioni, tempi di lead times erratici, ecc. Questi fattori fanno una differenza ben maggiore di qualche punto percentuale di perdita pinball.
Per quanto riguarda il modello, il team di Lokad ha utilizzato un modello parametrico a bassa dimensionalità che includeva le ciclicità rilevanti (giorno della settimana, giorno del mese, mese dell’anno) a livello di negozio/categoria, una linea di base che eliminava le ciclicità e il rumore dovuto agli stock-out, e un modello in spazio degli stati a 2 parametri per trasformare la linea di base in traiettorie giornaliere (con contributi moltiplicativi delle ciclicità). Inoltre, come il team vincitore, Lokad non ha utilizzato dati sui prezzi, né dati esterni. La maggiore difficoltà tecnica per il team di Lokad si è rivelata la gestione degli stock-out da prevedere: si trattava di un esercizio di forecasting delle vendite, non di forecasting della domanda. Ne discuteremo in maggior dettaglio più avanti quando analizzeremo nel dettaglio le clausole di questo modello.
In definitiva, se un modello parametrico a bassa dimensionalità ben scelto, come quello utilizzato da Lokad nella competizione M5, può garantirti un’accuratezza a pochi punti percentuali dal metodo all’avanguardia - che risulta essere i range-augmented gradient boosted trees - allora in produzione questo modello è garantito a comportarsi molto meglio rispetto ai modelli non parametrici o iperparametrici, e molto più facile da modificare strutturalmente 3 quando sorge la necessità.
Inoltre, le prestazioni computazionali del modello tendono ad essere un vero e proprio ostacolo operativo. Il team classificatosi primo ha riferito che l’esecuzione della loro previsione richiedeva “un paio d’ore” (sic) su una workstation con configurazione 10+10 CPU. Questo può sembrare veloce, ma bisogna considerare che il dataset M5 conteneva solo 30k SKUs, che è molto piccolo rispetto al numero di SKUs nella maggior parte delle reti retail (alcune categorie in pochi negozi). Sto stimando che Walmart gestisca oltre 100M SKUs a livello globale, quindi stiamo parlando di decine di migliaia di ore di calcolo per previsione 4. Le reti retail servite da Lokad generalmente ci forniscono una finestra di circa 2 ore ogni giorno per aggiornare le nostre previsioni, per cui qualunque modello si scelga deve essere compatibile con questo orario sia per l’addestramento che per il forecasting 5. Deployare il modello del team classificatosi primo è certamente possibile su scala Walmart, ma gestire il cluster di calcolo da solo richiederebbe un team a parte.
La competizione M5 è stata un notevole miglioramento rispetto alle sue iterazioni precedenti. Tuttavia, il dataset è tutt’altro che rappresentativo di una situazione retail reale. Ad esempio, le informazioni sui prezzi erano disponibili solo per il passato. In pratica, le promotions non avvengono casualmente: sono pianificate. Di conseguenza, se i dati relativi ai prezzi fossero stati forniti per il periodo da prevedere, la competizione si sarebbe orientata verso modelli che realmente sfruttassero tali informazioni invece di scartarli immediatamente.
Oltre ai prezzi futuri, due elementi fondamentali di dati mancavano nella competizione M5: i livelli di stock e le transazioni disaggregate, entrambi quasi sempre disponibili nelle catene retail. I livelli di stock importano perché, ovviamente, senza stock non ci sono vendite (bias di censura). Le transazioni disaggregate sono importanti perché, secondo la mia esperienza, è quasi impossibile valutare qualsiasi tipo di cannibalizzazione o sostituzione senza di esse - mentre un’osservazione casuale degli scaffali retail indica chiaramente che esse giocano un ruolo importante. Il modello utilizzato dal team di Lokad, che si è classificato sesto, non prevedeva nulla in tal senso, così come il modello classificatosi primo.
In conclusione, è un risultato fantastico per Lokad. Pur essendoci sicuramente margine di miglioramento per rendere le competizioni di forecasting più realistiche, inviterei i miei lettori a non prendere questi risultati troppo alla lettera, dato che M5 è una competizione di forecasting. Nel mondo reale, stockouts, lanci di nuovi prodotti, promozioni, cambiamenti nell’assortimento, problemi con i fornitori, orari di consegna, tutto deve essere considerato. La sfida più grande non è ridurre di pochi punti percentuali l’errore a destra o a manca, ma assicurarsi che l’numerical recipe end-to-end non presenti punti ciechi che possano rovinarne l’intera iniziativa di supply chain optimization.
-
Tecnicamente un ex-dipendente di Lokad al momento della competizione. ↩︎
-
Il team vincitore includeva Northquay (pseudonimo) e Russ Wolfinger. Il loro team è stato chiamato Everyday Low SPLices per questa competizione M5. Per chiarezza, mi riferisco a loro qui semplicemente come il team classificatosi primo. ↩︎
-
Le crisi si verificano regolarmente nella supply chain. Il Covid-19 è solo l’ultima crisi a livello mondiale, ma le crisi localizzate accadono continuamente. I dati storici non riflettono sempre gli eventi che si svolgono nella supply chain. Spesso, l’intuizione di alto livello del supply chain scientist è l’unico modo per indirizzare i modelli verso decisioni sensate. ↩︎
-
Il team classificatosi primo ha usato LightGBM, una libreria in C++ in grado di offrire prestazioni algoritmiche all’avanguardia per questa categoria di modelli. Inoltre, il team ha utilizzato alcune tecniche avanzate di ottimizzazione numerica, come l’uso di numeri a mezza precisione. Durante il passaggio a un ambiente di produzione, le prestazioni di calcolo per SKU probabilmente diminuiranno a causa della maggiore complessità/eterogeneità imposte da un ambiente di produzione reale. ↩︎
-
Non tutti i modelli sono ugualmente adatti a isolare l’addestramento dalla valutazione. Le prestazioni possono variare. I problemi dei dati si verificano di tanto in tanto, quindi in queste situazioni i modelli devono essere riaddestrati, e questo deve accadere rapidamente. ↩︎