Ist der nächste Nachbar mit t-SNE sinnvoll?


10

Die Antworten hier haben festgestellt, dass die Dimensionen in t-SNE bedeutungslos sind und dass die Abstände zwischen Punkten kein Maß für die Ähnlichkeit sind .

Können wir jedoch etwas über einen Punkt sagen, der auf seinen nächsten Nachbarn im t-SNE-Raum basiert? Diese Antwort darauf , warum Punkte, die genau gleich sind, nicht gruppiert werden, legt nahe, dass das Verhältnis der Abstände zwischen Punkten zwischen niedrig- und höherdimensionalen Darstellungen ähnlich ist.

Das folgende Bild zeigt beispielsweise t-SNE in einem meiner Datensätze (15 Klassen).

Kann ich sagen, dass cro 479(oben rechts) ein Ausreißer ist? Ist fra 1353(unten links) ähnlicher cir 375als die anderen Bilder in der fraKlasse usw.? Oder könnten dies nur Artefakte sein, z. B. fra 1353auf der anderen Seite einiger Cluster stecken bleiben und sich nicht in die andere fraKlasse durchsetzen können?

Geben Sie hier die Bildbeschreibung ein



Antworten:


8

Nein, es ist nicht notwendig, dass dies der Fall ist, dies ist jedoch in verschlungener Weise das Ziel von T-SNE.

Bevor wir uns mit der Antwort befassen, werfen wir einen Blick auf einige grundlegende Definitionen, sowohl mathematisch als auch intuitiv.

R.dX.1,...,X.nR.dxR.d||X.1- -x||...||X.n- -x||R.d

dyxddd+k. Wir haben also unsere Intuition, dass der Abstand über verschiedene Dimensionen hinweg eingehalten wird, oder zumindest ist es das, was wir anstreben. Versuchen wir es mit etwas Mathematik zu rechtfertigen.

pj|ich=exp(- -||xj- -xich||22σ2)kichexp(- -||xj- -xich||22σ2)R.k

Nun endlich ein ordentliches Codierungsbeispiel, das auch dieses Konzept demonstriert.

from sklearn.manifold import TSNE
from sklearn.neighbors import KNeighborsClassifier
X = [[0],[1],[2],[3],[4],[5],[6],[7],[8],[9]]
y = [0,1,2,3,4,5,6,7,8,9]
neighs = KNeighborsClassifier(n_neighbors=3)
neighs.fit(X, y)
X_embedded = TSNE(n_components=1).fit_transform(X)
neighs_tsne = KNeighborsClassifier(n_neighbors=3)
neighs_tsne.fit(X_embedded, y)
print(neighs.predict([[1.1]]))
>>>[0]
print(neighs_tsne.predict([[1.1]]))
>>>[0]

Obwohl dies ein sehr naives Beispiel ist und nicht die Komplexität widerspiegelt, funktioniert es experimentell für einige einfache Beispiele.

EDIT: Wenn Sie einige Punkte in Bezug auf die Frage selbst hinzufügen, ist es nicht erforderlich, dass dies der Fall ist. Eine Rationalisierung durch Mathematik könnte jedoch beweisen, dass Sie kein konkretes Ergebnis haben (kein definitives Ja oder Nein). .

Ich hoffe, dies hat einige Ihrer Bedenken gegenüber TSNE ausgeräumt.


Danke für die gute Antwort. Zusammenfassend: Punkte mit hoher Ähnlichkeit haben eine hohe Wahrscheinlichkeit, nahe zu bleiben. Ich vermute, dass der Ratlosigkeitsparameter steuert, wie viele Punkte für die Wahrscheinlichkeitsberechnung verwendet werden, sodass Cluster bei geringer Ratlosigkeit disjunkt werden können. Können Sie die frühe Übertreibung kommentieren? Ich gehe auch davon aus, dass die Wahrscheinlichkeit, dass Punkte unter Verwendung des TSNE-Raums Ausreißer sind oder falsch klassifiziert werden (mit allen NN in einer anderen Klasse), erhöht wird, wenn sie nach mehreren TSNE mit zufälliger Initialisierung konsistent sind.
geometrisch

Ja, Ratlosigkeit ist einer der Hauptfaktoren, die beeinflussen, wie nahe die Punkte zueinander bleiben. Frühe Übertreibung ist intuitiv, wie eng sich Cluster im ursprünglichen Raum befinden und wie viel Platz zwischen ihnen im eingebetteten Raum sein wird (es ist also eine Mischung aus Ratlosigkeit und früher Übertreibung, die sich auf die Abstände zwischen Punkten auswirkt. In Bezug auf Ihre letzte Frage die Antwort ist ja, dies liegt an der Potenzierung der Norm, die Probleme im Einbettungsraum verursachen könnte, so dass die Möglichkeit einer Fehlklassifizierung besteht
PSub
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.