Codebook-Warps

Ein Kardinalproblem bei allen Clusteringverfahren ist, daß man die adäquate Anzahl Codebooks/Protoypen nicht kennt und die Verfahren außerdem sehr sensibel auf deren korrekte Initialisierung reagieren. Es gibt entsprechend häufig schlechte Ergebnisse, die aus einer falschen Anzahl Prototypen oder aus lokalen Minima resultieren. Prinzipiell kann es keine optimale Lösung für dieses Dilemma geben (NP schwierig und so ...) - das heißt, man kann ungestraft schöne Heuristiken ausprobieren.

Mögliche Ansätze:

>>> Lokalen Minima bei überwachtem Clustering begegnet man durch Prototyp-Umsetzen. Jeder Prototyp erhält eine Zahl, die seinen Nutzen angibt. Die unnützen Prototypen werden an die Stelle geeigneter (z.B. noch falscher oder weit von anderen Prototypen entfernter) Daten gesetzt.

>>> Die korrekte Anzahl von Prototypen kann man adaptiv erhalten, wenn man dem Algorithmus das Zufügen und Wegstreichen von Prototypen nach Bedarf gestattet.

>>> Die korrekte Anzahl Prototypen und deren Stelle kann man auch durch einen GA ausfindig machen. Eine einfache Möglichkeit für eine Stringcodieung der Individuen ist, Clusterings durch eine Aufteilung der Daten auf Protoypen festzulegen. Die Prototypen selbst berechnet man dann als Mittelpunkt der Daten. Daß das eine andere, als die durch den String intendierte Klassenaufteilung ergeben kann, ist klar. Bewertung der einzelnen Individuen kann bei überwachtem Clustering durch den Fehler auf einer unabhängigen Testmenge geschehen, bei unüberwachtem Clustering z.B. durch den gemittelten Abstand der Daten zu den nächsten Protoypen + Strafterme für Lösungen mit vielen Prototypen (sonst würde man nämlcih einfach in jedes Datum einen Prototyp legen ...)


back