Es sei angenommen , dass wir eine Reihe von Elementen haben E und eine Ähnlichkeit ( nicht Abstand ) Funktion sim (ei, ej) zwischen zwei Elementen ei, ej ∈ E .
Wie können wir die Elemente von E mit sim (effizient) clustern ?
k - bedeutet zum Beispiel, dass ein gegebenes k erforderlich ist, für das Canopy Clustering sind zwei Schwellenwerte erforderlich. Was ist, wenn wir solche vordefinierten Parameter nicht wollen?
Beachten Sie, dass sim nicht unbedingt eine Metrik ist (dh die Dreiecksungleichung kann gelten oder auch nicht). Außerdem spielt es keine Rolle, ob die Cluster disjunkt sind (Partitionen von E ).
clustering
algorithms
similarity
vefthym
quelle
quelle
1-sim(ei, ej) = Distance
. Mit der Distanzmetrik können Sie beispielsweise hierarchische Clustering anwenden. Wenn Sie von der Wurzel aus nach unten gehen, werden Sie sehen, auf welcher Ebene der Granularitätscluster für Ihr spezielles Problem Sinn macht.Antworten:
Ich denke, eine Reihe von Clustering-Algorithmen, die normalerweise eine Metrik verwenden, stützen sich nicht auf die Metrikeigenschaften (abgesehen von der Kommutativität, aber ich denke, das hätten Sie hier). DBSCAN verwendet beispielsweise Epsilon-Nachbarschaften um einen Punkt. Es gibt nichts, was speziell besagt, dass die Dreiecksungleichheit von Bedeutung ist. Daher können Sie wahrscheinlich DBSCAN verwenden, obwohl Sie möglicherweise einen nicht standardmäßigen räumlichen Index ausführen müssen, um in Ihrem Fall eine effiziente Suche durchzuführen. Ihre Version von epsilon-neighbourhood ist wahrscheinlich eher sim> 1 / epsilon als umgekehrt. Gleiche Geschichte mit k-means und verwandten Algorithmen.
Können Sie eine Metrik aus Ihrer Ähnlichkeit konstruieren? Eine Möglichkeit: dist (ei, ej) = min (sim (ei, ek) + sim (ek, ej)) für alle k ... Alternativ können Sie eine Obergrenze angeben, so dass sim (ei, ej) <sim (ei, ek) + sim (ek, ej) + d, für alle k und eine positive Konstante d? Intuitiv bedeuten große sim-Werte, dass sie näher beieinander liegen: ist 1 / sim metrisch? Was ist mit 1 / (sim + Konstante)? Was ist mit min (1 / sim (ei, ek) + 1 / sim (ek, ej)) für alle k? (das letzte ist garantiert eine Metrik, übrigens)
Eine alternative Konstruktion einer Metrik ist das Einbetten. In einem ersten Schritt können Sie versuchen, Ihre Punkte ei -> xi so abzubilden, dass xi die Summe (abs (sim (ei, ej) - f (dist (xi, xj))) für eine geeignete Funktion f und Metrik minimiert dist. Die Funktion f wandelt die Distanz in der Einbettung in einen ähnlichen Wert um, Sie müssten ein wenig experimentieren, aber 1 / dist oder exp ^ -dist sind gute Ausgangspunkte. Sie müssten auch am besten experimentieren Dimension für xi. Von dort aus können Sie konventionelles Clustering für xi verwenden. Die Idee hier ist, dass Sie Ihre Abstände in der Einbettung fast (im besten Sinne) in Ähnlichkeitswerte umwandeln können, damit sie korrekt geclustert werden.
Bei Verwendung vordefinierter Parameter können alle Algorithmen optimiert werden. DBSCAN kann die Anzahl der Cluster ermitteln, Sie müssen ihm jedoch noch einige Parameter zuweisen. Im Allgemeinen erfordert die Optimierung mehrere Durchläufe des Algorithmus mit unterschiedlichen Werten für die einstellbaren Parameter, zusammen mit einer Funktion, die die Güte des Clusterings bewertet (entweder separat berechnet, vom Clustering-Algorithmus selbst bereitgestellt oder nur mit einem Augenzwinkern versehen :) Wenn das Zeichen von Ihre Daten ändern sich nicht, Sie können sie einmal einstellen und dann diese festen Parameter verwenden. Wenn es sich ändert, müssen Sie für jeden Lauf abstimmen. Sie können das herausfinden, indem Sie für jeden Lauf abstimmen und dann vergleichen, wie gut die Parameter von einem Lauf auf einen anderen wirken, verglichen mit den speziell dafür abgestimmten Parametern.
quelle
Alex machte eine Reihe von guten Punkten, obwohl ich vielleicht etwas auf seine Implikation zurückschieben muss, dass DBSCAN der beste Clustering-Algorithmus ist, der hier verwendet werden kann. Abhängig von Ihrer Implementierung und davon, ob Sie beschleunigte Indizes verwenden oder nicht (viele Implementierungen tun dies nicht), ist Ihre zeitliche und räumliche Komplexität alles
O(n2)
andere als ideal.Persönlich sind meine Go-to-Clustering-Algorithmen OpenOrd für Winner-Takes-All-Clustering und FLAME für Fuzzy-Clustering. Beiden Methoden ist es gleichgültig, ob es sich bei den verwendeten Metriken um Ähnlichkeit oder Distanz handelt (insbesondere FLAME ist in beiden Konstruktionen nahezu identisch). Die Implementierung von OpenOrd in Gephi ist
O(nlogn)
und ist bekanntermaßen skalierbarer als alle anderen im Gephi-Paket enthaltenen Clustering-Algorithmen.FLAME hingegen ist großartig, wenn Sie nach einer Fuzzy-Clustering-Methode suchen. Während die Komplexität von FLAME etwas schwieriger zu bestimmen ist, da es sich um einen iterativen Prozess handelt, hat sich gezeigt, dass es subquadratisch ist und eine ähnliche Laufgeschwindigkeit wie knn aufweist.
quelle
Die topologische Datenanalyse ist eine Methode, die explizit für die von Ihnen beschriebene Einstellung entwickelt wurde. Anstelle einer globalen Entfernungsmetrik wird nur eine lokale Metrik für die Nähe oder Nachbarschaft verwendet. Siehe: Topologie und Daten und Extrahieren von Erkenntnissen aus der Form komplexer Daten mithilfe der Topologie . Weitere Ressourcen finden Sie auf der Website für Ayasdi.
quelle
DBSCAN (siehe auch: Generalized DBSCAN) benötigt keinen Abstand. Alles was es braucht ist eine binäre Entscheidung . Im Allgemeinen würde man "distance <epsilon" verwenden, aber nichts sagt, dass Sie stattdessen "similarity> epsilon" nicht verwenden können. Dreiecksungleichungen usw. sind nicht erforderlich.
Die Affinitätsausbreitung verwendet, wie der Name schon sagt, Ähnlichkeiten.
Hierarchisches Clustering, mit Ausnahme von Ward-Verknüpfungen, lässt keine Vermutung zu. In vielen Implementierungen können Sie nur negative Abstände verwenden, wenn Sie Ähnlichkeiten haben, und es wird gut funktionieren. Weil nur min, max und <benötigt werden.
Kernel k-means könnte funktionieren, wenn Ihre Ähnlichkeit eine gute Kernelfunktion ist. Stellen Sie sich vor, Sie berechnen k-means in einem anderen Vektorraum, in dem der euklidische Abstand Ihrer Ähnlichkeitsfunktion entspricht. Aber dann musst du wissen, k.
PAM (K-medoids) sollte funktionieren. Ordnen Sie jedes Objekt dem ähnlichsten Medoid zu, und wählen Sie dann das Objekt mit der höchsten durchschnittlichen Ähnlichkeit als neues Medoid aus. Es ist keine Dreieckungleichung erforderlich.
... und wahrscheinlich viele, viele mehr. Es gibt buchstäblich Hunderte von Clustering-Algorithmen. Die meisten sollten meiner Meinung nach funktionieren . Sehr wenige scheinen tatsächlich metrische Eigenschaften zu erfordern. K-means hat wahrscheinlich die höchsten Anforderungen: Es minimiert die Varianz (nicht den Abstand oder die Ähnlichkeit) und Sie müssen in der Lage sein, die Mittelwerte zu berechnen.
quelle