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:
Appliquer l'algorithme avec la norme 2:
Application de l'algorithme avec une distance gaussienne (application de dnorm (abs (z)):
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")
Réponses:
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 :
Elle semble également équivalente à la méthode des "groupes multiples" de l'analyse factorielle .
la source
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.
la source
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.
la source