Técnicas de Aproximación de Kernel en Scikit-Learn

Machine LearningMachine LearningBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Este tutorial lo guiará a través del proceso de uso de técnicas de aproximación de kernel en scikit-learn.

Los métodos de kernel, como las máquinas de vectores de soporte (SVM), son técnicas poderosas para la clasificación no lineal. Estos métodos se basan en el concepto de una función de kernel que mapea los datos de entrada a un espacio de características de alta dimensión. Sin embargo, trabajar con mapeos de características explícitos puede ser computacionalmente costoso, especialmente para conjuntos de datos grandes. Los métodos de aproximación de kernel proporcionan una solución al generar aproximaciones de baja dimensión del espacio de características de kernel.

En este tutorial, exploraremos varias técnicas de aproximación de kernel disponibles en scikit-learn, incluyendo el método de Nystroem, la aproximación del kernel de función radial básica (RBF), la aproximación del kernel de chi cuadrado aditivo (ACS), la aproximación del kernel de chi cuadrado sesgado (SCS) y la aproximación del kernel polinomial usando Tensor Sketch. Demonstraremos cómo usar estas técnicas y discutiremos sus ventajas y limitaciones.

Consejos sobre la VM

Una vez que se haya completado 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 operaciones no puede automatizarse debido a las limitaciones de Jupyter Notebook.

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/DataPreprocessingandFeatureEngineeringGroup(["Data Preprocessing and Feature Engineering"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/kernel_approximation("Kernel Approximation") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/kernel_approximation -.-> lab-71134{{"Técnicas de Aproximación de Kernel en Scikit-Learn"}} ml/sklearn -.-> lab-71134{{"Técnicas de Aproximación de Kernel en Scikit-Learn"}} end

Método de Nystroem para Aproximación de Kernel

El método de Nystroem es una técnica general para aproximar kernels utilizando una aproximación de rango bajo. Submuestra el conjunto de datos en el que se evalúa el kernel. Por defecto, utiliza el kernel RBF, pero se puede utilizar con cualquier función de kernel o una matriz de kernel precomputada.

Para utilizar el método de Nystroem para la aproximación de kernel, siga estos pasos:

  1. Inicialice el objeto Nystroem con el número deseado de componentes (es decir, la dimensionalidad objetivo de la transformación de características).
from sklearn.kernel_approximation import Nystroem

n_components = 100
nystroem = Nystroem(n_components=n_components)
  1. Ajuste el objeto Nystroem a sus datos de entrenamiento.
nystroem.fit(X_train)
  1. Transforme sus datos de entrenamiento y prueba utilizando el objeto Nystroem.
X_train_transformed = nystroem.transform(X_train)
X_test_transformed = nystroem.transform(X_test)

Aproximación del Kernel de Función Radial Básica (RBF)

La clase RBFSampler implementa un mapeo aproximado para el kernel RBF, también conocido como Random Kitchen Sinks. Esta técnica nos permite modelar explícitamente un mapeo de kernel antes de aplicar un algoritmo lineal, como SVM lineal o regresión logística.

Para utilizar RBFSampler para la aproximación de kernel, siga estos pasos:

  1. Inicialice el objeto RBFSampler con el valor deseado de gamma (el parámetro del kernel RBF) y el número de componentes.
from sklearn.kernel_approximation import RBFSampler

gamma = 0.1
n_components = 100
rbf_sampler = RBFSampler(gamma=gamma, n_components=n_components)
  1. Ajuste el objeto RBFSampler a sus datos de entrenamiento.
rbf_sampler.fit(X_train)
  1. Transforme sus datos de entrenamiento y prueba utilizando el objeto RBFSampler.
X_train_transformed = rbf_sampler.transform(X_train)
X_test_transformed = rbf_sampler.transform(X_test)

Aproximación del Kernel de Chi Cuadrado Aditivo (ACS)

El kernel ACS es un kernel sobre histogramas, comúnmente utilizado en visión por computadora. La clase AdditiveChi2Sampler proporciona un mapeo aproximado para este kernel.

Para utilizar AdditiveChi2Sampler para la aproximación de kernel, siga estos pasos:

  1. Inicialice el objeto AdditiveChi2Sampler con el número deseado de muestras (n) y el parámetro de regularización (c).
from sklearn.kernel_approximation import AdditiveChi2Sampler

n_samples = 1000
c = 1.0
additive_chi2_sampler = AdditiveChi2Sampler(n_samples=n_samples, sample_steps=2, sample_interval=2, sample_octave=2, c=c)
  1. Ajuste el objeto AdditiveChi2Sampler a sus datos de entrenamiento.
additive_chi2_sampler.fit(X_train)
  1. Transforme sus datos de entrenamiento y prueba utilizando el objeto AdditiveChi2Sampler.
X_train_transformed = additive_chi2_sampler.transform(X_train)
X_test_transformed = additive_chi2_sampler.transform(X_test)

Aproximación del Kernel de Chi Cuadrado Sesgado (SCS)

El kernel SCS es una variante del kernel de chi cuadrado exponenciado que permite una aproximación simple de Monte Carlo del mapa de características. La clase SkewedChi2Sampler proporciona un mapeo aproximado para este kernel.

Para utilizar SkewedChi2Sampler para la aproximación de kernel, siga estos pasos:

  1. Inicialice el objeto SkewedChi2Sampler con el número deseado de muestras (n) y el parámetro de regularización (c).
from sklearn.kernel_approximation import SkewedChi2Sampler

n_samples = 1000
c = 1.0
skewed_chi2_sampler = SkewedChi2Sampler(n_samples=n_samples, sample_steps=2, sample_interval=2, sample_octave=1, c=c)
  1. Ajuste el objeto SkewedChi2Sampler a sus datos de entrenamiento.
skewed_chi2_sampler.fit(X_train)
  1. Transforme sus datos de entrenamiento y prueba utilizando el objeto SkewedChi2Sampler.
X_train_transformed = skewed_chi2_sampler.transform(X_train)
X_test_transformed = skewed_chi2_sampler.transform(X_test)

Aproximación del Kernel Polinomial a través del Bosquejo de Tensor

El kernel polinomial es una función de kernel popular que modela las interacciones entre las características. La clase PolynomialCountSketch proporciona un método escalable para aproximar este kernel utilizando el enfoque de Bosquejo de Tensor.

Para utilizar PolynomialCountSketch para la aproximación de kernel, siga estos pasos:

  1. Inicialice el objeto PolynomialCountSketch con el grado deseado (d) y el número de componentes.
from sklearn.kernel_approximation import PolynomialCountSketch

degree = 3
n_components = 100
polynomial_count_sketch = PolynomialCountSketch(degree=degree, n_components=n_components)
  1. Ajuste el objeto PolynomialCountSketch a sus datos de entrenamiento.
polynomial_count_sketch.fit(X_train)
  1. Transforme sus datos de entrenamiento y prueba utilizando el objeto PolynomialCountSketch.
X_train_transformed = polynomial_count_sketch.transform(X_train)
X_test_transformed = polynomial_count_sketch.transform(X_test)

Resumen

La aproximación de kernel es una técnica poderosa que nos permite utilizar métodos de kernel de manera eficiente, especialmente para conjuntos de datos grandes. En este tutorial, exploramos varios métodos de aproximación de kernel disponibles en scikit-learn, incluyendo el método de Nystroem, la aproximación del kernel RBF, la aproximación del kernel ACS, la aproximación del kernel SCS y la aproximación del kernel polinomial utilizando Bosquejo de Tensor. Aprendimos cómo utilizar estas técnicas y discutimos sus ventajas y limitaciones. Al aprovechar la aproximación de kernel, podemos aplicar efectivamente métodos de kernel a una amplia variedad de tareas de aprendizaje automático.