2009-04-16 17 views
15

Sto cercando un algoritmo o materiale di esempio da studiare per la previsione di eventi futuri basati su modelli noti. Forse c'è un nome per questo, e io proprio non lo so/lo ricordo. Qualcosa di questo generale potrebbe non esistere, ma non sono un maestro di matematica o algoritmi, quindi sono qui per chiedere indicazioni.Prevedere il verificarsi dell'evento successivo, in base a occorrenze passate

Un esempio, se ho capito che sarebbe stato qualcosa di simile: si verifica

Un evento statico il 1 ° gennaio, 1 febbraio, 3 marzo, 4 aprile. Una soluzione semplice potrebbe essere la media dei giorni/ore/minuti/qualcosa tra ogni occorrenza, aggiungere quel numero all'ultimo evento conosciuto e avere la previsione.

Cosa sto chiedendo, o cosa devo studiare?

Non vi è alcun obiettivo particolare in mente o variabili specifiche da tenere in considerazione. Questo è semplicemente un pensiero personale e un'opportunità per me per imparare qualcosa di nuovo.

risposta

7

Penso che alcuni argomenti che potrebbero valere la pena di esaminare includono numerical analysis, in particolare interpolation, extrapolation, and regression.

+0

Comprendo che non c'è mai una risposta univoca, soprattutto data una domanda così vaga o ambigua, anche se in questo caso particolare penso che l'estrapolazione sia ciò che stavo cercando. Grazie! –

+0

Penso che tu intenda l'interpolazione, non l'interpretazione. –

1

L'unica tecnica con cui ho lavorato per provare a fare qualcosa di simile sarebbe allenare una rete neurale per prevedere il prossimo passo della serie. Ciò implica interpretare la questione come un problema nella classificazione del modello, che non sembra una grande misura; Devo sospettare che ci siano meno sfocati modi per affrontarlo.

2

Non esiste un'unica soluzione "migliore" in scatola, dipende da cosa è necessario. Ad esempio, potresti voler calcolare la media dei valori come dici tu, ma usando le medie ponderate in cui i vecchi valori non contribuiscono tanto al risultato quanto ai nuovi. O potresti provare a smussare. Oppure potresti provare a vedere se la distribuzione degli eventi si adatta a una distribuzione ben nota (come normale, Poisson, uniforme).

-2

Si dovrebbe google Genetic Programming Algorithms

Loro (un po 'come le reti neurali menzionati da Chaos) vi permetterà di generare soluzioni a livello di codice, poi il programma stesso modificare sulla base di un criterio, e creare nuove soluzioni che siano spera più vicino ad accurato.

Le reti neurali dovrebbero essere addestrate da voi, ma con la programmazione genetica, il programma farà tutto il lavoro.

Anche se è un sacco di lavoro per farli funzionare in primo luogo!

4

Questo potrebbe essere eccessivo, ma Markov chains può portare ad alcune cose di riconoscimento di pattern piuttosto interessanti. È più adatto a, beh, catene di eventi: l'idea è, sulla base degli ultimi N passi in una catena di eventi, che cosa succederà dopo?

Questo è adatto al testo: elaborare un grande campione di Shakespeare e generare paragrafi pieni di assurdità simili a Shakespeare! Sfortunatamente, sono necessari molti più dati per capire gli eventi scarsamente popolati. (Rilevare modelli con un periodo di un mese o più richiederebbe di tenere traccia di una catena di almeno un mese intero di dati.)

In pseudo-python, ecco un abbozzo di uno script a catena costruttore/previsione Markov:

n = how_big_a_chain_you_want 
def build_map(eventChain): 
    map = defaultdict(list) 
    for events in get_all_n_plus_1_item_slices_of(eventChain): 
     slice = events[:n] 
     last = events[-1] 
     map[slice].append(last) 

def predict_next_event(whatsHappenedSoFar, map): 
    slice = whatsHappenedSoFar[-n:] 
    return random_choice(map[slice]) 
0

se si desidera semplicemente trovare la probabilità di un evento che si verifica dopo n giorni dati forniti prima della sua frequenza, ti consigliamo di adattarti ad una distribuzione di probabilità appropriata, che in genere richiede di conoscere qualcosa sulla fonte dell'evento (forse dovrebbe essere distribuita poisson, forse gaussiana). se vuoi scoprire la probabilità che un evento si verifichi dato che si sono verificati eventi precedenti, ti consigliamo di guardare le statistiche bayesiane e come costruire una catena markov da quella.

2

Se si dispone di un modello in mente (ad esempio, gli eventi si verificano regolarmente), quindi applicare un filtro di Kalman ai parametri di tale modello è una tecnica comune.

0

L'attività è molto simile all'attività di modellazione del linguaggio in cui, data una sequenza di parole storiche, il modello tenta di prevedere una distribuzione di probabilità sul vocabolario per la parola successiva.

Ci sono software open source come SRILM e NLTK che possono semplicemente ottenere le sequenze come frasi di input (ogni event_id è una parola) e fare il lavoro.

Problemi correlati