Zum Inhalt springen

tSNE: t-distributed stochastic neighbor embedding

Das t-distributed stochastic neighbor embedding (kurz: tSNE) ist ein unsupervised Algorithmus zur Dimensionsreduktion in großen Datensätzen. Dazu werden traditioneller Weise entweder die Principal Component Analysis (PCA) bei linearen Zusammenhängen oder Neuronale Netzwerke bei nicht-relationalen Zusammenhängen genutzt. Der tSNE Algorithmus stellt hierfür eine Alternative dar, die deutlich simpler ist im Vergleich zu den genannten Alternativen.

Warum benötigt man die Dimensionsreduktion?

Verschiedene Algorithmen, wie beispielsweise die Lineare Regression haben Probleme, wenn der Datensatz Variablen hat, die miteinander korreliert sind, also voneinander abhängen. Um dieser Problematik aus dem Weg zu gehen, kann es Sinn machen, die Variablen aus dem Datensatz zu entfernen, die mit einer anderen Variablen korrelieren. Gleichzeitig aber sollen die Daten auch nicht ihren ursprünglichen Informationsgehalt verlieren bzw. sollen so viel Information wie möglich behalten.

Eine weitere Anwendung haben wir bei Clusteranalysen, wie beispielsweise dem k-Means Clustering, bei welchem wir die Anzahl der Cluster im Vorhinein definieren müssen. Die Dimensionalität des Datensatzes zu verringern hilft uns dabei, einen ersten Eindruck von den Informationen zu bekommen und beispielsweise abschätzen zu können, welches die wichtigsten Variablen sind und wie viele Cluster der Datensatz haben könnte. Wenn wir es beispielsweise schaffen, den Datensatz auf drei Dimensionen zu reduzieren, können wir die Datenpunkte in einem Diagramm visualisieren. Daraus lässt sich dann möglicherweise schon die Anzahl der Cluster ablesen.

Zusätzlich bieten große Datensätze mit vielen Variablen auch die Gefahr, dass das Modell overfitted. Das bedeutet einfach erklärt, dass das Modell sich im Training zu stark an die Trainingsdaten anpasst und dadurch nur schlechte Ergebnisse für neue, ungesehene Daten liefert. Daher kann es beispielsweise bei Neuronalen Netzwerken Sinn machen, das Modell erst mit den wichtigsten Variablen zu trainieren und dann Stück für Stück neue Variablen hinzuzunehmen, die möglicherweise die Performance des Modell weiter erhöhen ohne Overfitting.

Wie funktioniert tSNE?

Die Idee von tSNE ist es, eine Wahrscheinlichkeitsverteilung im hochdimensionalen Raum zu finden, die angibt, wie wahrscheinlich es ist, dass zwei zufällig gewählte Punkte im Raum direkte Nachbarn sind. Anschließend wird versucht diese Verteilung aus dem hochdimensionalen Raum auf eine t-Verteilung (daher das t in tSNE) im niedrigdimensionalen Raum so zu mappen, dass die Divergenz zwischen beiden Verteilungen möglichst minimal ist. Schauen wir uns die einzelnen Schritte genauer an:

  1. Im ersten Schritt wird eine Gauss’sche Normalverteilung gebildet, die die bedingte Wahrscheinlichkeit angibt, dass zwei zufällig gewählte Punkte direkte Nachbarn sind. Dazu wird ein Datenpunkt gewählt und die Abstände zu allen anderen Punkten im Datensatz berechnet. Je weiter die beiden Punkte auseinander sind, desto weiter außen liegt einer der Punkte auf der Normalkurve. Der Ausgangspunkt, von dem aus gemessen wird, liegt dabei immer beim Mittelwert der Gauss’schen Normalverteilung.
  2. Im niedrigdimensionalen Raum wird hingegen eine t-Verteilung genutzt, die sehr ähnlich zu einer Gauss’schen Normalverteilung ist mit dem Unterschied, dass die äußeren Bereiche bei der t-Verteilung deutlich höher liegen. Dadurch können auch weite Abstände differenzierter abgebildet werden und erscheinen nicht zu dicht beieinander.
  3. Um die vorhandene Verteilung im hochdimensionalen Raum möglichst gut auf die niedrigdimensionale Verteilung zu übertragen, wird ein iteratives Optimierungsverfahren genutzt. Mithilfe der Kullback-Leibler Divergenz wird der Unterschied zwischen den Verteilungen berechnet und dieser wird versucht Schritt für Schritt zu minimieren bis ein Optimum erreicht ist, oder die maximale Anzahl an Iterationen durchlaufen wurde.

Welche Faktoren verbessern das Ergebnis?

Wie wir bereits erfahren haben, nutzt dieser Algorithmus einen Ansatz bei dem man sich dem Ergebnis schrittweise annähert. Das kennen wir bereits aus dem Bereich des Machine Learnings. Entsprechend gibt es auch sogenannte Hyperparameter, deren Wert einen großen Einfluss auf die Qualität des Ergebnis haben kann. Folgende Parameter müssen beachtet werden:

  • Anzahl der Iterationen: Im Allgemeinen wird sich der Algorithmus mit mehr Iterationen einem immer besseren Ergebnis annähern. Dabei nimmt die Verbesserung jedoch mit jeder Iteration ab, das heißt das Ergebnis wird nur sehr langsam besser. Somit muss eine Abwägung zwischen der Güte des Ergebnis und der Trainingszeit getroffen werden.
  • Lernrate: Die Lernrate beeinflusst die Größe der Änderungen in jeder Iteration. Eine niedrige Lernrate führt dazu, dass das Ergebnis nur sehr langsam konvergiert, während eine hohe Lernrate dazu führen kann, dass der Algorithmus gar nicht konvergiert, also sich keinem eindeutigen Ergebnis annähert.
  • Perplexity: Die Perplexity entscheidet einfach gesagt darüber, wie die Gewichtung zwischen lokalen und globalen Abhängigkeiten aussehen soll. In vielen Fällen bedeutet eine höhere Komplexität deutlich klarer getrennte Cluster, während bei einer niedrigen Perplexity die Daten noch relativ eng beeinander bleiben.

tSNE vs. Principal Component Analysis

Obwohl das Ziel von PCA und tSNE erstmal dasselbe ist, nämlich die Dimensionsreduzierung, gibt es einige Unterschiede in den Algorithmen. Zum einen funktioniert tSNE für einen Datensatz sehr gut, kann jedoch nicht auf neue Datenpunkte angewandt werden, da sich dadurch die Abstände zwischen den Datenpunkten verändern und ein neues Ergebnis errechnet werden muss. PCA hingegen erstellt als Ergebnis eine Regel, die auch auf neue Datenpunkte angewandt werden können, die während dem Training noch nicht Teil des Datensatzes waren.

Der t-distributed stochastic neighbor embedding Algorithmus kann auch genutzt werden, wenn die Zusammenhänge zwischen den Datenpunkten nicht-linear sind. Die Principal Component Analysis kann hingegen nur lineare Zusammenhänge erkennen und in die Trennung einbeziehen. Für nicht-lineare Abhängigkeiten kann man auch Neuronale Netzwerke nutzen, deren Aufwand und Training ist jedoch zeitaufwändig. Obwohl tSNE im Vergleich zu PCA auch eine relativ lange Trainingsphase hat, ist sie meist immer noch kürzer als bei Neuronalen Netzwerken und stellt somit einen guten Kompromiss dar.

Das Bild zeigt ein zweidimensionales Diagramm mit verschiedenen orangenen Punkten und einer blauen Linie, die durch die Punktewolke verläuft. Dies ist die Gerade der Linearen Regression.
Hauptkomponentenanalyse | Quelle: Autor

Ein weiterer wichtiger Unterschied zwischen PCA und tSNE ist der Fokus auf die Datenverteilung. Bei der Principal Component Analysis wird versucht, die globale Anordnung der Datenpunkte auch in weniger Dimensionen beizubehalten. tSNE hingegen fokussiert sich eher auf lokale Abstände und Zusammenhänge, welche auch in niedrigeren Dimensionen beibehalten werden sollen. Deshalb kann es den Anschein machen, dass nach einer Dimensionsreduktion durch tSNE die Daten so aussehen, als seien sie auch schon in Cluster aufgeteilt worden.

Welche Grenzen hat tSNE?

tSNE ist ein leistungsfähiges Tool, um hochdimensionale Daten effektiv in einen niedrigdimensionalen Raum zu überführen. Dies ist vor allem sinnvoll für die Visualisierung solcher Datensätze, um einen ersten Eindruck für die Lage der Datenpunkte zu bekommen und mögliche Cluster zu finden. Jedoch bringt die Nutzung von tSNE auch einige Nachteile oder Grenzen mit sich:

  • Hyperparameter: Das Verfahren nutzt einige Hyperparameter, die einen starken Einfluss auf die Qualität des Ergebnisses haben. Deshalb bedarf es oft einige Trainingsdurchläufe bis ein optimales Set an Hyperparametern gefunden ist. Besonders bei großen Datensätzen kann ein Durchlauf sehr viel Zeit und Rechenleistung in Anspruch nehmen.
  • Lokale Minima: Bei tSNE handelt es sich um ein Optimierungsverfahren, das eine nicht-konvexe Verlustfunktion besitzt. Dadurch kann es neben dem einen globalen Minimum, also dem niedrigsten Punkt im ganzen Definitionsbereich, auch sogenannte lokale Minima geben, die zwar in ihrer direkten Umgebung wie ein Minimum aussehen und ähnliche Eigenschaften haben, aber eben nicht der global tiefste Punkt sind. Während des Optimierungsverfahrens kann es passieren, dass der Algorithmus in einem lokalen Minimum stecken bleibt und das Training beendet, ohne das optimale Ergebnis gefunden zu haben.
Unterschied zwischen lokalem und globalem Minimum | Quelle: Autor
  • Umgang mit neuen Daten: Das tSNE Verfahren liefert im Vergleich zu PCA keine Embeddingfunktion, die es ermöglicht, neue Datenpunkte in den niedrigdimensionalen Raum zu mappen. Es können somit keine Datenpunkte umgewandelt werden, die nicht Teil des ursprünglichen Datensatzes waren. Deshalb eignet sich tSNE nicht als Mittel zur Datenkompression oder um Datensätze umzuwandeln.
  • Determinismus: In der Informatik spricht man von einem deterministischen System, wenn ein Algorithmus bei mehrmaligem Durchlaufen mit denselben Input-Parametern immer dasselbe Ergebnis zurückgibt. Dies passiert, weil immer ein vordefinierter Weg mit festen Parametern gegangen wird. Bei tSNE handelt es sich nicht um ein deterministisches System, sodass bei mehrmaligem Training (selbst mit identischen Hyperparametern) unterschiedliche Ergebnisse auftreten können.
  • Globale Strukturen: Das tSNE Verfahren zielt darauf ab, eine bedingte Wahrscheinlichkeit zu erlernen, die angibt wie wahrscheinlich es ist, dass zwei Datenpunkte direkte Nachbarn sind. Somit wird großer Wert darauf gelegt, lokale Strukturen richtig abzubilden, wobei es jedoch auch dazu kommen kann, dass weite Abstände zwischen Datenpunkte nicht optimal wiedergegeben werden, wodurch sich das Endergebnis leicht verzerrt.

Abschließend ist tSNE ein sinnvolles Verfahren zur Visualisierung von hochdimensionalen Datensätzen. Jedoch sollte man die genannten Nachteile im Hinterkopf behalten, bevor man die Methode anwendet.

Wie kann man tSNE in Python implementieren?

tSNE lässt sich mithilfe von wenigen Zeilen Code in Python umsetzen. Dazu definieren wir vier zufällige NumPy Arrays, die vier Dimensionen haben. Diese Dimensionen wollen wir auf zwei reduzieren. Dazu importieren wir aus Scikit-Learn die Funktion TSNE.

In dieser Funktion können wir die gewünschte Zahl der Komponenten, also der schlussendlichen Dimensionen definieren. Die Learning Rate soll automatisch bestimmt werden, außerdem setzen wir eine Perplexity von 3. Nach kurzer Wartezeit erhalten wir nun vier Numpy Arrays mit jeweils nur zwei Dimensionen, wie gewünscht. Gleichzeitig fällt auf, dass sich die Zahlenwerte um einiges vergrößert haben im Vergleich zu den Ausgangswerten. Dies war jedoch anzunehmen, da wie bereits erwähnt, lediglich versucht wird der Abstand zwischen den Datenpunkten gleich zu halten und nicht die globale Positionierung.

Das Beispiel wurde zu großen Teil aus der Dokumentation von Scikit-Learn zu tSNE übernommen.

Das solltest Du mitnehmen

  • Das t-distributed stochastic neighbor embedding (kurz: tSNE) ist ein unsupervised Algorithmus zur Dimensionsreduktion in großen Datensätzen.
  • Es wird benötigt, um Datensätze in der Dimension zu reduzieren und so mögliches Overfitting von Modellen zu verhindern.
  • Der Hauptunterschied zur Principal Component Analysis ist, dass es auch für nicht-lineare Zusammenhänge zwischen den Datenpunkten verwendet werden kann.
Variance Inflation Factor (VIF) / Varianzinflationsfaktor

Was ist der Varianzinflationsfaktor (VIF)?

Erfahren Sie, wie der Varianzinflationsfaktor (VIF) Multikollinearität in Regressionen erkennt, um eine bessere Datenanalyse zu ermöglichen.

Dummy Variable Trap

Was ist die Dummy Variable Trap?

Entkommen Sie der Dummy Variable Trap: Erfahren Sie mehr über Dummy-Variablen, ihren Zweck und die Folgen der Falle.

R-Squared / Bestimmtheitsmaß

Was ist das Bestimmtheitsmaß?

Einführung in das Bestimmtheitsmaß: Lernen Sie seine Bedeutung, Berechnung und Grenzen in der Regressionsanalyse kennen.

Median

Was ist der Median?

Lernen Sie den Median und seine Bedeutung in der Datenanalyse kennen. Erkunden Sie seine Berechnung, Anwendungen und Grenzen.

Arima

Was ist das ARIMA Modell?

Beherrschen Sie Prognosen mit ARIMA-Modellen: Lernen Sie, Trends in Daten zu analysieren und vorherzusagen mit Python-Beispielen.

Game Theory / Spieltheorie

Was ist die Spieltheorie?

Entdecken Sie die Macht der Spieltheorie und ihre praktischen Anwendungen bei Verhandlungen und bei der Entscheidungsfindung.

Andere Beiträge zum Thema tSNE

Das Logo zeigt einen weißen Hintergrund den Namen "Data Basecamp" mit blauer Schrift. Im rechten unteren Eck wird eine Bergsilhouette in Blau gezeigt.

Verpass keine neuen Beiträge!

Wir versenden keinen Spam! Lies die Details gerne in unserer Datenschutzrichtlinie nach.

Cookie Consent mit Real Cookie Banner