Comparação de Aprendizagem de Variedades

Beginner

This tutorial is from open-source community. Access the source code

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.