Ich lese ein Buch "Maschinelles Lernen mit Funken" von Nick Pentreath und auf Seite 224-225 diskutiert der Autor über die Verwendung von K-Mitteln als Form der Dimensionsreduktion.
Ich habe diese Art der Dimensionsreduktion noch nie gesehen. Hat sie einen Namen oder / und ist sie für bestimmte Datenformen nützlich ?
Ich zitiere das Buch, das den Algorithmus beschreibt:
Angenommen, wir gruppieren unsere hochdimensionalen Merkmalsvektoren mithilfe eines K-Mittel-Clustering-Modells mit k Clustern. Das Ergebnis ist eine Menge von k Clusterzentren.
Wir können jeden unserer ursprünglichen Datenpunkte in Bezug darauf darstellen, wie weit er von jedem dieser Clusterzentren entfernt ist. Das heißt, wir können die Entfernung eines Datenpunkts zu jedem Clusterzentrum berechnen. Das Ergebnis ist ein Satz von k Abständen für jeden Datenpunkt.
Diese k Abstände können einen neuen Vektor der Dimension k bilden. Wir können jetzt unsere Originaldaten als neuen Vektor mit niedrigerer Dimension relativ zur ursprünglichen Feature-Dimension darstellen.
Der Autor schlägt eine Gaußsche Distanz vor.
Mit 2 Clustern für zweidimensionale Daten habe ich Folgendes:
K-bedeutet:
Anwendung des Algorithmus mit Norm 2:
Anwenden des Algorithmus mit einem Gaußschen Abstand (Anwenden von dnorm (abs (z)):
R-Code für die vorherigen Bilder:
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")