web-dev-qa-db-fra.com

Le clustering k-means peut-il classer?

Je veux savoir si l'algorithme de clustering k-means peut faire la classification?

Si j'ai fait un simple regroupement k-means.

Supposons que j'ai beaucoup de données, j'utilise des groupements à moyennes k-moyennes, puis j'obtiens 2 clusters A, B. et la méthode de calcul du centroïde est la distance euclidienne.

Cluster A à gauche.

Cluster B à droite.

Donc, si j'ai une nouvelle donnée. Que devrais-je faire?

  1. Exécutez à nouveau l'algorithme de clustering k-means et obtenez à quel cluster appartiennent les nouvelles données?

  2. Enregistrez le dernier centroïde et utilisez la distance euclidienne pour calculer les nouvelles données.

  3. autre méthode?

13
Sirius Wang

La méthode la plus simple est bien sûr 2. assigner chaque objet au centroïde le plus proche (techniquement, utilisez la somme des carrés, et non la distance euclidienne; ceci est plus correct pour k-means et vous évite un calcul au carré).

La méthode 1. est fragile, car k-means peut vous donner une solution complètement différente. en particulier si cela ne convenait pas bien à vos données (par exemple, dimension trop élevée, grappes de taille trop différente, trop de grappes, ...)

Cependant, la méthode suivante peut être encore plus raisonnable:

3. Former un classificateur réel.

Oui, vous pouvez utiliser k-means pour produire un partitionnement initial, puis supposez que les partitions k-means pourraient être des classes raisonnables (vous vraiment devriez le valider à un moment donné), puis continuez comme vous le feriez si les données auraient été étiquetées par l'utilisateur.

C'est à dire. lancez k-means, formez un SVM sur les clusters résultants. Ensuite, utilisez SVM pour la classification.

la classification k-NN, ou même l'affectation de chaque objet au centre de cluster le plus proche (option 1) peut être considérée comme un classificateur très simple. Ce dernier est un classificateur 1NN, "formé" sur les centroïdes de cluster uniquement.

17
Anony-Mousse

Oui, nous pouvons faire la classification.

Je ne dirais pas que l'algorithme lui-même (comme le n ° 1) convient particulièrement bien pour classer des points, car l'incorporation de données à classer dans vos données d'entraînement a tendance à être mal vue (sauf si vous avez une système de temps, mais je pense élaborer sur ce serait un peu loin du point).

Pour classer un nouveau point, calculez simplement la distance euclidienne par rapport à chaque centroïde de la grappe pour déterminer celle qui est la plus proche, puis classez-la dans cette grappe.

Il existe des structures de données qui vous permettent de déterminer plus efficacement le centroïde le plus proche (comme un kd-tree ), mais ce qui précède est l’idée de base.

4
Dukeling

Si vous avez déjà effectué un clustering k-means sur vos données pour obtenir deux clusters, vous pouvez utiliser k Plus proches voisins sur le nouveau point de données pour déterminer la classe à laquelle il appartient.

2
Bill the Lizard

Voici une autre méthode:

Je l'ai vu dans "Les éléments de l'apprentissage statistique". Je vais changer un peu la notation. Soit C le nombre de classes et K le nombre de grappes. Maintenant, suivez ces étapes:

  1. Appliquez la classification K-means aux données d'apprentissage de chaque classe séparément, en utilisant K grappes par classe.
  2. Attribuez une étiquette de classe à chacun des clusters C * K.
  3. Classer l'observation x dans la classe du groupe le plus proche.

Cela semble être une approche de Nice pour la classification qui réduit les observations de données en utilisant des grappes.

0
Ayar Paco

Si vous effectuez une analyse en temps réel pour laquelle vous souhaitez reconnaître de nouvelles conditions d'utilisation (ou vous adapter à un système en évolution), vous pouvez choisir un rayon autour des centroïdes pour décider si un nouveau point démarre un nouveau cluster ou doit être inclus dans un existant. (C’est un besoin courant en matière de surveillance des données de l’installation, par exemple lorsque cela peut prendre des années après l’installation avant que certaines conditions d’exploitation ne se présentent.) Si la surveillance en temps réel est votre cas, vérifiez RTEFC ou RTMAC, qui sont efficaces et simples en temps réel. variantes de K-moyennes. RTEFC en particulier, qui est non itératif. Voir http://gregstanleyandassociates.com/whitepapers/BDAC/Clustering/clustering.htm

Oui, vous pouvez l'utiliser pour la classification. Si vous avez décidé de collecter suffisamment de données pour tous les cas possibles, vous pouvez arrêter de mettre à jour les clusters et simplement classer les nouveaux points en fonction du centroïde le plus proche. Comme dans toute méthode en temps réel, il y aura une sensibilité aux valeurs aberrantes - par exemple, une erreur ou une défaillance du capteur lors de l'utilisation des données du capteur. Si vous créez de nouveaux clusters, les valeurs aberrantes pourraient être considérées comme légitimes si l’un des objectifs de la mise en cluster était d’identifier les défauts des capteurs, bien que ce soit le plus utile lorsque vous pouvez effectuer un étiquetage des clusters.

0
gms