T Sne.el

T Sne.el

Ενημέρωση 2026-02-24 Ανάγνωση 2 λεπτά
Σύνοψη
  • Ο t-SNE διατηρεί τις τοπικές γειτονιές αντιστοιχίζοντας ζευγαρωτές ομοιότητες μεταξύ υψηλών και χαμηλών διαστάσεων.
  • Είναι βελτιστοποιημένος για οπτικοποίηση και συχνά αποκαλύπτει τη δομή συστάδων με σαφήνεια.
  • Τα αποτελέσματα εξαρτώνται από perplexity, ρυθμό εκμάθησης και τυχαία αρχικοποίηση, οπότε οι έλεγχοι σταθερότητας είναι σημαντικοί.

Εισαγωγή #

Ο t-SNE δίνει προτεραιότητα στο ποιος είναι κοντά σε ποιον, όχι σε πιστές συνολικές αποστάσεις. Ερμηνεύεται καλύτερα ως ένας χάρτης γειτονίας για διερευνητική ανάλυση.

Αναλυτική Επεξήγηση #

1. Εισαγωγή #

  • Κατασκευή ζευγαρωτών ομοιοτήτων (P_{ij}) στον αρχικό χώρο (Γκαουσιανός πυρήνας ανά σημείο, ελεγχόμενος από perplexity).
  • Ορισμός ομοιοτήτων (Q_{ij}) στον χώρο χαμηλών διαστάσεων χρησιμοποιώντας μια κατανομή Student-t με βαριά ουρά.
  • Ελαχιστοποίηση της απόκλισης Kullback–Leibler (\mathrm{KL}(P \parallel Q)) μέσω κατάβασης κλίσης.
  • Η κατανομή με βαριά ουρά αποφεύγει τον συνωστισμό δίνοντας στα απομακρυσμένα σημεία μη αμελητέα επιρροή.

2. Παράδειγμα σε Python #

import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
from sklearn.datasets import load_digits
from sklearn.manifold import TSNE
from sklearn.preprocessing import StandardScaler

X, y = load_digits(return_X_y=True)
X = StandardScaler().fit_transform(X)

model = TSNE(n_components=2, perplexity=30, learning_rate=200, random_state=0)
emb = model.fit_transform(X)

plt.figure(figsize=(8, 6))
plt.scatter(emb[:, 0], emb[:, 1], c=y, cmap="tab10", s=15)
plt.colorbar(label="digit")
plt.title("t-SNE embedding of handwritten digits")
plt.tight_layout()
plt.show()

Παράδειγμα t-SNE


3. Υπερπαράμετροι #

  • perplexity: ουσιαστικός αριθμός γειτόνων (συνήθως 5–50). Υψηλότερες τιμές συλλαμβάνουν περισσότερη συνολική δομή.
  • learning_rate: πολύ μικρός παγιδεύει τη βελτιστοποίηση, πολύ μεγάλος κάνει τα σημεία να απομακρύνονται· 100–1000 συνήθως λειτουργεί.
  • n_iter: τουλάχιστον 1000 επαναλήψεις συν μια φάση early_exaggeration για προθέρμανση.

4. Συμβουλές #

  • Τυποποιήστε τα χαρακτηριστικά και αφαιρέστε διπλότυπα· ο t-SNE είναι ευαίσθητος σε κλίμακα και θόρυβο.
  • Για μεγάλα σύνολα δεδομένων, χρησιμοποιήστε Barnes–Hut (method="barnes_hut") ή υλοποιήσεις επιταχυνόμενες με FFT (openTSNE, FIt-SNE).
  • Ερμηνεύστε τις αποστάσεις ποιοτικά· ο t-SNE διατηρεί τοπικούς γείτονες αλλά όχι τη συνολική γεωμετρία.

5. Σημειώσεις #

  • Ο t-SNE είναι καλύτερος για οπτική επιθεώρηση παρά για μοντελοποίηση κατάντη.
  • Εκτελέστε τον πολλές φορές με διαφορετικά seeds/perplexities για να επιβεβαιώσετε ότι τα μοτίβα είναι σταθερά.
  • Σκεφτείτε UMAP αν χρειάζεστε ταχύτερες ενσωματώσεις ή μετασχηματισμό ορισμένο για νέα δείγματα.