Isomap.pt
Resumo
- O Isomap constrói um grafo de vizinhança, estima distâncias geodésicas e incorpora os pontos para preservar essas distâncias.
- É eficaz quando os dados se encontram em variedades curvas, como estruturas do tipo Swiss-roll.
_neighbors é crítico porque controla a conectividade do grafo e a qualidade da incorporação.
Intuição #
O Isomap substitui a distância em linha reta pela distância medida ao longo da variedade dos dados. Ao preservar as distâncias da variedade, consegue desdobrar geometria curva num mapa significativo de baixa dimensão.
Explicação Detalhada #
1. Ideia #
- Construir um grafo de vizinhança com um número fixo de vizinhos (k) ou um raio (\varepsilon).
- Calcular as distâncias de caminho mais curto (geodésicas) ao longo do grafo para cada par de amostras.
- Alimentar a matriz de distâncias resultante ao MDS clássico para obter a incorporação de baixa dimensão.
Este fluxo de trabalho mantém as regiões distantes separadas enquanto desdobra a superfície curva.
2. Exemplo em Python #
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
from sklearn.datasets import make_swiss_roll
from sklearn.manifold import Isomap
X, color = make_swiss_roll(n_samples=1500, noise=0.05, random_state=0)
iso = Isomap(n_neighbors=10, n_components=2)
emb = iso.fit_transform(X)
fig, axes = plt.subplots(1, 2, figsize=(12, 5))
axes[0].scatter(X[:, 0], X[:, 2], c=color, cmap="Spectral", s=5)
axes[0].set_title("Original Swiss roll")
axes[1].scatter(emb[:, 0], emb[:, 1], c=color, cmap="Spectral", s=5)
axes[1].set_title("Isomap embedding")
for ax in axes:
ax.set_xticks([])
ax.set_yticks([])
plt.tight_layout()
plt.show()
3. Hiperparâmetros #
n_neighbors: governa a vizinhança local; muito pequeno quebra o grafo, muito grande dilui a estrutura da variedade.n_components: geralmente 2 ou 3 para visualização, mas valores mais altos são possíveis.- Trate duplicatas/amostras ruidosas escalando as características ou adicionando ruído leve antes de construir o grafo.
4. Prós e contras #
| Prós | Contras |
|---|---|
| Preserva a estrutura e as distâncias da variedade | Sensível a grafos de vizinhança ruidosos |
| Produz visualizações intuitivas | Requer cálculo de caminhos mais curtos para todos os pares |
5. Notas #
- Isomap = grafo de vizinhança + MDS; escolha os vizinhos cuidadosamente para refletir a topologia verdadeira.
- Inspecione os componentes conectados do grafo: pontos isolados distorcerão a incorporação.
- Considere UMAP ou t-SNE se precisar de incorporações mais rápidas ou melhor preservação de densidades locais.