1

Die Frage ist eine Frage, die zuerst kommen sollte: a) die Clusterbildung oder b) die Dimensionalitätsreduktion Algorithmus? Mit anderen Worten, kann ich eine Pseudo (wie es ist nicht wirklich) Dimensionalität Reduktionsmethode wie t-SNE und dann einen Clustering-Algorithmus verwenden, um Cluster zu extrahieren oder sollte die Clustering auf dem ursprünglichen hochdimensionalen Raum durchgeführt werden und verwendet werden nur die Knoten färben? Ist der folgende Code ein guter Start, oder irre ich mich vollständig?Perform Clustering mit t-SNE Dimensionalitätsreduktion

adjMat = g.get_adjacency(attribute='weight') #get the adjacency matrix from a really large graph 
adjMat = np.array(adjMat.data) 
adjMat = adjMat.T #use the incoming interaction vectors 
#initiate the t-SNE algorithm 
tsne = manifold.TSNE() #set dimensionality reduction algorithm 
manifoldCoords = tsne.fit_transform(adjMat) 
#initiate clustering algorithm 
clusteralgorithm = clusterAlgs.KMeans() #set clustering algorithm 
linear_clusters = clusteralgorithm.fit_predict(manifoldCoords) #extract clusters 

Antwort

1

Es ist sehr üblich zuerst die Dimensionalität zu reduzieren, dann Cluster. Ganz einfach, weil das Clustern hochdimensionaler Daten hart ist und die Dimensionalitätsreduzierung es ein wenig "tragbarer" macht.

Solange Sie nicht vergessen, dass Clustering inhärent unzuverlässig ist (also nicht die Ergebnisse vertrauen, aber Studie ihnen) sollten Sie in Ordnung sein.

2

Es ist immer besser, Reduktion der Dimensionalität und dann Clustering durchzuführen.

Der Grund dafür ist dieser Abstand in high dimensional space behave in a strange way. Ein anderes interessantes Phänomen ist, dass das Verhältnis zwischen den nächsten und am weitesten entfernten Punkten nähert 1.

Ich empfehle Ihnen, dies zu lesen question und obwohl es nach Euklidischen Abstand fragt, können Sie viele interessante Informationen im Allgemeinen finden.