Ich habe eine Anwendung, in der es nützlich wäre, ein verrauschtes Dataset zu gruppieren, bevor Sie nach Untergruppeneffekten in den Clustern suchen. Ich habe mir zuerst PCA angeschaut, aber es werden ca. 30 Komponenten benötigt, um 90% der Variabilität zu erreichen. Wenn Sie also auf nur ein paar PCs gruppieren, werden viele Informationen verworfen.
Ich habe dann (zum ersten Mal) t-SNE ausprobiert, was mir eine seltsame Form in zwei Dimensionen gibt, die sich sehr gut mit k-Mitteln gruppieren lässt. Darüber hinaus zeigt die Ausführung einer zufälligen Gesamtstruktur für die Daten mit der Clusterzuweisung als Ergebnis, dass die Cluster in Bezug auf die Variablen, aus denen die Rohdaten bestehen, im Hinblick auf den Kontext des Problems eine ziemlich vernünftige Interpretation aufweisen.
Aber wenn ich über diese Cluster berichten werde, wie beschreibe ich sie? K-Mittelwert-Cluster auf Hauptkomponenten zeigen Personen, die sich in Bezug auf die abgeleiteten Variablen, die X% der Varianz im Datensatz ausmachen, in der Nähe befinden. Welche äquivalente Aussage kann über t-SNE-Cluster gemacht werden?
Vielleicht etwas in der Richtung von:
t-SNE zeigt eine ungefähre Kontiguität in einer zugrunde liegenden hochdimensionalen Mannigfaltigkeit, sodass Cluster auf der niedrigdimensionalen Darstellung des hochdimensionalen Raums die "Wahrscheinlichkeit" maximieren, dass sich benachbarte Personen nicht in demselben Cluster befinden
Kann jemand einen besseren Klappentext vorschlagen?
quelle
Antworten:
Das Problem mit t-SNE ist, dass weder Entfernungen noch Dichte erhalten bleiben. Es bewahrt nur zum Teil die nächsten Nachbarn. Der Unterschied ist geringfügig, wirkt sich jedoch auf alle Algorithmen aus, die auf der Dichte oder Entfernung basieren.
Um diesen Effekt zu sehen, generieren Sie einfach eine multivariate Gauß-Verteilung. Wenn Sie sich das vorstellen, werden Sie einen Ball haben, der dicht ist und nach außen viel weniger dicht wird, mit einigen Ausreißern, die wirklich weit weg sein können.
Führen Sie nun t-SNE für diese Daten aus. Sie erhalten normalerweise einen Kreis mit ziemlich gleichmäßiger Dichte. Wenn Sie eine geringe Ratlosigkeit verwenden, kann es sogar zu merkwürdigen Mustern kommen. Aber man kann Ausreißer nicht mehr wirklich unterscheiden.
Lassen Sie uns jetzt die Dinge komplizierter machen. Verwenden wir 250 Punkte in einer Normalverteilung bei (-2,0) und 750 Punkte in einer Normalverteilung bei (+2,0).
Dies soll ein einfacher Datensatz sein, zum Beispiel mit EM:
Wenn wir t-SNE mit einer Standard-Ratlosigkeit von 40 ausführen, erhalten wir ein seltsam geformtes Muster:
Nicht schlecht, aber auch nicht so einfach zu gruppieren, oder? Es wird Ihnen schwer fallen, einen Clustering-Algorithmus zu finden, der hier genau wie gewünscht funktioniert. Und selbst wenn Sie Menschen bitten würden, diese Daten zu gruppieren, werden sie hier höchstwahrscheinlich mehr als zwei Cluster finden.
Wenn wir t-SNE mit einer zu geringen Verwirrung wie 20 ausführen, erhalten wir mehr von diesen Mustern, die es nicht gibt:
Dies wird zB mit DBSCAN geclustert, ergibt aber vier Cluster. Also Vorsicht, t-SNE kann "gefälschte" Muster erzeugen!
Die optimale Ratlosigkeit scheint bei diesem Datensatz bei etwa 80 zu liegen. aber ich denke nicht, dass dieser Parameter für jeden anderen Datensatz funktionieren sollte.
Das ist zwar optisch ansprechend, aber für die Analyse nicht besser . Ein menschlicher Kommentator könnte wahrscheinlich einen Schnitt auswählen und ein anständiges Ergebnis erzielen. k-means wird jedoch auch in diesem sehr einfachen Szenario versagen ! Sie können bereits feststellen, dass die Dichteinformationen verloren gegangen sind. Alle Daten scheinen in einem Bereich mit nahezu derselben Dichte zu leben. Wenn wir stattdessen die Ratlosigkeit weiter erhöhen würden, würde die Gleichförmigkeit zunehmen und die Trennung würde wieder abnehmen.
Verwenden Sie abschließend t-SNE zur Visualisierung (und probieren Sie verschiedene Parameter aus, um ein ansprechendes Bild zu erhalten!). Führen Sie anschließend kein Clustering durch. Verwenden Sie insbesondere keine abstands- oder dichtebasierten Algorithmen, da diese Informationen absichtlich (!) Erstellt wurden. hat verloren. Auf Nachbarschaftsgraphen basierende Ansätze mögen in Ordnung sein, aber Sie müssen dann nicht zuerst t-SNE ausführen, sondern verwenden sofort die Nachbarn (da t-SNE versucht, diesen nn-Graphen weitgehend intakt zu halten).
Mehr Beispiele
Diese Beispiele wurden für die Präsentation des Papiers vorbereitet (können aber noch nicht im Papier gefunden werden, da ich dieses Experiment später gemacht habe)
Erstens haben wir diese Eingabedaten:
Wie Sie vielleicht erraten, ist dies von einem "color me" Bild für Kinder abgeleitet.
Wenn wir dies über SNE ausführen ( NICHT t-SNE , sondern den Vorgänger):
Wow, unser Fisch ist ein ziemliches Seemonster geworden! Da die Kernelgröße lokal gewählt wird, verlieren wir einen Großteil der Dichteinformationen.
Aber Sie werden von der Ausgabe von t-SNE wirklich überrascht sein:
Ich habe tatsächlich zwei Implementierungen ausprobiert (die ELKI- und die sklearn-Implementierung) und beide haben ein solches Ergebnis erzielt. Einige nicht verbundene Fragmente, von denen jedes in gewisser Weise mit den ursprünglichen Daten übereinstimmt.
Zwei wichtige Punkte, um dies zu erklären:
SGD stützt sich auf ein iteratives Verfeinerungsverfahren und kann in lokalen Optima stecken bleiben. Dies erschwert es dem Algorithmus insbesondere, einen Teil der Daten, die er gespiegelt hat, zu "spiegeln", da dies das Bewegen von Punkten durch andere erfordern würde, die getrennt sein sollen. Wenn also einige Teile des Fisches gespiegelt sind und andere Teile nicht gespiegelt sind, kann dies möglicherweise nicht behoben werden.
t-SNE verwendet die t-Verteilung im projizierten Raum. Im Gegensatz zur Gaußschen Verteilung, die von regulären SNE verwendet wird, bedeutet dies, dass sich die meisten Punkte gegenseitig abstoßen , da sie in der Eingabedomäne eine Affinität von 0 haben ( Gaußsche Verteilung wird schnell zu Null), in der Ausgabedomäne jedoch eine Affinität von> 0. Manchmal (wie in MNIST) macht dies eine schönere Visualisierung. Insbesondere kann es dabei helfen, einen Datensatz etwas mehr als in der Eingabedomäne zu "teilen" . Diese zusätzliche Abstoßung führt auch häufig dazu, dass Punkte den Bereich gleichmäßiger nutzen, was auch wünschenswert sein kann. Aber hier in diesem Beispiel bewirken die Abstoßungseffekte tatsächlich, dass sich Fragmente des Fisches trennen.
Wir können (in diesem Spielzeugdatensatz ) bei der ersten Ausgabe helfen, indem wir die Originalkoordinaten als anfängliche Platzierung anstelle von Zufallskoordinaten verwenden (wie normalerweise bei t-SNE verwendet). Dieses Mal ist das Bild sklearn anstelle von ELKI, da die sklearn-Version bereits einen Parameter zur Übergabe der Anfangskoordinaten hatte:
Wie Sie sehen, "zerbricht" t-SNE auch bei einer "perfekten" Erstplatzierung den Fisch an einer Reihe von Stellen, die ursprünglich verbunden waren, weil die Student-t-Abstoßung in der Ausgabedomäne stärker ist als die Gaußsche Affinität in der Eingabe Platz.
Wie Sie sehen, handelt es sich bei t-SNE (und auch bei SNE!) Um interessante Visualisierungstechniken , die jedoch sorgfältig behandelt werden müssen. Ich würde k-means lieber nicht auf das Ergebnis anwenden! weil das Ergebnis stark verzerrt ist und weder Entfernungen noch Dichte gut erhalten bleiben. Verwenden Sie es stattdessen eher zur Visualisierung.
quelle
Ich möchte eine etwas abweichende Meinung zu der gut argumentierten (+1) und hoch gelobten Antwort von @ErichSchubert abgeben. Erich hat nicht empfehlen Clustering auf dem T-ANS - Ausgang und zeigt einige Spielzeug Beispiele , bei denen es irreführend sein kann. Sein Vorschlag ist, stattdessen Clustering auf die Originaldaten anzuwenden.
Ich bin mir der Art und Weise bewusst, in der die Ausgabe von t-SNE irreführend sein kann (siehe https://distill.pub/2016/misread-tsne/ ), und ich stimme zu, dass es in einigen Situationen zu seltsamen Ergebnissen kommen kann.
Betrachten wir jedoch einige echte hochdimensionale Daten.
Nimm MNIST Daten : 70000 einziffrige Bilder. Wir wissen, dass die Daten 10 Klassen enthalten. Diese Klassen scheinen für einen menschlichen Beobachter gut getrennt zu sein. Das Clustering von MNIST-Daten in 10 Cluster ist jedoch ein sehr schwieriges Problem. Mir ist kein Clustering-Algorithmus bekannt, der die Daten korrekt in 10 Cluster gruppiert. Noch wichtiger ist, dass mir keine Cluster-Heuristik bekannt ist, die darauf hinweist, dass die Daten 10 (nicht mehr und nicht weniger) Cluster enthalten. Ich bin sicher, dass die meisten gängigen Ansätze dies nicht anzeigen können.
Aber lasst uns stattdessen t-SNE machen. (Man kann viele Zahlen von t-SNE finden, die auf MNIST online angewendet werden, aber sie sind oft suboptimal. Nach meiner Erfahrung ist es notwendig, einige Zeit zu übertreiben, um gute Ergebnisse zu erzielen. Ich verwende unten
perplexity=50, max_iter=2000, early_exag_coeff=12, stop_lying_iter=1000
). Folgendes bekomme ich, links unbeschriftet und rechts farbig nach der Grundwahrheit:Ich würde argumentieren, dass die unbeschriftete t-SNE-Darstellung 10 Cluster vorschlägt. Durch Anwenden eines auf der Dichte basierenden Clustering-Algorithmus wie HDBSCAN mit sorgfältig ausgewählten Parametern können diese 2D-Daten in 10 Cluster gruppiert werden.
Für den Fall, dass jemand Zweifel daran hat, dass die obige linke Handlung tatsächlich 10 Cluster vorschlägt, ist dies das, was ich mit dem Trick der "späten Übertreibung" erhalte, mit dem ich zusätzlich
max_iter=200
Iterationen durchführeexaggeration=4
(dieser Trick wird in diesem großartigen Artikel vorgeschlagen: https://arxiv.org /abs/1712.09005 ):Jetzt sollte es sehr offensichtlich sein, dass es 10 Cluster gibt.
Ich ermutige alle, die das Clustering nach t-SNE für eine schlechte Idee halten, einen Clustering-Algorithmus vorzustellen, der vergleichsweise gute Ergebnisse erzielt.
Und jetzt noch mehr echte Daten.
Im Fall MNIST kennen wir die Grundwahrheit. Betrachten Sie nun einige Daten mit unbekannter Grundwahrheit. Clustering und t-SNE werden routinemäßig verwendet, um die Zellvariabilität in Einzelzell-RNA-seq-Daten zu beschreiben. ZB Shekhar et al. 2016 wurde versucht, Cluster unter 27000 Netzhautzellen zu identifizieren (das Mausgenom enthält ca. 20.000 Gene, sodass die Dimensionalität der Daten im Prinzip ca. 20.000 beträgt. Normalerweise beginnt man jedoch damit, die Dimensionalität mit PCA auf ca. 50 zu reduzieren.) Sie führen t-SNE und separat Clustering durch (eine komplizierte Clustering-Pipeline, gefolgt von einigen Clusterzusammenführungen usw.). Das Endergebnis sieht erfreulich aus:
Der Grund dafür ist, dass t-SNE klar unterschiedliche Cluster erzeugt und der Cluster-Algorithmus genau dieselben Cluster liefert. Nett.
Wenn Sie sich jedoch die Ergänzungen ansehen, werden Sie feststellen, dass die Autoren viele verschiedene Clustering-Ansätze ausprobiert haben. Viele von ihnen sehen auf dem t-SNE-Plot schrecklich aus, weil z. B. der große zentrale Cluster in viele Untercluster aufgeteilt wird:
Was glauben Sie also: die Ausgabe Ihres bevorzugten Clustering-Algorithmus zusammen mit Ihrer bevorzugten Heuristik zur Identifizierung der Anzahl der Cluster oder was sehen Sie auf dem t-SNE-Plot? Um ehrlich zu sein, neige ich trotz aller Mängel von t-SNE dazu, t-SNE mehr zu glauben. Oder auf jeden Fall verstehe ich nicht, warum ich es weniger glauben sollte .
quelle
Ich denke, mit großer Ratlosigkeit kann t-SNE die globale Topologie rekonstruieren, wie in https://distill.pub/2016/misread-tsne/ angegeben .
Aus dem Fischbild habe ich 4000 Punkte für t-SNE abgetastet. Mit großer Ratlosigkeit (2000) wurde das Fischbild virtuell rekonstruiert.
Hier ist das Originalbild.
Hier ist das durch t-SNE mit Ratlosigkeit = 2000 rekonstruierte Bild.
quelle
Basierend auf den mathematischen Beweisen, die wir haben, könnte diese Methode Entfernungen technisch bewahren! Warum ignoriert ihr alle diese Funktion? t -SNE konvertiert die hochdimensionalen euklidischen Abstände zwischen Stichproben in bedingte Wahrscheinlichkeiten, die Ähnlichkeiten darstellen. Ich habe t -SNE mit mehr als 11.000 Proben (im Genomics-Kontext) parallel mit verschiedenen Consensus-Clustering-Algorithmen wie Spectral Clustering, Affinity und vor allem GMM Clustering (ein dichtebasierter Clustering-Algorithmus!) Getestet. Als Ergebnis fand ich ein sehr gutes Übereinstimmungsergebnis zwischen zwei Ansätzen ( t-SNE vs. Consensus Clustering Algorithmen). Ich glaube, dass die Integration von t-SNE in Konsens-Clustering-Algorithmen den besten Beweis für vorhandene lokale und globale Datenstrukturen liefern kann.
quelle
Sie können den DBSCAN-Clustering-Algorithmus ausprobieren. Außerdem sollte die Unübersichtlichkeit von tsne in etwa der Größe des kleinsten erwarteten Clusters entsprechen.
quelle
Persönlich habe ich dies einmal erlebt, aber nicht mit t-SNE oder PCA. Meine ursprünglichen Daten befinden sich im 15-dimensionalen Raum. Unter Verwendung von UMAP, um es auf 2D- und 3D-Einbettungen zu reduzieren, erhielt ich zwei perfekt und visuell trennbare Cluster auf 2D- und 3D-Plots. Zu schön um wahr zu sein. Als ich mir jedoch die Originaldaten aus dem Persistenzdiagramm "ansah", stellte ich fest, dass es viel mehr "signifikante" Cluster gibt, nicht nur 2.
Das Clustering der Ausgabe der Bemaßungsreduktionstechnik muss mit großer Vorsicht durchgeführt werden, da sonst jede Interpretation sehr irreführend oder falsch sein kann, da das Reduzieren der Bemaßung mit Sicherheit zu einem Verlust von Merkmalen führt (möglicherweise verrauschte oder echte Merkmale, aber a priori tun wir das nicht. ' weiß nicht welche). Meiner Meinung nach können Sie den Clustern vertrauen / sie interpretieren, wenn:
Die Cluster in den projizierten Daten entsprechen einer von vornherein definierten Klassifizierung (denken Sie an den MNIST-Datensatz, bei dem die Cluster der projizierten Daten sehr gut mit der Klassifizierung der Ziffern übereinstimmen), und / oder
Sie können das Vorhandensein dieser Cluster in den Originaldaten mit anderen Methoden überprüfen, z. B. mit Persistenzdiagrammen. Das Zählen nur der Anzahl der verbundenen Komponenten kann in einem angemessenen Zeitraum durchgeführt werden.
quelle