Ottimizzazione dei ricavi dei rivenditori con l'intelligenza artificiale delle previsioni di vendita

Pubblicato: 2022-03-11

La previsione è una tecnica che utilizza dati ed eventi storici per costruire stime su tendenze future, potenziali disastri e comportamento generale di qualsiasi soggetto. Le previsioni possono essere utilizzate come supporto probabilistico per l'analisi decisionale, per stimare spese, ricavi e piani di budget.

Le previsioni nel mondo degli affari possono essere suddivise in due categorie distinte: previsione qualitativa e previsione quantitativa .

  • Previsione qualitativa. La previsione qualitativa si occupa di ricerche di mercato e strategie di mercato, quindi è più guidata da esperti e influenzata da fattori umani. Di solito è finalizzato alla costruzione di strategie a breve termine.
  • Previsione quantitativa. La previsione quantitativa esclude qualsiasi fattore umano. Dipende solo dai dati storici che un'entità ha e mira a prevedere quali saranno alcuni fattori come vendite, prezzi e altri aspetti finanziari nel lungo periodo.

Per ulteriori informazioni, puoi dare un'occhiata al primer sulle previsioni finanziarie di Investopedia.

Entrambi i tipi di previsione hanno mostrato molte promesse e sono riusciti a creare miglioramenti aziendali per molte entità.

Se desideri saperne di più su come le previsioni possono influenzare le decisioni di mercato, un buon punto di partenza è Prediction Markets: Fundamentals, Designs, and Applications di Stefan Luckner et al.

Un problema che possiamo affrontare utilizzando la previsione quantitativa è la previsione della domanda o la previsione delle vendite.

Approcci di previsione della domanda e previsione delle vendite

Supponiamo che tu sia un rivenditore che gestisce molti negozi e che ogni negozio abbia un sistema statico di rifornimento delle scorte di prodotti basato su decisioni umane basate su determinati eventi come le stagioni e le tendenze del mercato.

Occasionalmente, ti imbatterai in uno di questi problemi che può portare a due problemi principali:

  • Prodotti in eccesso. Avere una scorta sostanziale di prodotti pianificata per essere venduta durante un determinato periodo di tempo ma non venduta.
  • Prodotti esauriti. Avere l'opportunità di vendere un prodotto ma non essere in grado perché il prodotto non è disponibile.

Secondo un'indagine del gruppo IHL su 600 famiglie e rivenditori, i rivenditori stanno perdendo quasi 1 trilione di dollari di vendite all'anno a causa di problemi di esaurimento delle scorte.

Secondo il rapporto, che è stato inviato via e-mail a Retail Dive, gli acquirenti incontrano prodotti esauriti ogni volta che uno su tre fa acquisti. Nei negozi di generi alimentari, farmaceutici e di massa, trovano articoli esauriti in un viaggio su cinque, nei grandi magazzini e nei rivenditori specializzati è uno su quattro e nei negozi di elettronica uno su tre”, ha rilevato IHL Group.

A quanto pare, entrambi questi problemi portano a una diminuzione delle entrate perché abbiamo perso una probabilità di vendita o abbiamo investito più denaro in prodotti invenduti, il che significa avere risorse che non genereranno entrate in tempi brevi per compensare i loro costi.

Ciò è chiaramente dannoso per il flusso di cassa dell'entità e per affrontare questo rischio abbiamo bisogno di due cose:

  • Più input per aiutarci a prendere la decisione
  • Un team di previsione in grado di eseguire una pianificazione strategica a lungo termine per i sistemi di rifornimento delle scorte

Quindi, la domanda è: quali sono le indicazioni di cui hai bisogno per adottare l'IA nella tua azienda per aiutare il tuo processo di previsione?

Per prendere questa decisione, hai bisogno di risposte esperte alle seguenti domande:

  • È difficile prevedere la tua pipeline di vendita?
  • Le tue previsioni di vendita sono imprecise o non sufficientemente accurate (anche se disponi di dati storici)?
  • Soffri di problemi di esaurimento o eccesso di stock?
  • Non sei in grado di estrarre informazioni descrittive e inferenziali dai dati che possiedi per guidare le tue decisioni e la tua pianificazione?

Le risposte a queste domande dovrebbero essere un chiaro segnale che ti aiuta a decidere se iniziare o meno a utilizzare l'IA nelle tue strategie di previsione.

In che modo l'IA può avvantaggiare il processo di previsione delle vendite?

L'intelligenza artificiale ha mostrato ottimi risultati superando le previsioni umane in molte aziende, consentendo un processo decisionale e una pianificazione più rapidi, nonché strategie di gestione del rischio più affidabili. Questo è il motivo per cui le migliori aziende stanno adottando l'IA nella loro pianificazione.

Quando si affronta un problema di previsione della domanda, il metodo di previsione delle serie temporali può essere utilizzato per prevedere le vendite di ciascun prodotto, consentendo così alle aziende di ottimizzare la ricostituzione delle scorte e riducendo al minimo il verificarsi dei suddetti problemi. Tuttavia, molti modelli hanno difficoltà con la previsione a livello di singolo prodotto o categoria di prodotto, a causa della mancanza delle funzionalità necessarie. Quindi, la domanda è: come possiamo farlo funzionare e ottenere il massimo dai nostri dati?

Per i rivenditori reali, questi problemi sono tutt'altro che banali. Hai più di 1.000 prodotti che introducono molta non linearità nel set di dati e dipendenze multivariate, oppure devi essere avvisato della quantità di rifornimento previsto delle scorte con molto preavviso per poterlo produrre o acquistare, oppure fai tutto il necessario per acquisirlo prima che la domanda si materializzi.

In questo caso, i modelli classici come ARIMA ed ETS non funzioneranno e avremo bisogno di un metodo più robusto come RNN e XGBoost, ed è per questo che abbiamo bisogno di molte funzionalità per affrontare questo problema.

Perché ciò funzioni, dobbiamo:

  • Acquisire le caratteristiche di input necessarie per spiegare la varietà e la diversità dei prodotti.
  • Classifica i nostri dati, in modo che ogni categoria abbia lo stesso comportamento delle serie temporali e ogni categoria verrà affrontata utilizzando un modello autonomo.
  • Addestra i nostri modelli sulle caratteristiche di input categorizzate acquisite.

Per il bene di questo articolo, prenderemo XGBoost come esempio di tale modello.

Funzionalità richieste nei modelli di previsione delle vendite

L'insieme delle funzionalità necessarie per questo problema è classificato in quattro gruppi principali:

  • Caratteristiche legate al tempo
  • Funzionalità relative alle vendite
  • Caratteristiche relative al prezzo
  • Funzionalità relative alle azioni

Caratteristiche relative al tempo

A differenza del deep learning (Recurrent Neural Network), i modelli di machine learning non possono ottenere dipendenze a lungo oa breve termine all'interno di una serie temporale senza creare un livello di estrazione manuale delle funzionalità per la funzionalità datetime .

Molte caratteristiche possono essere estratte dalla data, come ad esempio:

  • Anno
  • Giorno
  • Ora
  • Fine settimana o giorno feriale (se il giorno è un giorno feriale o un fine settimana)
  • Giorno della settimana

Molti approcci estraggono semplicemente quelle caratteristiche temporali e le usano come input e modelli di treno, ma è possibile fare ulteriore ingegneria. Come possiamo vedere, le caratteristiche (giorno, ora, giorno della settimana) sono periodiche, il che significa che hanno un intervallo di valori ripetitivi. Come può un modello affrontare questo?

La risposta breve è che non può perché quello che vede il modello è che l'ora 00:00 è a 23 ore di distanza dalle 23:00, ma in realtà è a un'ora di distanza. Un modo per risolvere questo problema è convertire queste caratteristiche in trasformazioni cicliche.

Caratteristiche relative al tempo

Usando il concetto di seno e coseno, o rappresentazione vettoriale, si può convertire ogni ora (24 ore) in un angolo, e l'uso del loro seno e coseno renderà molto più facile per il modello rilevare le reali proporzioni tra le ore, indipendentemente della periodicità.

Ciò rimuoverà la discontinuità che si verifica nelle funzioni temporali periodiche o qualsiasi caratteristica periodica.

Per il nostro articolo, utilizzeremo il set di dati Sample Superstore trovato pubblicamente e proveremo a prevedere le vendite mensili target per una determinata categoria di prodotti.

Inoltre, utilizzeremo l'ambiente Python 3.7 con le seguenti librerie:

  • NumPy
  • Panda
  • XGBoost
  • Impara

Ora, ti mostrerò come costruire la funzione di conversione delle caratteristiche del periodo e testerò se è stato utile o meno.

 def convert_periodic(val,period): theta = 2*np.pi*val/period sin_period = np.sin(theta) cos_period = np.cos(theta) return sin_period,cos_period def convert_month(x): return convert_periodic(x,12) df['sin_month'], df['cos_month'] = zip(*df['month'].map(convert_month))

Con questo in atto, siamo pronti per testare se la funzionalità aggiunta migliorerà le prestazioni o meno.

 X = df.drop(['Order Date','Sales','sin_month', 'cos_month'],axis = 1) y = np.log1p(df['Sales']) X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2, shuffle=False)

Come possiamo vedere, abbiamo eseguito una trasformazione del registro 1p per la nostra funzione di vendita target, perché è una funzione distorta (non distribuita normalmente).

Ora adatteremo un regressore XGBoost sui dati.

 y_pred = model.predict(X_test) print(f'Loss without cyclic conversion on testing set is {sqrt(mean_squared_error(y_pred,y_test))}') Loss without cyclic conversion on testing set is 0.4313676193485837

Successivamente, proveremo con la nostra funzione creata.

 X = df.drop(['Order Date','Sales'],axis = 1) y = np.log1p(df['Sales']) X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2, shuffle=False) y_pred = model.predict(X_test) print(f'Loss with cyclic conversion on testing set is {sqrt(mean_squared_error(y_pred,y_test))}') Loss with cyclic conversion on testing set is 0.33868030449130826

Come possiamo vedere, la perdita è migliorata da 0,43 RMSE a 0,33 RMSE.

Alcune altre funzionalità relative al tempo a cui puoi pensare, a seconda del tuo problema, sono:

  • Numero di mesi da quando l'articolo era nel negozio
  • Numero di giorni dall'ultima vendita

Funzionalità relative alle vendite

Questa è la principale caratteristica di input necessaria per prevedere le nostre vendite, quindi come ottenere il massimo dai dati di vendita? Possiamo raggiungere questo obiettivo usando il concetto di ritardo e autocorrelazione.

Le caratteristiche di ritardo sono record storici di vendita per i prodotti. Ad esempio, se prendiamo una funzione a 12 ritardi per le vendite mensili come input per il nostro modello per prevedere le vendite per maggio 2020, significa che forniremo al modello record di dati tra maggio 2019 e aprile 2020. Questo può essere davvero utile.

Inoltre, può essere interpretato utilizzando grafici di autocorrelazione per verificare quanto è correlata la caratteristica di destinazione con le sue caratteristiche ritardate. Questo aiuta anche a selezionare solo le funzionalità correlate tra le funzionalità ritardate, quindi riduciamo l'utilizzo della memoria e la ridondanza delle funzionalità.

Ecco come possiamo aggiungere funzionalità di ritardo nel nostro dataframe:

 for i in range(3): df[f'lag_{i+1}'] = df['Sales'].shift(i+1) df = df.dropna() df.head() 

Funzionalità relative alle vendite

Qui, ho scelto un valore di una funzione a tre ritardi da includere nel nostro set di allenamento. Questa funzione è un iperparametro: puoi sceglierlo in base al grafico di autocorrelazione o provando molti valori e scegliendo solo il migliore nella fase di ottimizzazione.

 X = df.drop(['Order Date','Sales'],axis = 1) y = np.log1p(df['Sales']) X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2, shuffle=False) y_pred = model.predict(X_test) print(f'Loss with lag features on testing set is {sqrt(mean_squared_error(y_pred,y_test))}') Loss with lag and aggregated sales features on testing set is 0.2862175857169188

Ora, RMSE è migliorato a 0,28, utilizzando sia le funzionalità di ritardo che le conversioni cicliche.

Alcune funzionalità aggiuntive relative alle vendite che potresti aggiungere:

  • Frazione articolo venduto (la frazione di articoli venduti in termini di vendite totali in un negozio)
  • Frequenza degli eventi di vendita per la categoria dell'articolo
  • Aggiungendo il concetto di anzianità

L'anzianità è un concetto introdotto per assegnare un livello di anzianità ai nuovi articoli in un negozio:

  • Anzianità 0: elementi nuovi per l'azienda
  • Anzianità 1: articoli mai venduti in questo negozio ma venduti in altri negozi dell'azienda
  • Anzianità 2: articoli che sono stati venduti in questo negozio in precedenza

Caratteristiche relative al prezzo

Un semplice argomento è che una delle cause dirette dell'aumento e del calo delle vendite è il prezzo e le promozioni. Il prezzo è uno dei modi migliori per distinguere tra diverse categorie, sottocategorie e supercategorie di prodotti.

Ad esempio, supponendo che a ciascun prodotto sia stata assegnata una categoria e una sottocategoria, è possibile creare le seguenti caratteristiche di prezzo:

  • (Media, Max, Min, Mediana) prezzi per categoria
  • (Media, Max, Min, Mediana) prezzi nella sottocategoria
  • Confronti tra queste statistiche, come la differenza tra ciascuna statistica sia nella categoria che nella sottocategoria

Questa aggregazione può essere eseguita più volte utilizzando molti raggruppamenti per argomento (supponendo che miriamo a prevedere la domanda mensile), come ad esempio:

  • Mensile, Negozio, categoria
  • Mensile, Negozio, sottocategoria
  • Mensile, Negozio, Articolo, categoria
  • Mensile, Negozio, Articolo, sottocategoria

Inoltre, è possibile aggiungere più funzionalità escluso il raggruppamento Mensile per studiare il comportamento dei prezzi nel complesso.

Funzionalità relative alle azioni

Questo non è così comune tra i rivenditori e i previsori delle vendite, ma fa molta differenza nei modelli di previsione delle vendite. I dataset di stock contengono principalmente i dati di inventario di ciascun prodotto, quotidianamente in ogni negozio. Da questo, possiamo combinarlo con i dati di vendita per ottenere un rapporto di fatturato mensile per ciascun prodotto. Questo rapporto indicherà la velocità con cui lo stock di un prodotto viene venduto completamente e ha due vantaggi principali:

  • Può aiutare il modello a prevedere le vendite in base al livello di inventario corrente.
  • Può aiutarci a utilizzare questo valore per raggruppare i prodotti in prodotti a lento, medio e rapido movimento. Questo raggruppamento ci aiuterà con il processo decisionale e la modellazione.

Per questo, hai bisogno dei dati di inventario giornalieri per ciascun prodotto, insieme ai dati di vendita, quindi puoi calcolare il rapporto di rotazione dell'inventario come segue:

Funzionalità relative alle azioni

Suggerimento: queste aggregazioni vengono eseguite in base a un intervallo di tempo. Ad esempio, se stiamo lavorando sulla previsione delle vendite mensili, l'ITO verrà calcolato come vendite totali nell'ultimo mese rispetto al valore medio dell'inventario durante lo stesso mese.

Le previsioni di vendita possono trasformare i dati in opportunità

In sintesi, le previsioni di vendita possono aiutare le aziende ad aumentare i ricavi e realizzare un profitto, a condizione che dispongano delle giuste pipeline di dati e utilizzino i metodi di progettazione delle funzionalità corretti. Questo articolo è stato una prova per dimostrare che tutti i tipi di dati possono essere utili per risolvere questo problema.

Ogni azienda dovrebbe indagare se l'intelligenza artificiale è necessaria per i suoi problemi di previsione e, nel caso, avrà bisogno di ingegneri esperti di intelligenza artificiale e consigli di ingegneri di apprendimento automatico per creare un proprio sistema di previsione delle vendite.

Se sei un'azienda/rivenditore disposto ad applicare questa tecnica di previsione delle vendite, inizia raccogliendo tutti i dati possibili, in particolare le vendite giornaliere, l'inventario giornaliero e le transazioni giornaliere.

Una volta che possiedi questi dati, puoi utilizzarli per aumentare i tuoi ricavi e ottimizzare le strategie di rifornimento delle scorte, consentendo alla tua azienda di ottenere il massimo profitto possibile con le risorse disponibili, come dimostrato in diversi esempi sopra, nonché con le pratiche di previsione delle vendite utilizzate dai principali rivenditori .

Riferimenti:

Il set di dati
Ulteriori letture sulle previsioni finanziarie