Klassifikation mittels Kohonen-Netz

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
gothax
Posts: 3
Joined: Sun 7. Mar 2010, 10:46

Klassifikation mittels Kohonen-Netz

Post by gothax »

Hallo,

ich beschäftige mich gerade mit einem Projekt, in dem es darum geht Zeitreihen mittels Kohonen-Netzen zu klassifizieren. Bei diesen Zeitreihen handelt es sich um Kbps die minütlich angegeben sind. Das Netz soll selbstständig gewisse Strukturen erkennen und entsprechend Klassen dafür schaffen/bzw. diese Strukturen Klassen zuordnen.

Da das Netz allerdings nicht wirklich Daten kurzzeitig speichern kann, müsste ich theoretisch, in Abhängigkeit von meinem gewählten Zeitfenster die Menge der Eingabeneuronen wählen. Das heißt, wenn ich je 120 Minuten klassifizieren will, habe ich 120 Werte und bräuchte 120 Eingabeneuronen. Da dieser Ansatz natürlich sehr unflexibel ist, habe ich nun folgenden gewählt. Ich habe versucht eine Zeitreihe mit statistischen Parametern bzw. Merkmal so gut wie möglich zu charakterisieren, um die Größe der Eingabeneuronen konstant zu halten, unabhängig davon welches Zeitfenster ich wähle. Darunter fallen Merkmale wie Minimum, Maximum, arithmetisches Mittel, Median. Standardabweichung usw.

Probieren geht zwar über studieren, dennoch wollte ich mir Ratschläge bzgl. meiner Vorgehensweise holen. Dazu ist mir auch nicht ganz bewusst wie groß letztendendes die Wettbewerbsschicht (Kohonen-Schicht) werden soll. Dazu würd ich gern wissen ob eine spezielle Datentransformation unbedingt notwendig ist (z. B. Begrenzen auf Intervall [0,1]: bei Kohonen-Netzen wird immer der Abstand gemessen, so dass ich eigentlich nicht auf den Wertebereich einer bestimmten Aktivierungsfunktion abhängig bin, weshalb ich VERMUTE, dass ich das nicht müsste. Falls ich etwas übersehe, bitte korrigieren)

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

Re: Klassifikation mittels Kohonen-Netz

Post by Admin »

gothax wrote:Dazu würd ich gern wissen ob eine spezielle Datentransformation unbedingt notwendig ist (z. B. Begrenzen auf Intervall [0,1]: bei Kohonen-Netzen wird immer der Abstand gemessen, so dass ich eigentlich nicht auf den Wertebereich einer bestimmten Aktivierungsfunktion abhängig bin, weshalb ich VERMUTE, dass ich das nicht müsste. Falls ich etwas übersehe, bitte korrigieren)
Die Frage verstehe ich leider nicht ganz: Geht es darum, für die Ausgangsneuronen eine andere Aktivierungsfunktion als 'MIN EUCLID DIST' zu wählen?
Das wird nicht hinhauen, Kohonennetze basieren auf einer Aktivierung, die dann maximal wird, wenn die euklidische Distanz der Input-Links zum Input-Vektor minimal wird. Das kann nur die Aktivierungsfunktion 'MIN EUCLID DIST', die bei einem Kohonennetz dementsprechend für alle Ausgangsneuronen gewählt werden muss.

Vielleicht verstehe ich aber die Frage auch nicht ganz korrekt?

Viele Grüße
Thomas Jetter
gothax
Posts: 3
Joined: Sun 7. Mar 2010, 10:46

Re: Klassifikation mittels Kohonen-Netz

Post by gothax »

Entschuldigung, die Frage war wirklich etwas überladen. Eigentlich wollte ich lediglich wissen ob eine Skalierung der Daten beispielsweise auf ein Intervall von [0,1] unbedingt notwendig ist.

Denn eine Neuskalierung der statistischen Parameter, die ich ins Netz einspeise (also Min, Max, Standardabweichung...) auf ein Intervall [0,1] würde für mich keinen Sinn machen, da die Werte der Parameter untereinander nicht vergleichbar sind.

Das mit der Aktivierungsfunktion (euklidischer Abstand) ist mir natürlich klar, ich will hier keine andere Funktion wählen.

Ich hoffe ich konnte es diesmal verständlicher formulieren :D
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Klassifikation mittels Kohonen-Netz

Post by Admin »

Für die Input-Neuronen sollte 'IDENT' oder 'IDENT 0 TO 1' gewählt werden.
MemBrain benötigt auch bei den Input-Neuronen intern immer Werte von 0..1 oder -1..1, je nach Aktivierungsfunktion. Diese Normalisierung erledigt MemBrain aber selbst über die Normalisierungseinstellungen der Input-Neuronen.
Konkret bedutet das, dass Sie bei den Neuronen, die Eingangsdaten außerhalb 0..1 bzw. -1..1 erhalten, die Normalisierungsseinstellungen auf den tatsächlichen Zielwertebereich einstellen müssen.
Wo Sie nur Werte innerhalb des natürlichen Aktivierungsbereichs des Neurons einspeisen, müssen Sie die Normalisierung des Neurons nicht anpassen. Es kann aber hilfreich sein, dies trotzdem zu tun, wenn nämlich Ihr Eingangswertebereich sehr viel kleiner als 0..1 bzw. -1..1 ist. Damit erhöhen Sie die Ausflösung, mit der Ihre Daten netzintern repräsentiert werden.

Beantwortet das Ihre Frage? So ganz sicher bin ich mir immer noch nicht ;-)

Viele Grüße
Thomas Jetter
gothax
Posts: 3
Joined: Sun 7. Mar 2010, 10:46

Re: Klassifikation mittels Kohonen-Netz

Post by gothax »

Danke für die Antwort. Meine Frage war eher allgemein auf Kohonen-Netze bezogen. Da habe ich im Buch von Teuvo Kohonen noch einmal nachgelesen, dass der Eingabebereich nicht ZWINGEND zwischen 0 und 1 normiert werden muss. Fuer Membrain habe ich dann ohnehin nochmal meine Werte in dieses Intervall skaliert, ungeachtet dessen, dass Membrain das intern mit der von dir angegeben Funktion schon macht (ich will die Daten ggf noch weiter verarbeiten).

Ich habe noch nicht viel Erfahrung mit Membrain daher wollte ich auch fragen, ob es eine Funktion gibt (ich habe das Manual durchsucht aber nichts konkretes gefunden, also Entschuldigung für den Fall, dass es doch drin stand :D ), die mir meine Eingangsdaten direkt Clustern zuordnet, so dass ich konkret weiss, welche Daten zusammengehören, bzw. ob diese Erkenntnisse in einer Datei vermerkt werden.
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Klassifikation mittels Kohonen-Netz

Post by Admin »

gothax wrote:fragen, ob es eine Funktion gibt, die mir meine Eingangsdaten direkt Clustern zuordnet, so dass ich konkret weiss, welche Daten zusammengehören, bzw. ob diese Erkenntnisse in einer Datei vermerkt werden.
Teilweise: Man kann sich das momentane 'Winner-Neuron' anzeigen lassen und man kann dem Teacher sagen, dass er das Winner-Neuron entsprechend des momentan angelegten Musters umbenennen soll. Damit bekommt man in der Kohonen-Map alle Namen von allen Eingangsmustern, mit Ausnahme der Muster, die das selbe Winner-Neuron erzeugen und somit von einem Folgemuster 'überschrieben' werden.
Damit arbeitet auch das Kohonen-Beispiel auf der Homepage: Die Muster sind benannt mit '1' bis '100' und dementsprechend werden die Ausgabeneuronen nach diesen Musternamen umbenannt. Da sich dieses Beispiel während des Trainings komplett entflicht, kann man nach Abschluss des Trainings alle Musternamen in der Kohonen-Map finden.

Darüberhinausgehende Analysen müsste man durch Skripts implementieren. Es gibt auch eine Skriptfunktion, die das Winner-Neuron nach einem 'Think Step' zurückliefert.

Viele Grüße
Thomas Jetter
Post Reply