Neural network-Algorithmus(s), die Prognose der künftigen Ergebnisse aus der Vergangenheit
War ich arbeiten an einem Algorithmus, wo ich bin da ein bisschen input, und ich bin da die Ausgabe für Sie, und angesichts der Ausgang für 3 Monate (geben oder nehmen) ich brauche einen Weg zu finden/berechnen, was sein könnte die Zukunft Ausgabe.
Nun, dieses problem kann in Bezug auf die Börse, die wir gegeben certaing Einschränkungen und bestimmte Ergebnisse, und wir brauchen die nächsten zu finden.
Ich stolperte über neuronale Netzwerk Börse Vorhersage, können Sie Google es, oder man kann darüber Lesen hier, hier und hier.
Einstieg zu machen, den Algorithmus, ich konnte nicht herausfinden, was sein sollte, die Struktur der Schichten.
Die gegebene Einschränkung:
- Der Ausgang wäre immer integer sein.
- Der Ausgang wäre immer zwischen 1 und 100.
- Es gibt keine genauen input für sagen, nur wie Börse, wir wissen nur, dass der Aktienkurs würde schwanken zw 1 und 100, so dass wir vielleicht (oder nicht?) betrachten Sie das als den einzigen Eingang.
- Wir haben Rekord für die letzten 3 Monate (oder mehr).
Nun, meine erste Frage ist, wie viele Knoten nehme ich für die Eingabe?
Die Ausgabe ist nur eine, feine. Aber wie gesagt, sollte ich 100 Knoten für die Eingabe-Schicht (gegeben, dass der Aktienkurs würde immer integer und würde immer zw 1 und 100?)
Was über die versteckte Schicht? Wie viele Knoten gibt es? Sagen, wenn ich 100 Knoten es auch, dass ich nicht glaube, das würde der Bahn das Netz viel, weil das, was ich denke ist, dass für jeden input, den wir brauchen, zu berücksichtigen, alle vorherigen Eingaben auch.
Sagen, wir sind calulating Ausgang für den 1. Tag des 4. Monat sollten wir noch 90 Knoten im hidden/mittlere Schicht (Vorstellung jedes Monat 30 Tage, für die Einfachheit). Nun gibt es zwei Fälle
- Unsere Vorhersage richtig war und das Ergebnis war genauso, wie wir es vorhergesagt.
- Unsere Prognose ausgefallen ist, und das Ergebnis war anders als das, was wir vorhergesagt.
Was auch immer der Fall sein, wenn wir nun von der Berechnung der Ausgabe für den 2. Tag des 4. Monat, brauchen wir nicht nur die 90-Eingang(s), sondern auch, dass die letzten Ergebnis (und nicht die Prognose, werden es die gleichen sein!) auch, also, wir haben jetzt 91 Knoten in unserer Mitte/hidden layer.
Und so weiter, es würde halten die Erhöhung der Anzahl der Knoten jeder Tag, AFAICT.
So, meine andere Frage ist, wie kann ich definieren/festlegen der Anzahl der Knoten im hidden/mittlere Schicht, wenn seine dynamisch ändern.
Meine Letzte Frage ist, gibt es einen bestimmten Algorithmus gibt (für diese Art Ding/Zeug), die mir nicht bekannt sind? Dass ich mit sollte anstatt Herumspielen mit diesem neuronalen Netzwerk Zeug?
Guter Letzt, gibt es etwas, dass ich möglicherweise nicht vorhanden, die verursachen könnten, mich (und nicht den algo, die ich mache), um vorherzusagen, den Ausgang, ich meine irgendwelche Einschränkungen, oder alles, was möglicherweise schief gehen, ich könnte fehlen?
InformationsquelleAutor der Frage Razort4x | 2012-10-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es viel zu sagen, wie eine Antwort auf Ihre Frage. In der Tat, Ihre Frage behandelt das problem der Zeit-Serie Prognose im Allgemeinen, und neuronale Netze Anwendung für diese Aufgabe. Ich Schreibe hier nur einiger wichtiger Schlüssel, aber nach der Lektüre dieses, sollten Sie möglicherweise Graben in die Google-Ergebnisse für die Abfrage
time series prediction neural network
. Es gibt eine Menge von arbeiten, in denen die Prinzipien abgedeckt sind, in details. Eine Vielzahl von software-Implementierungen (mit source-codes) ist auch vorhanden (hier ist nur eines der Beispiele mit den codes in c++).1) ich muss sagen, dass das problem zu 99% über die zur Vorverarbeitung der Daten und die Wahl der richtigen input - /output-Faktoren, und nur 1% über die konkreten instrument zu verwenden, ob neuronale Netze oder etwas anderes. Nur als Randnotiz, neuronale Netze können intern umzusetzen, die meisten anderen Daten-Analyse-Methoden. Zum Beispiel, können Sie Sie mit einem neuronalen Netzwerk für die Principal Component Analysis (PCA) die in engem Zusammenhang mit SVD, erwähnt in einer anderen Antwort.
2) Es ist sehr selten, dass input - /output-Werte sind streng passen einer bestimmten region. Reallife-Daten können betrachtet werden als unbounded in absoluten Werten (selbst wenn die änderungen scheinen produzieren einen Kanal, es können unten gebrochen werden, gerade in einem moment), aber neuronales Netzwerk arbeiten können in einem stabilen Bedingungen nur. Dies ist der Grund, warum die Daten in der Regel in in ersten Schritten (durch Berechnung des deltas zwischen der i-TEN Punkt und i-1, oder unter
log
aus Ihrem Verhältnis). Ich schlage vor, Sie tun es mit Ihren Daten sowieso, wenn Sie erklären, es ist in [0, 100] - region. Wenn Sie es nicht tun, neuronales Netz wird wahrscheinlich Entartete zu einem sogenannten naiv Prädiktordie eine Prognose mit jedem weiteren Wert, der gleich zum vorherigen.Die Daten normalisiert in [0, 1] oder [-1, +1]. Die zweite ist für den Fall der zeitreihenvorhersage, wo +1 kennzeichnet sich bewegen, und -1 - nach unten verschieben. Verwenden hypertanh Aktivierungsfunktion für die Neuronen in Ihrem Netz.
3) soll Man füttern? NN mit einer Eingabe von Daten aus einer
sliding window
Termine. Zum Beispiel, wenn Sie Daten haben, die für ein Jahr und jeder Punkt ist einen Tag, sollten Sie wählen Sie die Größe der Fenster - sagen wir, einen Monat, und schieben es von Tag zu Tag, von der Vergangenheit in die Zukunft. Den Tag genau auf der rechten Grenze des Fensters ist die zielausgabe für NN. Dies ist ein sehr einfaches Konzept (es gibt viel mehr kompliziert), ich erwähne es nur, weil Sie gefragt, wie mit Daten, die nicht kontinuierlich kommen. Die Antwort ist - Sie brauchen nicht zu ändern/vergrößern Sie Ihre NN jeden Tag. Verwenden Sie einfach eine Konstante Struktur mit einer festen Fenstergröße und "vergessen" (nicht zur NN) zu den ältesten Punkt. Es ist wichtig, dass Sie nicht behandeln alle Daten, die Sie haben, als einen einzigen Eingang, aber teilen es in viele kleine Vektoren und Zug NN auf, so kann das net verallgemeinern Daten und finden Sie die Regelmäßigkeit.4) Die Größe der Schiebefenster ist Ihr NN input-Größe. Die Ausgabe-Größe ist 1. Sollten Sie spielen mit verdeckten Schicht Größe zu finden, eine bessere Leistung. Beginnen Sie mit einem Wert somethat, die zwischen input und output, zum Beispiel sqrt(in*).
Laut neuesten Forschungen, Rekurrenten Neuronalen Netzen scheinen inzwischen besser für die Aufgaben der Zeit-Serie Prognose.
InformationsquelleAutor der Antwort Stan
Ich Stimme mit Stan, wenn er sagt
Habe ich angewandte Neuronale Netze für 25+ Jahre zu verschiedenen Luft-und Raumfahrt-Anwendungen, einschließlich Hubschrauber-flight-control - Einstellung bis der Eingabe/Ausgabe-Daten-set ist alles - alles andere ist zweitrangig.
Ich bin erstaunt, in smirkman Kommentar, dass Neuronale Netzwerke wurden schnell fallen gelassen ", wie Sie produziert nichts, lohnt sich" - das sagt mir, dass wer auch immer die Arbeit mit Neuronalen Netzen hatte wenig Erfahrung mit Ihnen.
Gegeben, dass das Thema diskutiert neural network Börse Vorhersage - ich werde sagen, dass ich gemacht habe, es funktioniert. Test-Ergebnisse sind abrufbar über meine website unter http://www.nwtai.com.
Ich weiß nicht, wie es geschah, aber es gibt genügend interessante Daten, die Sie machen möchten erforschen, mit Neuronalen Netzen mehr ernst.
InformationsquelleAutor der Antwort Mike
Diese Art von problem war besonders gut erforscht, die von tausenden von Menschen, die gewinnen wollte, der 1M$ NetFlix prize.
Früheren Veröffentlichungen waren oft basierend auf K-Nächsten Nachbarn. Spätere Einsendungen wurden mit einem SingulärwertzerlegungSupport-Vektor-Maschinen und Stochastic Gradient Descent. Der Gewinner verwendet eine Mischung aus mehreren Techniken.
Lektüre der exzellenten Community-Foren wird Ihnen viele Erkenntnisse über die besten Methoden zur Vorhersage der Zukunft aus der Vergangenheit. Sie finden auch Belastungen der Quellcode für die verschiedenen Methoden.
Lustig, neuronale Netze wurden schnell fallen gelassen, als Sie produziert nichts, lohnt sich (und ich persönlich habe noch um zu sehen, eine nicht-triviale NN produzieren nichts von Wert).
Wenn Sie heraus beginnen, würde ich vorschlagen, SVD als erste Weg; es ist ganz einfach zu machen und ergibt oft überraschende Einblicke in Daten.
Glück!
InformationsquelleAutor der Antwort smirkingman