2009-04-16 4 views
15

Ich bin auf der Suche nach einem Algorithmus oder Beispielmaterial für die Vorhersage zukünftiger Ereignisse basierend auf bekannten Mustern. Vielleicht gibt es einen Namen dafür, und ich weiß es einfach nicht. Etwas, dass dieser General vielleicht nicht existiert, aber ich bin kein Meister der Mathematik oder Algorithmen, also frage ich nach der Richtung.Vorhersage des nächsten Ereignisses basierend auf vergangenen Ereignissen

Ein Beispiel, wie ich sie verstehe, es wäre so etwas wie dieses:

Ein statisches Ereignis am 1. Januar tritt, 1. Februar, 3. März, 4. April. Eine einfache Lösung wäre, die Tage/Stunden/Minuten/etwas zwischen jedem Auftreten zu mitteln, diese Zahl zu dem letzten bekannten Vorkommen hinzuzufügen und die Vorhersage zu haben.

Wonach frage ich oder was soll ich studieren?

Es gibt kein bestimmtes Ziel oder bestimmte Variablen, die berücksichtigt werden müssen. Dies ist einfach ein persönlicher Gedanke und eine Gelegenheit für mich, etwas Neues zu lernen.

Antwort

7

Ich denke, einige Themen, die sich lohnen könnte zu prüfen, gehören numerical analysis, speziell interpolation, extrapolation, and regression.

+0

Ich verstehe, dass es nie eine Single-beste Antwort, vor allem angesichts solch einer vagen oder zweideutigen Frage, in diesem speziellen Fall denke ich, dass Extrapolation ist, was ich gesucht habe. Vielen Dank! –

+0

Ich denke du meinst Interpolation, nicht Interpretation. –

1

Die einzige Technik, mit der ich versucht habe, etwas zu tun, wäre ein neuronales Netzwerk zu trainieren, um den nächsten Schritt in der Serie vorherzusagen. Das bedeutet, das Problem als ein Problem bei der Musterklassifizierung zu interpretieren, was nicht so toll erscheint. Ich muss vermuten, dass es weniger verschwommene Wege gibt, damit umzugehen.

2

Es gibt keine einzige "beste" Lösung in Dosen, es kommt darauf an, was Sie brauchen. Sie könnten beispielsweise die Werte wie angegeben mitteln, aber gewichtete Mittelwerte verwenden, bei denen die alten Werte nicht so viel zum Ergebnis beitragen wie die neuen Werte. Oder Sie versuchen etwas Glättung. Oder Sie versuchen zu sehen, ob die Verteilung der Ereignisse einer gut bekannten Verteilung entspricht (wie normal, Poisson, Uniform).

-2

sollten Sie google Genetic Programming Algorithms

Sie (Art wie die neuronalen Netze von Chaos genannt) ermöglicht es Ihnen, Lösungen programmatisch zu generieren, haben dann das Programm selbst auf der Grundlage eines Kriterien ändern und neue Lösungen zu schaffen, die hoffentlich sind näher zu genau.

Neuronale Netze müssten von Ihnen trainiert werden, aber mit der genetischen Programmierung wird das Programm die ganze Arbeit erledigen.

Obwohl es eine höllische Arbeit ist, sie zum Laufen zu bringen!

4

Dies könnte Overkill sein, aber Markov chains kann zu einigen ziemlich cool Mustererkennung Zeug führen. Es ist besser geeignet für, nun, Ketten von Ereignissen: Die Idee ist, basierend auf den letzten N Schritten in einer Kette von Ereignissen, was wird als nächstes passieren?

Dies ist gut geeignet für Text: Verarbeiten Sie eine große Probe von Shakespeare, und Sie können Absätze voller Shakespeare-wie Unsinn erzeugen! Leider braucht es viel mehr Daten, um spärlich bevölkerte Ereignisse herauszufinden. (Das Erkennen von Mustern mit einem Zeitraum von einem Monat oder mehr würde erfordern, dass Sie eine Kette von mindestens einen vollen Monat der Daten verfolgen.)

In pseudo-Python, hier ist eine grobe Skizze eines Skripts Markov-Kette Builder/Prognose:

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

, wenn Sie lediglich die Wahrscheinlichkeit eines Ereignisses nach n Tagen vor Daten von bestimmten auftretenden finden wollen ihre Häufigkeit, Sie wollen zu einer geeigneten Wahrscheinlichkeitsverteilung passen, was im Allgemeinen erfordert, dass Sie etwas über die Quelle des Ereignisses wissen (vielleicht sollte es poisson-verteilt sein, vielleicht gaussianisch). Wenn Sie die Wahrscheinlichkeit eines Ereignisses aufgrund früherer Ereignisse ermitteln möchten, sollten Sie sich Bayesianische Statistiken ansehen und daraus eine Markov-Kette aufbauen.

2

Wenn Sie ein Modell im Auge haben (z. B. wenn die Ereignisse regelmäßig auftreten), ist die Anwendung eines Kalman-Filters auf die Parameter dieses Modells eine gängige Methode.

0

Die Aufgabe ist der Sprachmodellierungsaufgabe sehr ähnlich. Bei einer Folge von Geschichtswörtern versucht das Modell, eine Wahrscheinlichkeitsverteilung über das Vokabular für das nächste Wort vorherzusagen.

Es gibt Open-Source-Software wie SRILM und NLTK, die einfach Ihre Sequenzen als Eingabesätze erhalten (jede event_id ist ein Wort) und die Aufgabe erledigen.

Verwandte Themen