[PYTHON] Ich habe beim Clustering mit k-means versagt, aber was soll ich tun (Implementierung des Kernels k-means)

Was ist dieser Artikel?

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.

k-bedeutet Fehlerbeispiel

Ich habe versucht, die folgenden Daten mit k-means zu gruppieren.

origin.png

linear.png

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.

Clustering mit Kernel 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).

kernel.png

Sie können sehen, dass Clustering zwischen dem zentralen Teil und dem äußeren Teil möglich ist.

Andere

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)

Verweise

Recommended Posts

Ich habe beim Clustering mit k-means versagt, aber was soll ich tun (Implementierung des Kernels k-means)
Was soll ich mit DICOM von MPEG2 machen?
Was passiert, wenn ich die Hyperparameter von SVM (RBF-Kernel) ändere?
Was soll ich denn mit der Python-Verzeichnisstruktur machen?
Eine Erinnerung an das, was ich beim Starten von Atcoder mit Python feststeckte
Ich möchte den Transferstatus der 2020 J League visualisieren. Was soll ich tun?
Was tun, wenn ein PermissionError in tempfile.mkstemp auftritt?
Echtzeit-Persönliche Schätzung (Was muss ich tun, um die Schätzung von Bildern außerhalb der Kategorie zu verhindern?) * Fehler.
Was beim Nachahmen zu tun ist, wird in Python eingebettet
Ich habe kurz zusammengefasst, was Sie beim Lernen mit / ohne Lehrer beachten sollten
Dinge, die Sie bei der Implementierung von Airflow mit Docker-Compose beachten sollten
[AWS] Was tun, wenn Sie mit Lambda pfeifen möchten?
Was tun, wenn beim Importieren von _ssl ein Fehler auftritt?
Worüber ich mir Sorgen gemacht habe, als ich Bilder mit matplotlib angezeigt habe
[Python] Was machen Sie mit der Visualisierung von 4 oder mehr Variablen?
Was tun, wenn ein Teil des Hintergrundbilds transparent wird, wenn Sie transparente Bilder mit Pillow kombinieren?