Natural Computation Prof. H. Gläser Praktikumsaufgabe 2 Wir wollen eine Verlaufsprognose für den Deutschen Aktienindex (DAX) erstellen. Diese Prognose verteilt sich auf zwei Praktikumsaufgaben. In dieser Aufgabe werden zunächst nur die Trainingsdaten für das Netz aufbereitet. Sie sollten für die Datenaufbereitung ein kleines Programm schreiben (beliebige Programmiersprache). In der nächsten Praktikumsaufgabe werden Sie dann ein Netz aufbauen, trainieren und analysieren. Die zu verwendenden Daten finden Sie unter dem Verzeichnis www.computer-networking.de\~glaeser unter dem Link Natural Computation ein zip File Aktiendaten.zip. Hier sind die Kurswerte vom DAX, vom Dow Jones (amerikanischer Aktienindex), vom der deutschen Umlaufrendite und der Rendite von US Treasury Bonds enthalten. Diese Daten liefern das Trainingsmaterial für ein neuronales Netz. Diese Daten müssen aufbereitet werden. Datenaufbereitung: 1. Beseitigung von Trendeinflüssen 2. Festlegung von Wertebereichen 3. Normalisieren der Daten 1. Beseitigung von Trendeinflüssen: damit der Wertebereich der Eingangsneuronen optimal genutzt wird, müssen Trendeinflüsse beseitigt werden. Trends sind in diesem Zusammenhang langfristige Bewegungen der Werte, deren Zeitraum über dem Zeitraum der Prognose liegt. Es sollen Prognosen im Zeitraum von 2 Monaten getroffen werden. Hier kommt ein gleitender Durchschnitt (avg) von 4 Monaten in Betracht. An die Eingangsneuron werden also nicht direkt die Kurswerte x selbst angelegt, sondern der Abstand zum gleitenden Mittel: x – avg(x, 4Monate) = x_delta 2. Festlegung von Wertebereichen Jetzt muss delta_x noch normalisiert werden. Dazu wird der Wertebereich ermittelt, in dem 95% der Werte von x_delta liegen. obergrenze ist der Wert der Obergrenze dieses Bereichs und untergrenze ist der Wert der Untergrenze des Bereichs. 5% der Werte sind also entweder kleiner als untergrenze oder größer als obergrenze. Diese Werte werden entsprechend durch untergrenze oder obergrenze ersetzt. 3. Normalisierung der Daten Schließlich werden die Werte auf einen Bereich zwischen 0 und 1 transformiert: x _ delta untergrenze x _ input obergrenze untergrenze Auf diese Art behandeln wir die Werte von dax, dowJones, umlaufrendite und t-bonds. Damit haben wir für jeden Monat ein Eingabemuster für 4 Eingangsneuronen. Dabei ist darauf zu achten, dass alle Werte eines Musters auch tatsächlich denselben Monat haben: also z.B. der dax Wert und der dow Jones Wert denselben Monat haben. Natural Computation Prof. H. Gläser 4. Einfluss von längerfristigen Veränderungen Der Dax könnte jedoch auch durch längerfristige Veränderungen dieser Werte beeinflusst sein (diese Information ist durch die Bereinigung der Trendeinflüsse aus den Daten verschwunden). Daher erzeugen wir jeweils für dax, dowJones, umlaufrendite und t-bonds 3 zusätzliche Datenreihen. Diese Datenreihen sind die Veränderungen des jeweiligen Kurses bezogen auf den letzen Monat, die letzten 3 Monaten und die letzten 6 Monate. Sei t z.B. der Zeitpunkt des aktuellen Musters, dann gilt für die Veränderung der letzten 6 Monate: x_aenderung_6Monate = x(t) – x(t-6Monate) Alle zwölf x_aenderung Datenreihen müssen wie die Kurse selbst mit den obigen Schritten 2 bis 3 aufbereitet werden (Schritt 1 ist nicht nötig, da hier nur Änderungen nicht Absolutwerte betrachtet werden). Insgesamt haben wir also 16 Eingangsneuronen. Jeder Monat entspricht dabei einem Eingabemuster als Trainingsmuster. Doch was ist das zum Trainingsmuster gehörige SollAusgabemuster? 5. Ausgabewert Im Gegensatz zur Vorlesung soll hier die Ausgabe nicht binär kodiert werden. Stattdessen wollen wir den kontinuierlichen Wertebereich eines einzigen Ausgabeneurons nutzen. Dieses Ausgabeneuron soll uns für einen Zeitpunkt t+2Monate in der Zukunft vorhersagen, um welchen Bruchteil sich der Kurs des DAX verändern wird, wenn wir annehmen, dass der Kurs des DAX zum Zeitpunkt t genau eins ist. Dies entspricht der prozentualen Änderung des DAX innerhalb von 2 Monaten. Um also die Ausgabewerte zu den Eingabemustern des Trainingsmaterials zu bestimmen, müssen wir für alle Zeitpunkte t des Trainingsmaterials folgenden Wert als Soll Output Wert des Ausgabeneurons berechnen: dax(t 2Monate) dax(t ) output dax(t ) Auch diese Datenreihe muss wieder nach Punkt 2 und 3 aufbereitet werden. 6. Konvertierung in .pat Eingabeformat für den SNNS Wir werden den SNNS aus der letzten Praktikumsaufgabe benutzen. Daher müssen wir ein Konvertierungsprogramm schreiben, welches unsere Eingabemuster und Ausgabemuster in das Format einer .pat Datei transformiert.