Quale algoritmo potrebbe essere utilizzato per prevedere l'utilizzo dei materiali di consumo dati dati da acquisti passati?


10

Pensando a un problema apparentemente semplice ma interessante, vorrei scrivere un codice per prevedere i materiali di consumo di cui avrò bisogno nel prossimo futuro, data la storia completa dei miei acquisti precedenti. Sono sicuro che questo tipo di problema abbia una definizione più generica e ben studiata (qualcuno ha suggerito che questo è legato ad alcuni concetti nei sistemi ERP e simili).

I dati che ho sono la cronologia completa degli acquisti precedenti. Supponiamo che io stia cercando forniture di carta, i miei dati sembrano (data, fogli):

2007-05-10   500
2007-11-11  1000
2007-12-18  1000
2008-03-25   500
2008-05-28  2000
2008-10-31  1500
2009-03-20  1500
2009-06-30  1000
2009-09-29   500
2009-12-16  1500
2010-05-31   500
2010-06-30   500
2010-09-30  1500
2011-05-31  1000

non è "campionato" a intervalli regolari, quindi penso che non si qualifichi come un dato di serie storiche.

Non ho dati sui livelli di magazzino effettivi ogni volta. Vorrei utilizzare questi dati semplici e limitati per prevedere la quantità di carta di cui avrò bisogno (ad esempio) 3,6,12 mesi.

Finora sono venuto a sapere che quello che sto cercando si chiama Extrapolation e non molto altro :)

Quale algoritmo potrebbe essere utilizzato in una situazione del genere?

E quale algoritmo, se diverso dal precedente, potrebbe anche sfruttare alcuni altri punti dati che forniscono gli attuali livelli di approvvigionamento (ad esempio, se so che alla data X avevo lasciato Y fogli di carta)?

Non esitare a modificare la domanda, il titolo e i tag se conosci una terminologia migliore per questo.

EDIT: per quello che vale, cercherò di codificare questo in Python. So che ci sono molte librerie che implementano più o meno qualsiasi algoritmo là fuori. In questa domanda vorrei esplorare i concetti e le tecniche che potrebbero essere utilizzate, con l'implementazione effettiva da lasciare come esercizio al lettore.


1
cari statistici, voglio solo farvi sapere che questa domanda non è stata abbandonata. Tornerò su questo specifico problema non appena troverò tempo e motivazione (leggi: il capo mi dice di fare questo) e esaminerò le tue preziose risposte e alla fine ne segnerò una accettata (che per me significherà "effettivamente implementata").
Luke404,

Risposte:


12

La domanda riguarda il tasso di consumo rispetto al tempo. Ciò richiede la regressione del tasso nel tempo ( non la regressione degli acquisti totali nel tempo). L'estrapolazione si ottiene costruendo limiti di previsione per acquisti futuri.

Sono possibili diversi modelli. Dato il passaggio a un ufficio senza carta (che è in corso da circa 25 anni :-), potremmo adottare un modello esponenziale (in diminuzione). Il risultato è rappresentato dal seguente diagramma a dispersione del consumo, sul quale sono disegnate la curva esponenziale (adattata tramite i minimi quadrati ordinari ai logaritmi del consumo) e i suoi limiti di predizione del 95%. I valori estrapolati dovrebbero trovarsi vicino alla linea e tra i limiti di predizione con una confidenza del 95%.

figura

L'asse verticale mostra le pagine al giorno su una scala lineare. La linea continua blu scuro è perfetta: è veramente esponenziale ma si avvicina notevolmente all'essere lineare. L'effetto dell'adattamento esponenziale appare nelle bande di predizione, che su questa scala lineare sono disposte asimmetricamente attorno all'adattamento; su una scala logaritmica, sarebbero simmetrici.

Un modello più preciso spiegherebbe il fatto che le informazioni sui consumi sono più incerte su periodi di tempo più brevi (o quando gli acquisti totali sono più piccoli), che potrebbero essere montati utilizzando i minimi quadrati ponderati. Data la variabilità di questi dati e l'ineguaglianza approssimativa delle dimensioni di tutti gli acquisti, non vale la pena.

Questo approccio comprende dati di inventario intermedi , che possono essere utilizzati per interpolare i tassi di consumo in tempi intermedi. In tal caso, poiché le quantità intermedie di consumo potrebbero variare considerevolmente, sarebbe consigliabile l'approccio ponderato dei minimi quadrati.

Quali pesi usare? Potremmo considerare il consumo di carta, che si accumula necessariamente in quantità integrali di carta, come un conteggio che varia indipendentemente di giorno in giorno. Per brevi periodi, la varianza del conteggio sarebbe quindi proporzionale alla lunghezza del periodo. La varianza del conteggio al giorno sarebbe quindi inversamente proporzionale alla lunghezza del periodo. Di conseguenza, i pesi dovrebbero essere direttamente proporzionali ai periodi trascorsi tra gli inventari. Pertanto, ad esempio, il consumo di 1000 fogli tra il 2007-05-10 e il 2007-11-11 (circa 180 giorni) avrebbe quasi cinque volte il peso del consumo di 1000 fogli tra l'11-11-2007 e il 2007-12- 18, un periodo di soli 37 giorni.

La stessa ponderazione può essere adattata negli intervalli di previsione. Ciò comporterebbe intervalli relativamente ampi per le previsioni di consumo durante un giorno rispetto alle previsioni di consumo per, diciamo, tre mesi.

Si noti che questi suggerimenti si concentrano su modelli semplici e previsioni semplici, appropriati per l'applicazione prevista e l'evidente ampia variabilità dei dati. Se le proiezioni coinvolte, diciamo, le spese per la difesa di un grande paese, vorremmo accogliere molte più variabili esplicative, tenere conto della correlazione temporale e fornire informazioni molto più dettagliate nel modello.


se i dati fossero stati campionati a intervalli regolari, sarebbe stato appropriato utilizzare i conteggi anziché i tassi ?
MannyG

1
@MannyG Sì, ma solo perché i conteggi sarebbero direttamente proporzionali ai tassi, non perché sarebbe opportuno utilizzare i conteggi stessi. La necessità di utilizzare le tariffe qui è chiara quando consideriamo cosa significa realmente prevedere un valore futuro: devi specificare l'intervallo di tempo del consumo previsto. Si prevede in tal modo un importo più volte per ottenere una quantità, il che implica che tale importo deve essere una quantità per unità di tempo: un tasso di consumo .
whuber

@whuber Mi scusi ma non riesco a capire chiaramente quali modelli sono descritti nella tua risposta e in quali punti uno finisce e ne inizia un altro. Ho un problema simile e parti della tua risposta sembrano esattamente ciò di cui ho bisogno, ma devo fare qualche altro studio su questo argomento e non posso dire leggendo la tua risposta se stai parlando di modelli distinti o di un certo che viene migliorato gradualmente. Esiste un nome formale per il modello con i pesi che stai descrivendo? Il tuo primo modello (diminuzione esponenziale) prevede pesi? Grazie in anticipo.
Agis,

@rensokuken Descrivo un modello e una variazione che pondera i dati. La seconda metà di questa risposta suggerisce come determinare i pesi. Non conosco alcun nome formale al di là di "minimi quadrati ponderati".
whuber

@whuber vedo. In principio che stai descrivendo questo e poi, quando si aggiungono pesi si sta descrivendo questo , giusto? Inoltre, hai delle risorse da consultare, relative alla particolare soluzione e per un principiante nelle previsioni? Grazie per il chiarimento.
Agis,

5

Questo è sicuramente il problema dell'apprendimento automatico (ho aggiornato i tag nel tuo post). Molto probabilmente, questa è una regressione lineare . In breve, la regressione lineare tenta di recuperare la relazione tra 1 dipendente e 1 o più variabili indipendenti. La variabile dipendente qui è l' utilizzo dei materiali di consumo . Per variabili indipendenti suggerisco intervalli di tempo tra gli acquisti. È inoltre possibile aggiungere più variabili indipendenti, ad esempio il numero di persone che hanno utilizzato i materiali di consumo in ogni momento o qualsiasi altra cosa che possa influire su una quantità di acquisti. Puoi trovare una bella descrizione della regressione lineare insieme all'implementazione in Python qui .

In teoria, è anche possibile che non solo gli intervalli di tempo tra gli acquisti, ma anche i momenti stessi influenzino gli importi. Ad esempio, per qualche motivo a gennaio le persone potrebbero desiderare più carta di, diciamo, ad aprile. In questo caso non è possibile utilizzare il numero del mese come variabile indipendente stessa a causa della natura della regressione lineare stessa (il numero del mese è solo un'etichetta, ma verrà utilizzato come importo). Quindi hai 2 modi per superare questo.

Innanzitutto, puoi aggiungere 12 variabili aggiuntive , una per ogni mese e impostare ogni variabile su 1 se rappresenta il mese di acquisto e su 0 se non lo è. Quindi utilizzare la stessa regressione lineare.

In secondo luogo, è possibile utilizzare un algoritmo più sofisticato, come M5 ' , che è un mix di regressione lineare e alberi decisionali (è possibile trovare una descrizione dettagliata di questo algoritmo in Data Mining: Strumenti e tecniche di machine learning pratico ).


Dipende da quanti dati hai sull'utente. Se abbastanza (diciamo,> 100 transazioni per> 1 anno), puoi formare un modello per questo specifico utente. Altrimenti, il modello generale su tutti gli utenti potrebbe darti risultati migliori. È possibile utilizzare la convalida incrociata per misurare le prestazioni di entrambi gli approcci.
amico

5

non è "campionato" a intervalli regolari, quindi penso che non si qualifichi come un dato di serie storiche.

Ecco un'idea su come prevedere gli acquisti: considerare i dati come una serie di domande intermittenti . Cioè, hai una serie temporale campionata ad intervalli regolari, ma i valori positivi sono ovviamente distanziati in modo irregolare. Rob Hyndman ha una bella relazione sull'uso del metodo di Croston per la previsione di serie di domanda intermittente. Mentre programma anche molto in Python, risparmierai molto tempo di esplorazione usando il metodo di Croston, così come altri metodi di previsione delle serie temporali, prontamente disponibili nell'eccellente previsione del pacchetto R di Rob .


1
+1 Per offrire una nuova idea. Esaminando l'introduzione e le conclusioni del documento di Shenstone e Hyndman, tuttavia, suggerisce che il metodo di Croston non è generalmente molto buono: il documento si concentra sul tentativo di giustificare e comprendere una procedura popolare che risulta essere limitata; il meglio che gli autori possono dire è che, nonostante ciò, "le previsioni ... possono ancora essere utili". Inoltre, sembra che questo modello non possa contenere i dati aggiuntivi sui "livelli di approvvigionamento attuali" come richiesto dal PO.
whuber

3

Sono abbastanza sicuro che stai cercando di fare alcune analisi di regressione per adattare una linea ai tuoi punti dati. Ci sono molti strumenti disponibili per aiutarti: MS Excel è il più accessibile. Se vuoi creare la tua soluzione, meglio ripassare le tue statistiche ( qui e qui , forse). Una volta adattata una linea ai tuoi dati, puoi estrapolare nel futuro.

EDIT: ecco uno screenshot dell'esempio Excel che ho citato nei commenti qui sotto. Le date in grassetto sono date casuali in futuro che ho digitato in me stesso. I valori in grassetto nella colonna B sono valori estrapolati calcolati dal sapore di regressione esponenziale di Excel. inserisci qui la descrizione dell'immagine

EDIT2: OK, quindi per rispondere alla domanda "Quali tecniche posso usare?"

  • regressione esponenziale (menzionata sopra)
  • Metodo di Holt
  • Metodo di inverno
  • ARIMA

Si prega di consultare questa pagina per una breve introduzione su ciascuna: http://www.decisioncraft.com/dmdirect/forecastingtechnique.htm


Questo mi ha portato a chiedermi: quali sono i miei punti dati? non i singoli acquisti - ciò non prenderebbe in considerazione il tempo che trascorre tra loro e quindi il consumo totale di una determinata risorsa. Forse dovrei interpolarli per ottenere un po 'di media ad intervalli regolari (ad esempio, quantità a settimana) e quindi utilizzarli come input di dati di serie temporali per estrapolare i dati futuri?

Pensa alla differenza nel tempo come alla differenza dei valori "x" su un grafico. La maggior parte dei tipi di analisi di regressione terrà conto delle diverse differenze. Prova i tuoi dati di esempio utilizzando la funzione CRESCITA in Excel, che utilizza la regressione esponenziale. Se si modificano le date, i valori previsti cambieranno di conseguenza.

3

Iniziato come commento, cresciuto troppo a lungo ...

non è "campionato" a intervalli regolari, quindi penso che non si qualifichi come un dato di serie storiche

Questa è una conclusione errata - sono certamente serie temporali. Una serie temporale può essere campionata in modo irregolare, tende a richiedere approcci diversi dai soliti quando lo è.

Questo problema sembra essere correlato a problemi stocastici come i livelli di diga (l'acqua viene generalmente utilizzata a un ritmo abbastanza stabile nel tempo, a volte aumentando o diminuendo più o meno rapidamente, mentre altre volte è abbastanza stabile), mentre i livelli di diga tendono solo ad aumentare rapidamente (essenzialmente nei salti), poiché si verificano piogge. I modelli di utilizzo e rifornimento della carta possono essere in qualche modo simili (sebbene l'importo ordinato possa tendere ad essere molto più stabile e in numeri molto più arrotondati rispetto agli importi delle precipitazioni, e si verifichi ogni volta che il livello si abbassa).

È anche correlato al capitale della compagnia assicurativa (ma in qualche modo è invertito) - a parte il capitale iniziale, i soldi dai premi (costi operativi netti) e gli investimenti arrivano abbastanza costantemente (a volte più o meno), mentre i pagamenti delle polizze assicurative tendono ad essere effettuati in relativamente grandi importi.

Entrambe queste cose sono state modellate e possono fornire una piccola visione di questo problema.


-1

dovresti dare un'occhiata a WEKA. È uno strumento e un'API Java con una suite di algoritmi di machine learning. In particolare dovresti cercare algoritmi di classificazione.

In bocca al lupo


In che modo un algoritmo di classificazione potrebbe fornirmi una previsione quantitativa?

@ Luke404: Weka ha 3 tipi di algoritmi (classificazione, clustering e mining di associazione) e hanno deciso di inserire la regressione nella sezione di classificazione. Ma in generale hai ragione, la classificazione e la previsione quantitativa sono un po 'diverse.
amico

-1

Vorrei utilizzare i minimi quadrati lineari per adattare un modello al consumo cumulativo (ovvero il totale parziale delle pagine per data). Un presupposto iniziale sarebbe quello di utilizzare un polinomio di primo grado. Tuttavia, i residui indicano che il primo grado sta sottostimando i dati nell'esempio, quindi il passo logico successivo sarebbe di aumentarlo ad un adattamento di secondo grado (cioè quadratico). Ciò rimuove la curvatura dei residui e il coefficiente leggermente negativo per il termine quadrato indica che il tasso di consumo sta diminuendo nel tempo, il che sembra intuitivo dato che la maggior parte delle persone tende probabilmente a usare meno carta nel tempo. Per questi dati non credo che sia necessario andare oltre un livello di secondo grado, in quanto si potrebbe iniziare un overfitting e l'estrapolazione risultante potrebbe non avere senso.

Puoi vedere gli accoppiamenti (compresa l'estrapolazione) e i residui nei grafici qui sotto.

in forma residuo

Se possibile, potrebbe essere utile eseguire il bootstrap per ottenere una migliore stima degli errori di previsione.


Poiché i residui nel consumo cumulativo sarebbero fortemente correlati, questo metodo non appare statisticamente giustificato. L'uso di una quadratica adatta solo le carte su questo problema fondamentale; non può curarlo.
whuber

-2

Penso che tu possa ottenere i tuoi dati usando la ricerca operativa .

Perché non provi a trovare alcune equazioni che prendono come variabili la quantità di carta utilizzata per periodo di tempo, gli utenti della carta, ecc.?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.