[PYTHON] J'ai échoué lors du clustering avec k-means, mais que dois-je faire (implémentation du noyau k-means)

Quel est cet article?

Un algorithme de clustering typique est k-means. Puisque k-means est un algorithme très simple, il peut conduire à des résultats de clustering malheureux. Par conséquent, dans cet article, nous présenterons l'implémentation du noyau k-means qui mappe l'espace de données à une dimension supérieure par une fonction non linéaire et effectue le clustering.

Exemple de panne k-means

J'ai essayé de regrouper les données suivantes avec k-means.

origin.png

linear.png

En un coup d'œil, il semble qu'il y ait deux groupes dans la partie centrale et la partie extérieure, mais le résultat de regroupement de k-means est comme être séparé par une ligne droite.

kernel k-means Dans le noyau k-means, l'espace de données est mappé à une dimension élevée par une fonction non linéaire et le clustering est effectué. En d'autres termes, lorsque les points de données sont $ x \ dans X $ et la fonction non linéaire $ \ phi $, le clustering est effectué pour $ \ phi (x) $. Il y a plusieurs façons de choisir la fonction non linéaire $ \ phi $, mais plutôt que de choisir $ \ phi $, la fonction du noyau $ k (x_i, x_j) = \ phi (x_i) ^ T \ phi (x_j) $ Est souvent sélectionné (méthode du noyau).

Les fonctions du noyau sont les suivantes.

Le choix d'un noyau linéaire équivaut à k-means.

Clustering avec kernel k-means

J'ai essayé de regrouper les données précédentes avec kernel k-means. J'ai défini le noyau gaussien pour la fonction noyau et 0,1 pour la valeur de $ \ gamma $. Le code source a été téléchargé sur ici.

kernel.png

Vous pouvez voir que le regroupement est possible entre la partie centrale et la partie extérieure.

Autre

Puisque les k-moyennes et les k-moyennes du noyau sont des algorithmes qui dépendent largement des valeurs initiales, il n'est pas toujours possible de se regrouper de cette manière. Dans kernel k-means, il est nécessaire de sélectionner les fonctions du noyau et de définir des hyper paramètres ...

(2015/7/2 Corrigé que le chiffre était légèrement différent)

Les références

Recommended Posts

J'ai échoué lors du clustering avec k-means, mais que dois-je faire (implémentation du noyau k-means)
Que dois-je faire avec DICOM de MPEG2?
Que se passe-t-il lorsque je change les hyper paramètres de SVM (noyau RBF)?
Que dois-je faire avec la structure de répertoires Python après tout?
Un rappel de ce que je suis resté coincé lors du démarrage d'Atcoder avec python
Je souhaite visualiser l'état des transferts de la J League 2020, que dois-je faire?
Que faire quand une PermissionError dans tempfile.mkstemp se produit
estimation personnelle en temps réel (que dois-je faire pour éviter l'estimation d'images en dehors de la catégorie) * Échec.
Que faire lorsque l'imitation est intégrée à Python
J'ai brièvement résumé ce que vous devez garder à l'esprit lorsque vous apprenez avec / sans professeur
Éléments à prendre en compte lors de la mise en œuvre d'Airflow avec docker-compose
[AWS] Que faire lorsque vous souhaitez piper avec Lambda
Que faire lorsqu'une erreur se produit avec import _ssl
Ce qui m'inquiétait lors de l'affichage d'images avec matplotlib
[Python] Que faites-vous avec la visualisation de 4 variables ou plus?
Que faire lorsqu'une partie de l'image d'arrière-plan devient transparente lorsque l'image transparente est combinée avec Oreiller