Ein typischer Clustering-Algorithmus ist k-means. Da k-means ein sehr einfacher Algorithmus ist, kann dies zu unglücklichen Clustering-Ergebnissen führen. Daher werden wir in diesem Artikel die Implementierung von Kernel-k-means vorstellen, die den Datenraum durch eine nichtlineare Funktion einer höheren Dimension zuordnen und Clustering durchführen.
Ich habe versucht, die folgenden Daten mit k-means zu gruppieren.
Auf den ersten Blick scheint es zwei Cluster im mittleren und im äußeren Teil zu geben, aber das Clustering-Ergebnis von k-means ist wie durch eine gerade Linie getrennt.
kernel k-means Im Kernel k-means wird der Datenraum durch eine nichtlineare Funktion auf eine hohe Dimension abgebildet und eine Clusterbildung durchgeführt. Mit anderen Worten, wenn die Datenpunkte $ x \ in X $ und die nichtlineare Funktion $ \ phi $ sind, wird das Clustering für $ \ phi (x) $ durchgeführt. Es gibt viele Möglichkeiten, die nichtlineare Funktion $ \ phi $ zu wählen, aber anstatt $ \ phi $ zu wählen, ist die Kernelfunktion $ k (x_i, x_j) = \ phi (x_i) ^ T \ phi (x_j) $ Wird oft ausgewählt (Kernel-Methode).
Die Kernelfunktionen sind wie folgt.
Die Auswahl eines linearen Kernels entspricht k-means.
Ich habe versucht, die vorherigen Daten mit Kernel k-means zu gruppieren. Ich habe den Gaußschen Kernel für die Kernelfunktion und 0.1 für den Wert von $ \ gamma $ festgelegt. Der Quellcode wurde auf [hier] hochgeladen (https://github.com/szdr/KernelKMeans).
Sie können sehen, dass Clustering zwischen dem zentralen Teil und dem äußeren Teil möglich ist.
Da k-means und kernel k-means Algorithmen sind, die weitgehend von den Anfangswerten abhängen, ist es nicht immer möglich, auf diese Weise zu clustern. Im Kernel k-means ist es notwendig, Kernelfunktionen auszuwählen und Hyperparameter einzustellen ...
(2015/7/2 Korrigiert, dass die Zahl etwas anders war)
Recommended Posts