Vorhersage einer Messreihe

Sie haben ein bestimmtes Projekt zu bearbeiten und wissen nicht, wie Sie an die Aufgabe heran gehen sollen? Sie sind sich nicht sicher, ob Ihr Netzentwurf zu Ihrem Problem passt oder ob es da Optimierungsmöglichkeiten gibt? Ist es überhaupt sinnvoll an Ihre Daten mit einem NN basierten Ansatz heranzugehen? Ist MemBrain das richtige Werkzeug für Ihr Problem und Ihre Infrastruktur?

Hier ist der richtige Platz für diese Art von Fragen.
Post Reply
Hanah
Posts: 4
Joined: Mon 16. Feb 2009, 23:56

Vorhersage einer Messreihe

Post by Hanah »

Hallo zusammen,

mit MemBrain beschäftige ich mich ca. 6 Monate. Zur Zeit bearbeite ich ein konkretes Problem, welches der Vorhersage von Zeitreihen ähnlich scheint. In Wirklichkeit sind es keine Zeitreihen, zumindest nicht der Art, die man von der Vorhersage von Aktienkursen her kennt.

Es handelt sich um Messreihen, bei denen die Messdauer unterschiedlich lang ist. Um diese Messdauer aber mit Hilfe der neuronalen Netzen berechnen/vorhersagen zu können, müssen die Trainings- bzw. Testmengen gleich lang sein. Es schien mir Cascade-Correlation für diese Problem geeignet zu sein, lieferte aber keine sinnvolle Ergebnisse. Kennt jemand ein ähnliches Problem oder hat eine :idea: ?

Vielen Dank :) !

Herzliche Grüße
Hanah
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Vorhersage einer Messreihe

Post by Admin »

Hallo Hanah,

Cascade Correlation funktioniert in der Praxis leider nicht so gut, wie die eine oder andere Publikation darüber erwarten lässt. Ich war auch sehr schnell eher enttäuscht davon, habe lange nach einem evtl. Fehler in meiner Implementierung gesucht. Bin aber letztendlich zu dem Schluss gekommen, dass CC einfach nicht besonders gut für praktische Anwendungen ist. Ich verwende meist RPROP, damit habe ich i.d.R. die besten Resultate.

Zu Deinem Problem: Ich denke, Du musst mehr Details dazu liefern, sonst ist eine Hilfe nicht möglich.

Viele Grüße
Thomas Jetter
Hanah
Posts: 4
Joined: Mon 16. Feb 2009, 23:56

Re: Vorhersage einer Messreihe

Post by Hanah »

Hallo Thomas,

vielen Dank für die schnelle Antwort.

Anstelle langer Erklärung, lade ich einfach ein Datenbeispiel hoch. Das neuronale Netz soll zwei Eingaben und eine Ausgabe haben. Die Netzeingaben sind einer Zeitreihe ähnlich. Die Netzausgabe ist aber nicht anderes als ein stures Zählwerk, welches die zeitliche Änderung der Netzeingaben registriert. Nur die letzte Zahl der Netzausgabe ist vom Interesse und soll berechnet/vorhergesagt werden. Sollte es weiteren Fragen zur Problemstellung geben, beantworte ich sie gerne.

Nachdem ich wenig Erfolg mit CC hatte, frage ich mich, ob ein MLP möglicherweise doch geeignet wäre? Wenn ja, muss ich jeweils ein MLP für jeden Datensatz zuerst einzeln trainieren und die MLPs anschließend zu einem Gesamtnetz zusammenführen und nachtrainieren? Vielen Dank!

Viele Grüße

Hanah
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Vorhersage einer Messreihe

Post by Admin »

Hallo Hanah,

leider ist kein Anhang in Deinem Post zu finden... Wenn's beim Hochladen Probleme gibt, dann als zip oder rar-File versuchen. Habe heute Morgen aber auch die EInstellungen zum Datei-Hochladen etwas entschärft...

Viele Grüße
Thomas Jetter
Hanah
Posts: 4
Joined: Mon 16. Feb 2009, 23:56

Re: Vorhersage einer Messreihe

Post by Hanah »

Hallo Thomas,

dann versuche ich das Datenbeispiel als zip-File hoch zu laden.

Zur Zeit gibt es nur 25 komplette Datensätze, deren Länge zwischen 1000 und 3000 liegt. Wie sie einzeln aussehen, ist auf dem hoch geladenen Beispiel gut erkennbar. Vielen Dank!

Viele Grüße

Hanah
Attachments
Datenbeispiel.zip
Die Exeltabelle wurde im mittleren Bereich ohne Verlust von wichtigen Informationen abgekürzt.
(4.53 KiB) Downloaded 737 times
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Vorhersage einer Messreihe

Post by Admin »

Hallo Hanah,

ich habe mir die Daten mal angesehen, kann aber leider noch nicht erkennen, auf was Du das Netz trainieren willst: Ich sehe zwei Eingabespalten und eine Zeitspalte. Die Zeitspalte scheint einfach von 1 an im Sekundentakt hochzulaufen. Kannst Du noch einmal bitte möglichst präzise formulieren, was Deine Netzeingaben und die Netzausgabe(n) ist/sind, und auf was es Dir genau ankommt? Vielleicht steh' ich ja einfach auf dem Schlauch...

Wenn Du später gerne einen konkreten Netzvorschlag für Dein Problem hättest bräuchte ich übrigens auch einen guten, langen Datensatz als Beispiel (oder besser sogar mehrere) und nicht nur einen kleinen Ausschnitt. Aber eins nach dem anderen...


Viele Grüße ;)
Thomas Jetter
Hanah
Posts: 4
Joined: Mon 16. Feb 2009, 23:56

Re: Vorhersage einer Messreihe

Post by Hanah »

Hallo Thomas,

das Netz soll darauf trainiert werden die zeitliche Dauer zu erkennen bzw. vorherzusagen. Später soll das Netz implementiert werden und bei den Versuchen mitlaufen. Probleme bereitet mir die unterschiedliche Länge der Versuchsdaten. Ich habe bei den Medizinern eine ähnliche Aufgabenstellung entdeckt. Sie haben für das Netz (ein MLP) alle Daten auf die Länge des kürzesten Datensatzes gebracht, waren aber mit dem Ergebnis nicht zufrieden.

Diese Aufgabe ist eine Teilaufgabe aus meiner Diplomarbeit. Ich habe die Daten abgekürzt und die korrekte Namen der Eingaben absichtlich weggelassen, da ich vorher klären muss, ob ich die Daten weitergeben darf. Darum kümmere ich mich gleich morgen. Vielen Dank für den Hinweis!

Viele Grüße

Hana
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Vorhersage einer Messreihe

Post by Admin »

Hallo Hanah,

vielen Dank für die Erklärungen. In Deinem konkreten Beispiel, das Du angehängt hast, ist die Dauer also '1007', verstehe ich das richtig? Die Eingaben laufen nacheinander in das Netz und ab einer bestimmten Eingabenummer (also z.B. ab 80% aller Eingaben einer Zeitreihe) soll das Netz die voraussichtliche Länge der Zeitreihe (also in diesem Fall 1007) vorhersagen? Ist es das, was Du willst? Einer bestimmten Zeitreihe wird also eine einzige, feste Zahl zugeordnet? Ich bin mir immer noch nicht ganz sicher, ob ich es richtig verstanden habe...

Wenn ja, dann ist das nicht gerade ein triviales Problem, denke ich. Ich muss auch erst noch darüber nachdenken, wie man das in MemBrain umsetzen könnte: Der Punkt ist, dass Du mehrere Zeitreihen hast, und diese als verschiedene Muster erkennen willst. Das entspricht ungefähr dem Problem, Melodien zu erkennen. Ich werde der Einfachheit halber im Folgenden mal von 'Melodien' reden, weil ich das anschaulich finde. Wahrscheinlich müsstest Du alle Deine Melodien zu einer einzigen, sehr großen Lesson zusammenfügen, wobei Du als Ausgangswert der Lesson abschnittsweise immer die Zielzeit jedes Abschnittes (jeder 'Melodie') hinzufügen müsstest. Allerdings immer erst ab einem bestimmten relativen Zeitpunkt der Melodie, also z.B. wenn 80% der Melodie in das Netz 'geflossen' sind. Bei allen übrigen Zeitpunkten in der Lesson (bei denen also die Melodie noch nicht erkannt sein muss), musst Du einen sogenannten 'Activation Ignore Value' einsetzen, eine Spezialität, die es in MemBrain gibt: Der 'Activation Ignore Value' kann für jedes Ausgangsneuron in den 'Normalization'-Einstellungen festgelegt und aktiviert werden und muss außerhalb des normalen Aktivierungswertebereiches des Neurons liegen. Wenn das Ausgangsneuron dieses Häkchen gesetzt hat, dann schaut der Teacher beim Training jedes Musters nach, ob der Sollwert des Ausgangs in der Lesson ein Wert ist, der trainiert werden soll, oder ob er gleich dem 'Activation Ignore Value' des Neurons ist und somit ignoriert, also nicht trainiert werden soll.
Das Muster wird somit an das Netz angelegt und es wird ein Think Step während des Trainings durchgeführt, es erfolgt aber für das jeweilige Ausgangsneuron kein Backpropagation-Trainingsschritt für dieses spezielle Muster.

Es mag zunächst etwas schwierig einzusehen sein, was das bringen soll, ich versuche, das mal kurz zu erläutern: Wenn Du versuchst, dem Netz bereits beim Start jeder Melodie beizubringen, um welche Melodie es sich handelt, dann verlangst Du etwas, was nicht geht: Man kann nicht beim ersten Ton einer Melodie sagen, welche Melodie es ist, weil eine Melodie ja eine Abfolge von Tönen ist. Mehr noch: Viele Melodien fangen mit dem selben Ton oder sogar derselben Abfolge von mehreren Tönen an, so dass man während eines gewissen Anfangsteils einer Melodie noch keine Aussage treffen kann. Wenn man das Netz jetzt aber schon beim Anfang einer Melodie dazu zwingen möchte, ein bestimmtes Ausgangssignal zu produzieren, dann versucht man letztlich, das Netz mit widersprüchlichen Daten zu trainieren: Es soll für u.U. sehr ähnliche oder sogar identische Melodieanfänge unterschiedliche Ausgangswerte prodizieren, je nachdem zu welcher Melodie der Anfang gehört. Das kann das Netz nicht leisten und die Qualität des Lernergebnisses wird darunter stark leiden.
War das einigermassen verständlich?

Weiterhin ist klar, dass Du für Dein Problem definitiv ein zeitabhängiges Netz brauchst. Sind Deine Datenpunkte eigentlich immer äquidistant, also z.B. alle im Sekundentakt, oder gibt es auch dabei Unterschiede?
Außerdem brauchst Du jede Menge Daten. 25 Datensätze sind nicht gerade viel, hast Du die Möglichkeit, an mehr Daten ranzukommen?

Viele Grüße
Thomas Jetter
Post Reply