Le clustering comme réduction de dimensionnalité

10

Je lis un livre "Machine learning with Spark" de Nick Pentreath, et à la page 224-225 l'auteur discute de l'utilisation de K-means comme une forme de réduction de dimensionnalité.

Je n'ai jamais vu ce type de réduction de dimensionnalité, a- t-il un nom ou / et est-il utile pour des formes spécifiques de données ?

Je cite le livre décrivant l'algorithme:

Supposons que nous regroupons nos vecteurs de caractéristiques de haute dimension en utilisant un modèle de regroupement K-means, avec k clusters. Le résultat est un ensemble de k centres de cluster.

Nous pouvons représenter chacun de nos points de données d'origine en termes de distance par rapport à chacun de ces centres de grappes. Autrement dit, nous pouvons calculer la distance d'un point de données à chaque centre de cluster. Le résultat est un ensemble de k distances pour chaque point de données.

Ces k distances peuvent former un nouveau vecteur de dimension k. Nous pouvons maintenant représenter nos données d'origine comme un nouveau vecteur de dimension inférieure, par rapport à la dimension de l'entité d'origine.

L'auteur suggère une distance gaussienne.

Avec 2 clusters pour des données bidimensionnelles, j'ai les éléments suivants:

K-signifie:

K-means avec 2 clusters

Appliquer l'algorithme avec la norme 2:

norme 2

Application de l'algorithme avec une distance gaussienne (application de dnorm (abs (z)):

Gaussien

Code R pour les images précédentes:

set.seed(1)
N1 = 1000
N2 = 500
z1 = rnorm(N1) + 1i * rnorm(N1)
z2 = rnorm(N2, 2, 0.5) + 1i * rnorm(N2, 2, 2)
z = c(z1, z2)

cl = kmeans(cbind(Re(z), Im(z)), centers = 2)

plot(z, col = cl$cluster)

z_center = function(k, cl) {
  return(cl$centers[k,1] + 1i * cl$centers[k,2])
}

xlab = "distance to cluster center 1"
ylab = "distance to cluster center 2"

out_dist = cbind(abs(z - z_center(1, cl)), abs(z - z_center(2, cl)))
plot(out_dist, col = cl$cluster, xlab = xlab, ylab = ylab)
abline(a=0, b=1, col = "blue")

out_dist = cbind(dnorm(abs(z - z_center(1, cl))), dnorm(abs(z - z_center(2, cl))))
plot(out_dist, col = cl$cluster, xlab = xlab, ylab = ylab)
abline(a=0, b=1, col = "blue")
ahstat
la source
1
Notez que dans votre exemple, aucune réduction de dimensionnalité n'a lieu puisque vos données étaient bidimensionnelles au départ et que vous les mappez sur 2 nouvelles dimensions (les distances à chacun de vos 2 clusters). Pour réduire la dimensionnalité de vos données, vous devez utiliser moins de clusters que le nombre de dimensions d'origine dans les données.
Ruben van Bergen
Oui, j'ai fait tout cela en 2D pour permettre de tracer l'image initiale et laisser tout le monde voir la refonte; il ne s'agit donc pas d'une réduction de dimensionnalité dans ce cas. La forme de sortie est similaire pour les données échantillonnées de manière similaire en 3D et avec 2 clusters.
ahstat
4
J'aime le fait que vous insistiez sur la distance par rapport aux centres des grappes. Trop d'analystes de données discrétisent les données et perdent des informations en regroupant les données en grappes "distinctes".
Frank Harrell

Réponses:

6

Je pense que c'est la "méthode centroïde" (ou la méthode étroitement liée "centroidQR") décrite par Park, Jeon et Rosen . Extrait de la thèse de Moon-Gu Jeon :

Notre méthode Centroid projette des données dimensionnelles complètes sur l'espace centroïde de ses classes, ce qui donne une réduction dimensionnelle énorme, réduisant le nombre de dimensions au nombre de classes tout en améliorant la structure de classe d'origine. L'une de ses propriétés intéressantes est que même en utilisant deux mesures de similitude différentes, les résultats de la classification pour l'espace dimensionnel complet et réduit formé par le centroïde sont identiques lorsque la classification centroïde est appliquée. La deuxième méthode, appelée CentroidQR, est une variante de notre méthode Centroid, qui utilise comme espace de projection, k colonnes de matrice orthogonale Q issues de la décomposition QR de la matrice centroïde.

Elle semble également équivalente à la méthode des "groupes multiples" de l'analyse factorielle .

Leo Martins
la source
3

Consultez toute la littérature sur l' indexation pivot .

Mais vous gagnez peu en utilisant k-means. Habituellement, vous pouvez simplement utiliser des points aléatoires comme pivots. Si vous en choisissez assez, ils ne seront pas tous similaires.

A QUIT - Anony-Mousse
la source
Pouvez-vous expliquer pourquoi "vous gagnez peu en utilisant k-means"? Merci
Tagar
Parce que les résultats ne semblent pas meilleurs qu'avec des pivots aléatoires.
A QUIT - Anony-Mousse
Merci! pouvez-vous mettre à jour votre réponse avec un lien vers la technique "d'indexation basée sur le pivot"? Je suppose que c'est la même chose que "utiliser des points aléatoires comme pivots". J'ai essayé de google, mais je ne sais pas si ce que j'obtiens est directement lié à cette approche K-means décrite dans Q.
Tagar
2

Il existe plusieurs façons d'utiliser le clustering comme réduction de dimension. Pour les K-moyennes, vous pouvez également projeter les points (orthogonalement) sur l'espace vectoriel (ou affine) généré par les centres.

Benoit Sanchez
la source