Ich habe gesehen, dass es mehrere Clustering-Algorithmen gibt (zum Beispiel CHAMELEON oder sogar Spectral Clustering), die die Daten in einen gewichteten (oder manchmal ungewichteten) k-Nächsten-Nachbarn-Graphen konvertieren, basierend auf den Abständen zwischen Punkten / Beobachtungen / Zeilen und Ich habe mich gefragt, wie diese Grafiken generiert werden.
Sind diese Grafiken gerichtet? Wenn ein Punkt A einen anderen Punkt B als nahen Nachbarn hat, Punkt B jedoch keinen Punkt A als nahen Nachbarn hat, wird dann noch eine Kante gezeichnet? Wie werden Gewichte berechnet?
clustering
graph-theory
anymous.asker
quelle
quelle
Antworten:
Jede normalisierte (Dis-) Ähnlichkeitsmatrix kann in die Adjazenzmatrix eines ungerichteten Graphen (gewichtet oder nicht) konvertiert werden. Für einen ungewichteten Graphen möchten Sie empirisch einen Schwellenwert für seine Adjazenzmatrix festlegen, dh einen minimalen Ähnlichkeitswert für eine Verbindung zwischen zwei Knoten. Für eine bestimmte Partition des Diagramms quantifiziert die Modularitätsmetrik die Gesamtstärke seiner Cluster. Durch Maximieren der Modularität erhalten Sie daher die optimale Community-Struktur, die diesem Diagramm entspricht (Clustering).
So beantworten Sie Ihre Fragen:
Die Modularitätsfunktion ist im Grunde die Zielfunktion eines NP-harten kombinatorischen Problems. Es gibt viele (Meta-) Heuristiken, die diese Aufgabe erfüllen, und wenn ich mich nicht irre, ist der beim spektralen Clustering verwendete normalisierte Schnittalgorithmus eine davon. Ich habe keine Erfahrung mit Chameleon, aber das Konzept der Maximierung der Intracluster-Ähnlichkeit bei gleichzeitiger Minimierung der Intercluster-Ähnlichkeit ist bei der Modularitätsoptimierung dasselbe.
Leider gibt es kein Paket (von dem ich weiß), das die Adjazenzmatrixkonvertierung automatisieren kann, da das Finden des optimalen Schwellenwerts ein manueller Prozess ist. Sobald Sie diese Matrix haben, haben R und Mathematica großartige Pakete, um den Rest zu erledigen.
quelle
Standard- Chamäleon wird unter Verwendung eines asymmetrischen k-NN-Algorithmus initialisiert, wobei Parameterk könnte auf eine ausreichend große Anzahl festgelegt werden, z 10 oder abgeleitet von der Datensatzgröße, z k=n−−√ .
Kantengewicht zwischenA und B ist eingestellt auf w(e)=dist(A,B) , wobei der Abstand als euklidischer Abstand (oder jeder andere Abstand, der der dreieckigen Ungleichung entspricht) definiert ist. Der Graph ist nicht gerichtet.
Die Autoren schlagen vor, dass auch ein symmetrisches k-NN für die Graphinitialisierung verwendet werden könnte (wenn ein Punkt A einen anderen Punkt B als nahen Nachbarn hat, Punkt B jedoch keinen Punkt A als nahen Nachbarn hat, wird die Kante nicht erstellt ). Dieser Ansatz wird jedoch aufgrund seiner hohen Rechenkomplexität normalerweise nicht verwendet.
Einige Experimente mit symmetrischem k-NN werden von Lesna, Shatovska, vorgestellt .
Einfachen Datensatz haben:
Sie erstellen ein Diagramm aus k-NN:
Nach der Partitionierung wird das Diagramm stark vereinfacht (mit großenk beim Betteln hat möglicherweise überhaupt keinen Einfluss, da die meisten Kanten beim Partitionieren entfernt werden).
quelle