Introdução
Neste laboratório, compararemos diferentes algoritmos de Aprendizagem de Variedades para realizar redução de dimensionalidade não linear. O objetivo é reduzir a dimensionalidade do conjunto de dados, preservando as características essenciais dos dados originais.
Utilizaremos o conjunto de dados S-curve, um conjunto de dados comumente usado para redução de dimensionalidade. Usaremos algoritmos como Locally Linear Embeddings, Isomap Embedding, Multidimensional Scaling, Spectral Embedding e T-distributed Stochastic Neighbor Embedding.
Dicas da Máquina Virtual
Após o arranque da VM, clique no canto superior esquerdo para mudar para a aba Notebook para aceder ao Jupyter Notebook para a prática.
Às vezes, pode ser necessário esperar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.
Se tiver problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão e resolveremos o problema rapidamente para si.
Preparação do Conjunto de Dados
Começamos gerando o conjunto de dados S-curve.
import matplotlib.pyplot as plt
from matplotlib import ticker
## importação não utilizada, mas necessária para fazer projeções 3D com matplotlib < 3.2
import mpl_toolkits.mplot3d ## noqa: F401
from sklearn import manifold, datasets
n_samples = 1500
S_points, S_color = datasets.make_s_curve(n_samples, random_state=0)
Locally Linear Embeddings
O embedding localmente linear (LLE) é uma série de Análises de Componentes Principais locais que são globalmente comparadas para encontrar o melhor embedding não linear. Usaremos quatro métodos diferentes de LLE, ou seja, Padrão, alinhamento de espaço tangente local, eigenmap hessiano e embedding localmente linear modificado.
params = {
"n_neighbors": n_neighbors,
"n_components": n_components,
"eigen_solver": "auto",
"random_state": 0,
}
lle_standard = manifold.LocallyLinearEmbedding(method="standard", **params)
S_standard = lle_standard.fit_transform(S_points)
lle_ltsa = manifold.LocallyLinearEmbedding(method="ltsa", **params)
S_ltsa = lle_ltsa.fit_transform(S_points)
lle_hessian = manifold.LocallyLinearEmbedding(method="hessian", **params)
S_hessian = lle_hessian.fit_transform(S_points)
lle_mod = manifold.LocallyLinearEmbedding(method="modified", **params)
S_mod = lle_mod.fit_transform(S_points)
Embedding Isomap
O Isomap busca um embedding de menor dimensão que mantenha as distâncias geodésicas entre todos os pontos.
isomap = manifold.Isomap(n_neighbors=n_neighbors, n_components=n_components, p=1)
S_isomap = isomap.fit_transform(S_points)
Escalonamento Multidimensional
O escalonamento multidimensional (MDS) busca uma representação de baixa dimensão dos dados na qual as distâncias respeitem bem as distâncias no espaço original de alta dimensão.
md_scaling = manifold.MDS(
n_components=n_components,
max_iter=50,
n_init=4,
random_state=0,
normalized_stress=False,
)
S_scaling = md_scaling.fit_transform(S_points)
Embedding Espectral para Redução de Dimensionalidade Não Linear
Esta implementação utiliza o método de Laplacian Eigenmaps, que encontra uma representação de baixa dimensão dos dados utilizando uma decomposição espectral do Laplaciano do grafo.
spectral = manifold.SpectralEmbedding(
n_components=n_components, n_neighbors=n_neighbors
)
S_spectral = spectral.fit_transform(S_points)
Embedding Estocástico de Vizinhos T-distribuídos
Converte as similaridades entre os pontos de dados em probabilidades conjuntas e tenta minimizar a divergência de Kullback-Leibler entre as probabilidades conjuntas do embedding de baixa dimensão e os dados de alta dimensão.
t_sne = manifold.TSNE(
n_components=n_components,
perplexity=30,
init="random",
n_iter=250,
random_state=0,
)
S_t_sne = t_sne.fit_transform(S_points)
Sumário
Aprendizagem de Variedades é uma abordagem para redução de dimensionalidade não linear. Neste laboratório, comparamos diferentes algoritmos de Aprendizagem de Variedades, como Locally Linear Embeddings, Isomap Embedding, Multidimensional Scaling, Spectral Embedding e T-distributed Stochastic Neighbor Embedding, para realizar a redução de dimensionalidade não linear no conjunto de dados da curva-S.