ISODATA Anleitung v1.0.5



Inhalt
1.0  Bedienung der Oberfläche
1.1  TAB 'Initialisierung'
1.1.1  Punkte setzen
1.1.2  Erzeugen von Prototypen
1.1.3  Konfigurierung des Algorithmus
1.2  TAB 'Algorithmus starten'
1.2.1  Starten des Algorithmus
1.2.2  Reset Optionen
1.3  TAB 'Debugging'
1.4  Visualisierungsmöglichkeiten
1.5  Statusleiste
(c) 2005 by KaySoft


1.0 Bedienung der Oberfläche

Der ISODATA Algorithmus (Iterative Selbstorganisierende Analyse Techniken) wird sehr oft in vielen Applikationen genutzt. Wie beim K-Means Algorithmus werden die Clusterzentren iterativ aus der Durchschnittsentfernung ihrer Muster ermittelt. Zusätzlich werden verschiedene heuristische Funktionen mit einbezogen, welche erfolgreich in einer Vielzahl von Mustererkennungs-Applikationen implementiert wurden.



1.1 TAB 'Initialisierung'
 

In diesem TAB (Reiter) können alle wichtigen Einstellungen wie Punkte (Muster) / Prototypen setzen, eine Datei laden, Initialisierung der Prototypen und die Konfiguration des Algorithmus vorgenommen werden.


1.1.1 Punkte setzen
 

In diesem Bereich können Sie entweder Punkte/Prototypen per Maus oder durch direkte Koordinateneingabe hinzufügen.
Ein gespeicherter Datensatz kann durch drücken des 'Laden'-Button ausgewählt und geladen werden.



 

Mit dieser Einstellung können Sie Eingabevektoren (auch Punkte oder Muster genannt) nach belieben mit der Maus hinzufügen.

 Beispiel ohne Prototypvektoren
LINKE Maustaste: 

Einen Eingabevektor hinzufügen, oder einen ausgewählten (Eingabevektor färbt sich gelb) verschieben (dabei muss die Maustaste dauerhaft gedrückt werden).

RECHTE Maustaste: 

Es wird ebenfalls ein Eingabevektor hinzugefügt, aber wenn die Maus dabei nicht bewegt wird, dann wird dieser nicht ausgewählt (gelb markiert) und durch erneutes drücken der Maustaste wird einen weiterer Eingabevektor auf die selbe Position hinzugefügt.
Ein ausgewählter Eingabevektor kann durch anklicken gelöscht werden.




 

Mit dieser Einstellung können Sie Prototypvektoren (anhand dieser 'Punkte' wird die Clusterzugehörigkeit nach dem Isodata-Algorithmus ermittelt) nach belieben mit der Maus hinzufügen.

 Beispiel mit Prototypvektoren
LINKE Maustaste: 

Einen Prototypvektor hinzufügen, oder einen ausgewählten (Prototypvektor färbt sich gelb) verschieben (dabei muss die Maustaste dauerhaft gedrückt werden).

RECHTE Maustaste: 

Es wird ebenfalls ein Prototypvektor hinzugefügt, aber wenn die Maus dabei nicht bewegt wird, dann wird dieser nicht ausgewählt (gelb markiert) und durch erneutes drücken der Maustaste wird einen weiterer Prototypvektor auf die selbe Position hinzugefügt.
Ein ausgewählter Prototypvektor kann durch anklicken gelöscht werden.

Info: 

Es werden immer die kürzesten Entfernungen zwischen den Eingabevektoren zu allen Prototypen berechnet und die kützesten Verbindungen eingezeichnet. Alle so entstandenen Zugehörigkeiten von Eingabevektoren zu Prototypen nennt man Cluster.
Im Beispielbild sind somit 2 Cluster entstanden.




 

Mit dieser Einstellung können Sie Eingabevektoren in Prototypvektoren umwandeln und andersrum. Außerdem können Eingabevektoren gesetzt werden.

 Beispiel
LINKE Maustaste: 

Einen Eingabevektor hinzufügen, oder einen ausgewählten Eingabevektor in einen Prototypvektor umwandeln. Dieser kann, nachdem er wieder ausgewählt wurde, verschoben werden (dabei muss die Maustaste dauerhaft gedrückt sein).

RECHTE Maustaste: 

Es wird ebenfalls ein Eingabevektor hinzugefügt, aber wenn die Maus dabei nicht bewegt wird, dann wird dieser nicht ausgewählt (gelb markiert) und durch erneutes drücken der Maustaste wird einen weiterer Eingabevektor auf die selbe Position hinzugefügt.
Ein ausgewählter Eingabevektor wird durch anklicken gelöscht und ein ausgewählter Prototypvektor wird durch anklicken in einen Eingabevektor umgewandelt.



 

In diesem Bereich können Sie Eingabe- oder Prototypvektoren manuell durch die Eingabe der Koordinaten (die zwischen 0 und 600 liegen müssen) hinzufügen.


 

Benutzen Sie diese Einstellung um Eingabe-vektoren hinzuzufügen.

    

Benutzen Sie diese Einstellung um Prototyp-vektoren hinzuzufügen.



 

Benutzen Sie den 'Laden' - Button um eine Datei *.iso oder auch jede andere (Format: x-Koordinate y-Koordinate und dazwischen kann jedes Trennzeichen stehen) zu Laden und den 'Löschen' - Button um alle gesetzten Eingabe- und Prototypvektoren zu löschen.


1.1.2 Erzeugen von Prototypen
 

In diesem Bereich können Sie Prototypvektoren automatisch generieren lassen. Dabei werden zwei Modi unterstützt:

zufällig: 

Die Prototypen werden zufällig in dem Bereich der kleinsten/größten X/Y - Koordinate der Eingabevektoren gesetzt.

 
Datengetrieben: 

Die Prototypen werden genau auf Eingabevektoren gesetzt, ebenfalls zufällig.


doppelte möglich:
Legt fest, ob es möglich sein soll, das Prototypvektoren auf gleiche Positionen gesetzt werden dürfen.

Anzahl Prototypen:
Stellen Sie hier die Anzahl der zu erzeugenden Prototypvektoren ein.

1.1.3 Konfigurierung des Algorithmus
 

Anzahl der Iterationen:
Legt die maximal Anzahl der Iterationen fest, nach dem der Algorithmus spätestens beendet wird.

Minimale Clustergröße:
Legt fest, wieviele Eingabevektoren mindestens zu einem Prototypvektor gehören müssen, damit ein Cluster entsteht. Sind es weniger, wird der entsprechende Prototypvektor gelöscht und die Eingabevektoren anderen Prototypvektoren zugeordnet.


gewünschte Clusterzahl:
Hier stellen Sie die gewünschte Clusteranzahl ein, die möglichst am Ende des Algorithmus herauskommen soll. An diesem Wert orientiert sich der Algorithmus allerdings nur, es können am Ende durchaus mehr oder weniger Cluster entstanden sein.

Max. Anzahl Clustervereinigungen:
Legt fest, wieviele Prototypenpaare (Cluster) bei einer Iteration gleichzeitig vereint werden können.

Teilungsbruch Lambda:
Dieser Wert besitzt einen Wertebereich der zwischen 0 und 1 liegt. Wird Lambda groß gewählt, werden bei der Clusterteilung die 2 neuen Cluster weiter auseinander, bei einem kleineren Lambda weiter zusammen angelegt.

Standardabweichungsschwelle (zum Teilen):
Legt fest, ab welcher Schwelle (Wert) ein Cluster geteilt werden soll. Der optimale Wert muss durch probieren ermittelt werden. Eine gute Hilfe stellt dabei der Debug-Modus dar, wo man genau den Wert ablesen kann, der zum Teilen der Cluster führen würde.

Vereinigungsschwelle:
Dieser Wert ist genau das Gegenstück zur vorherigen Einstellung und legt fest, wann 2 Cluster vereinigt werden. Auch hier ist zum ermitteln des optimalen Wertes der Debug-Modus eine große Hilfe.

Toleranz Epsilon:
Die Clusterzentren verschieben sich von Schritt zu Schritt des Algorithmus. Wenn diese Verschiebung aller Cluster unterhalb von Epsilon liegt, dann wird in Schritt 4 die Variable NC = 0 gesetzt. Wenn NC in Schritt 9 = 0 ist, dann wird der Algorithmus abgebrochen und ist beendet.

Eingabe-Test:
Der Button 'Eingabe-Test' prüft alle Eingaben auf korrekte Werte und gibt gegebenenfalls eine Fehlermeldung aus. Dieser Button muss nicht verwendet werden, falls Werte nicht korrekt sind, wird das spätestens beim starten des Algorithmus angezeigt.

1.2 TAB 'Algorithmus starten'
 

In diesem TAB (Reiter) können Sie den Algorithmus Schritt für Schritt oder auch im 'Auto'-Modus ausführen (dabei wird jeder Schritt angezeigt), oder den Algorithmus in verschiedene Ausgangssituationen zurücksetzen.


1.2.1 Starten des Algorithmus
 

Durch drücken des 'GO'-Button wird jeweils 1 Schritt des Algorithmus abgearbeitet.
Möchte man nicht ständig den Button drücken, so kann man bei Auto einen Haken setzen. Der Algorithmus wird dann automatisch Schrittweise, in der Geschwindigkeit die per Schieberegler eingestellt wurde (hier im Beispiel 500ms), ausgeführt.


100ms pro Schritt

ACHTUNG:
Solange der Algorithmus läuft, können keine Eingabe- und Prototypvektoren hinzugefügt/geändert oder gelöscht werden. Außerdem ist das TAB 'Initialisierung' gesperrt!









1.2.2 Reset Optionen
 

Um den Algorithmus ein erneutes mal starten zu können, muss er zurückgesetzt werden. Dafür gibt es verschiedene Möglichkeiten:

Prototypen löschen:
Der Algorithmus wird zurückgesetzt und alle Prototypvektoren gelöscht. Um den Algorithmus wieder starten zu können, müssen neue Prototypen definiert werden.

Prototypen wie nach Laden:
Nachdem eine *.iso - Datei geladen wurde, werden die Positionen der Prototypvektoren gemerkt. Ganz egal wie Sie die Positionen danach verändern (oder ob Sie Prototypen löschen / hinzufügen) mit dieser Einstellung können Sie den gemerkten Zustand immer wieder herstellen. Der Algorithmus wird ebenfalls zurückgesetzt.

Prototypen wie vor Algorithmus:
Sobald Sie den Algorithmus starten, werden die Positionen der Prototypvektoren gemerkt. Ganz egal wie sich diese Positionen während des Algorithmus verändern, mit dieser Einstellung können Sie den gemerkten Zustand immer wieder herstellen. Der Algorithmus wird ebenfalls zurückgesetzt.

nur Algorithmus zurücksetzen:
Nur der Algorithmus wird zurückgesetzt. Die aktuelle Lage der Prototypvektoren wird nicht verändert.

1.3 TAB 'Debugging'
 

Für alle die den Algorithmus Schritt für Schritt nachvollziehen möchten, finden auf diesem TAB (Reiter) die nötigen Einstellungen.

Wählen Sie im linken Bereich die Schritte aus, die Sie debuggen möchten. Auf der rechten Seite sind nocheinmal alle Schritte kurz zusammengefasst.

Wichtig ist, das Sie einen Hanken bei Debuggen setzen! Dies wird automatisch gemacht, wenn das Debugfenster durch klicken auf den 'Show Debug' - Button geöffnet wird.

Durch drücken des 'Lösche Inhalt' - Button wird der Inhalt des Debugfensters gelöscht und durch drücken des 'Inhalt Speichern' - Button wird der Inhalt des Debugfenster in eine Textdatei geschrieben.

Mit den Button 'Aktivieren' und 'Deaktivieren' können Sie alle Haken für die zu debuggenden Schritte setzen bzw. löschen.


1.4 Visualisierungsmöglichkeiten
 

Hier kann man verschiedene Elemente ein- bzw. ausblenden lassen und die Größe der Punkte (Eingabe- / Prototypvektoren) festlegen.

Tote Prototypen: sind Prototypvektoren die z.B. durch eine Clustervereinigung weggefallen sind (diese werden als graue Punkte dargestellt).

 
 

Durch drücken des 'Hilfe' - Button öffnet sich diese Datei.

Alle Einstellungen (Eingabe- / Prototypvektoren, Initialisierungen, Anzeige-möglichkeiten, usw.) können durch drücken des 'Speichern' - Button in einer *.iso - Datei gespeichert werden.


1.5 Statusleiste

 Zeigt die aktuelle Anzahl der gebildeten Cluster.
 Zeigt die Anzahl verwendeter Eingabevektoren.
 

Zeigt die aktuelle Position der Maus im Feldbereich, oder falls ein Eingabe- oder Prototypvektor (wie oben im Beispiel der gelbe) ausgewählt wurde, dessen Position.

 

Wenn ein Prototypvektor ausgewählt wird, wird hier die Anzahl der Eingabevektoren angezeigt, die zu diesem die kürzeste Entfernung besitzen. Im obrigen Beispiel sind das fünf.

 Wenn der Algorithmus läuft wird hier die aktuelle Anzahl der Iterationen angezeigt.
 Wenn der Algorithmus läuft wird hier die aktuelle globale Clusterentfernung angezeigt.
 Zeigt die Anzahl der Toten Prototypen an, die z.B. durch Clustervereinigung entstanden sind.