Was ist los mit t-SNE vs. PCA zur Dimensionsreduktion mit R?

27

Ich habe eine Matrix von 336x256 Gleitkommazahlen (336 Bakteriengenome (Spalten) x 256 normalisierte Tetranukleotidfrequenzen (Zeilen), z. B. addiert sich jede Spalte zu 1).

Ich erhalte gute Ergebnisse, wenn ich meine Analyse mit der Hauptkomponentenanalyse durchführe. Zuerst berechne ich die kmeans-Cluster anhand der Daten, führe dann eine PCA durch und färbe die Datenpunkte basierend auf der anfänglichen kmeans-Clusterbildung in 2D und 3D:

library(tsne)
library(rgl)
library(FactoMineR)
library(vegan)
# read input data
mydata <-t(read.csv("freq.out", header = T, stringsAsFactors = F, sep = "\t", row.names = 1))
# Kmeans Cluster with 5 centers and iterations =10000
km <- kmeans(mydata,5,10000)
# run principle component analysis
pc<-prcomp(mydata)
# plot dots
plot(pc$x[,1], pc$x[,2],col=km$cluster,pch=16)
# plot spiderweb and connect outliners with dotted line
pc<-cbind(pc$x[,1], pc$x[,2])
ordispider(pc, factor(km$cluster), label = TRUE)
ordihull(pc, factor(km$cluster), lty = "dotted")

Bildbeschreibung hier eingeben

# plot the third dimension
pc3d<-cbind(pc$x[,1], pc$x[,2], pc$x[,3])
plot3d(pc3d, col = km$cluster,type="s",size=1,scale=0.2)

Bildbeschreibung hier eingeben

Aber wenn ich versuche, die PCA mit der t-SNE-Methode zu tauschen, sehen die Ergebnisse sehr unerwartet aus:

tsne_data <- tsne(mydata, k=3, max_iter=500, epoch=500)
plot(tsne_data[,1], tsne_data[,2], col=km$cluster, pch=16)
ordispider(tsne_data, factor(km$cluster), label = TRUE)
ordihull(tsne_data, factor(km$cluster), lty = "dotted")

Bildbeschreibung hier eingeben

plot3d(tsne_data, main="T-SNE", col = km$cluster,type="s",size=1,scale=0.2)

Bildbeschreibung hier eingeben

Meine Frage ist hier, warum das kmeans-Clustering sich so stark von dem unterscheidet, was t-SNE berechnet. Ich hätte eine noch bessere Trennung zwischen den Clustern erwartet als das, was der PCA tut, aber es sieht für mich fast zufällig aus. Weißt du warum das so ist? Fehlt mir ein Skalierungsschritt oder eine Art Normalisierung?

Loddi
quelle
4
Bitte beachten Sie, dass Sie mit PCA auch oft nicht so gute Ergebnisse erzielen, wie Sie es gerne hätten. Das Clustering auf viele Funktionen und das anschließende Projizieren der Cluster in den Unterraum von nur wenigen ersten PCs zeigt möglicherweise ein Bild, wie Sie es hier für t-SNE erhalten haben - es sei denn, diese PCs erfassen fast die gesamte Variabilität. Haben Sie verglichen - welcher Teil der Variabilität wird von Ihren ersten 3 PCs und Ihren ersten 3 t-SNE-Dimensionen erfasst?
ttnphns
2
Trivialer, haben Sie mehr Iterationen versucht?
7.
2
Ich habe mit den Iterationen mit bis zu 2000 gespielt und auch mit verschiedenen Verwirrungseinstellungen gespielt, aber noch nie etwas gesehen, das auch nur annähernd der Leistung entspricht, die der PCA zeigt.
Loddi
1
Haben Sie versucht, die Ratlosigkeit zu optimieren?
1
tSNE weist eine theoretisch optimale Ratlosigkeit auf, die die KL-Abweichung zwischen Ihren Daten in den ursprünglichen und den projizierten Dimensionen minimiert. Haben Sie zuerst versucht, eine Rastersuche nach Ratlosigkeit durchzuführen? ZB 10, 20, 30, 40 usw.
Alex R.

Antworten:

10

Sie müssen verstehen, was zu TSNEtun ist, bevor Sie es verwenden.

Es beginnt mit einem neighboorhood Aufbau Graph zwischen Merkmalsvektoren auf Abstand basiert.

Das Diagramm verbindet einen Knoten (Merkmalsvektor) mit den nnächstgelegenen Knoten (in Bezug auf die Entfernung im Merkmalsraum). Dies nwird als perplexityParameter bezeichnet.

Der Grund für die Erstellung dieses Diagramms liegt in der Art der Stichprobe, auf die sich TSNE stützt, um die neue Darstellung Ihrer Merkmalsvektoren zu erstellen.

Eine Sequenz für die Erstellung eines TSNE-Modells wird mit einem random walkin Ihrem TSNE-Feature-Diagramm erstellt.

Nach meiner Erfahrung sind einige meiner Probleme auf die Überlegungen zurückzuführen, wie sich die Feature-Repräsentation auf die Erstellung dieses Diagramms auswirkt. Ich spiele auch mit dem perplexityParameter herum , da er sich darauf auswirkt, wie konzentriert mein Sampling ist.

Konisch
quelle
9

Es ist schwer, diese Ansätze zu vergleichen.

PCA ist parameterfrei. Angesichts der Daten müssen Sie sich nur die Hauptkomponenten ansehen.

Andererseits stützt sich t-SNE auf schwerwiegende Parameter: Ratlosigkeit, frühe Übertreibung, Lernrate, Anzahl der Iterationen - obwohl Standardwerte normalerweise gute Ergebnisse liefern.

Sie können sie also nicht einfach vergleichen, sondern müssen die PCA mit dem besten Ergebnis vergleichen, das Sie mit t-SNE erzielen können (oder dem besten Ergebnis, das Sie bei mehreren Versuchen mit t-SNE erzielt haben). Andernfalls wäre es äquivalent zu fragen, warum mein lineares Modell eine bessere Leistung erbringt als mein (nicht abgestimmtes) Gradientenverstärkungsmodell.

RUser4512
quelle
3

Ich habe t-sne auf einem Datensatz ausgeführt, um PCA zu ersetzen, und (trotz des Fehlers, den Rum Wei bemerkte) bessere Ergebnisse erzielt. In meinem Anwendungsfall funktionierte der raue PCA gut, während der raue T-SNE mir zufällig aussehende Ergebnisse lieferte. Dies war auf den Skalierungs- / Zentrierungsschritt zurückzuführen, der im pca enthalten war (standardmäßig in den meisten Paketen), aber im t-sne nicht verwendet wurde.
Meine Punkte waren Flächen, und der Abstand zwischen ihnen ergab ohne vorherige Skalierung keinen Sinn. Ich wechselte von "zufällig" zu "sinnvoll".

Wie RUser4512 sagte, möchten Sie möglicherweise auch Ihre Parameter testen. Auf seiner Website empfiehlt der Autor eine Ratlosigkeit zwischen 5 und 50 (Ihre Ratlosigkeit scheint recht klein zu sein). Er warnt auch davor, dass eine zu große Ratlosigkeit Ihnen eine nahezu homogene Punktsphäre verleiht (was gut zu wissen ist).

Distill hat einen sehr schönen Artikel mit einer interaktiven Visualisierung, die wirklich hilft, die Auswirkungen der Parameter zu verstehen.

Nestor Demeure
quelle
0

Ein wichtiger Unterschied zwischen Methoden wie PCA und SVD mit tSNE besteht darin, dass tSNE eine nichtlineare Skala verwendet. Dies führt häufig zu Plots, die visuell ausgewogener sind, die jedoch genau so interpretiert werden, wie Sie es für PCA tun würden. Dieser Unterschied erklärt wahrscheinlich den Unterschied zwischen den oben gezeigten Darstellungen.

Sehen Sie im folgenden Artikel für weitere Einzelheiten über die nicht-lineare Skala von tSNE Interpretation: https://distill.pub/2016/misread-tsne/ . (Wattenberg, et al, „How to use tSNE effektiv“, destillieren, 2016. http://doi.org/10.23915/distill.00002 )

Es ist nicht unerwartet, dass die tSNE-Daten die "Cluster" vertauschen, da sie in den PCA-Daten nicht so unterschiedlich sind. Einige Punkte in den Clustern 2 und 4 sind weiter vom Cluster-Schwerpunkt entfernt als beispielsweise der Unterschied zwischen den Clustern. Sie würden sehr unterschiedliche Clustering-Ergebnisse mit einem anderen k-Parameter erhalten. Sofern Sie keine spezifischen biologischen Gründe für die Verwendung von 5 Clustern haben, würde ich die Verwendung eines grafischen oder nicht überwachten hierarchischen Clustering-Ansatzes empfehlen.

Tom Kelly
quelle