T Sne.pt
Resumo
- O t-SNE preserva as vizinhanças locais ao corresponder similaridades de pares entre alta e baixa dimensão.
- É otimizado para visualização e frequentemente revela a estrutura de clusters com clareza.
- Os resultados dependem de perplexity, taxa de aprendizagem e inicialização aleatória, então verificações de estabilidade são importantes.
Intuição #
O t-SNE prioriza quem está perto de quem, não distâncias globais fiéis. É melhor interpretado como um mapa de vizinhança para análise exploratória.
Explicação Detalhada #
1. Intuição #
- Construir similaridades de pares (P_{ij}) no espaço original (kernel Gaussiano por ponto, controlado pelo perplexity).
- Definir similaridades (Q_{ij}) no espaço de baixa dimensão usando uma distribuição Student-t de cauda pesada.
- Minimizar a divergência de Kullback–Leibler (\mathrm{KL}(P \parallel Q)) via descida de gradiente.
- A distribuição de cauda pesada evita o efeito de aglomeração ao dar a pontos distantes influência não desprezível.
2. Exemplo em 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()
3. Hiperparâmetros #
perplexity: contagem efetiva de vizinhos (tipicamente 5-50). Valores mais altos capturam mais estrutura global.learning_rate: muito baixo prende a otimização, muito alto faz os pontos se dispersarem; 100-1000 geralmente funciona.n_iter: pelo menos 1000 iterações mais uma fase de aquecimentoearly_exaggeration.
4. Dicas #
- Padronize as características e remova duplicatas; o t-SNE é sensível à escala e ao ruído.
- Para grandes conjuntos de dados, use Barnes-Hut (
method="barnes_hut") ou implementações aceleradas por FFT (openTSNE, FIt-SNE). - Interprete as distâncias qualitativamente; o t-SNE preserva vizinhos locais mas não a geometria global.
5. Notas #
- O t-SNE é melhor para inspeção visual do que para modelagem subsequente.
- Execute-o várias vezes com diferentes seeds/perplexities para confirmar que os padrões são estáveis.
- Considere UMAP quando precisar de incorporações mais rápidas ou um transformador definido para novas amostras.