Comparación de Aprendizaje de Variedades

Beginner

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

Introducción

En este laboratorio, compararemos diferentes algoritmos de Aprendizaje de Variedades para realizar la reducción de dimensionalidad no lineal. El objetivo de esto es reducir la dimensionalidad del conjunto de datos mientras se preservan las características esenciales de los datos originales.

Utilizaremos el conjunto de datos de la curva S, que es un conjunto de datos comúnmente utilizado para la reducción de dimensionalidad. Utilizaremos algoritmos como Embedding Lineal Local, Embedding Isomap, Estandarización Multidimensional, Embedding Espectral y Embedding Estocástico Vecino T-distribuido.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y resolveremos el problema inmediatamente para usted.

Preparación del conjunto de datos

Comenzamos generando el conjunto de datos de la curva S.

import matplotlib.pyplot as plt
from matplotlib import ticker

## unused but required import for doing 3d projections with 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)

Embedding Lineal Local

El Embedding Lineal Local (LLE) es una serie de Análisis de Componentes Principales locales que se comparan globalmente para encontrar la mejor incrustación no lineal. Utilizaremos cuatro métodos diferentes de LLE, es decir, Estandar, Alineación del espacio tangente local, Mapa eigen Hessiano y Embedding Lineal Local 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

Isomap busca una incrustación de menor dimensión que mantenga las distancias geodésicas entre todos los puntos.

isomap = manifold.Isomap(n_neighbors=n_neighbors, n_components=n_components, p=1)
S_isomap = isomap.fit_transform(S_points)

Estandarización Multidimensional

La Estandarización Multidimensional (MDS) busca una representación de baja dimensión de los datos en la que las distancias respeten adecuadamente las distancias en el espacio de alta dimensión original.

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 Reducción de Dimensionalidad No Lineal

Esta implementación utiliza Mapas Eigen Laplacianos, que encuentra una representación de baja dimensión de los datos utilizando una descomposición espectral del Laplaciano del grafo.

spectral = manifold.SpectralEmbedding(
    n_components=n_components, n_neighbors=n_neighbors
)
S_spectral = spectral.fit_transform(S_points)

Embedding Estocástico Vecino T-distribuido

Convierte las similitudes entre los puntos de datos en probabilidades conjuntas y trata de minimizar la divergencia de Kullback-Leibler entre las probabilidades conjuntas de la incrustación de baja dimensión y los datos de alta dimensión.

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)

Resumen

El Aprendizaje de Variedades es un enfoque para la reducción de dimensionalidad no lineal. En este laboratorio, comparamos diferentes algoritmos de Aprendizaje de Variedades como Embeddings Lineales Locales, Embedding Isomap, Estandarización Multidimensional, Embedding Espectral y Embedding Estocástico Vecino T-distribuido para realizar la reducción de dimensionalidad no lineal en el conjunto de datos de la curva S.