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)
Erich Schubert und Michael Gertz.
Intrinsisches t-stochastisches Neighbor Embedding zur Visualisierung und Ausreißererkennung - ein Mittel gegen den Fluch der Dimensionalität?
In: Tagungsband der 10. Internationalen Konferenz für Ähnlichkeitssuche und -anwendungen (SISAP), München. 2017
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.