Techniques d'approximation de noyau dans Scikit-Learn

Machine LearningMachine LearningBeginner
Pratiquer maintenant

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

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Ce tutoriel vous guidera tout au long du processus d'utilisation de techniques d'approximation de noyau dans scikit-learn.

Les méthodes de noyau, telles que les machines à vecteurs de support (SVM), sont des techniques puissantes pour la classification non linéaire. Ces méthodes reposent sur le concept d'une fonction noyau qui projette les données d'entrée dans un espace de caractéristiques de dimension élevée. Cependant, travailler avec des mappages de caractéristiques explicites peut être coûteux en calcul, en particulier pour de grandes bases de données. Les méthodes d'approximation de noyau offrent une solution en générant des approximations de basse dimension de l'espace de caractéristiques de noyau.

Dans ce tutoriel, nous explorerons plusieurs techniques d'approximation de noyau disponibles dans scikit-learn, y compris la méthode de Nystroem, l'approximation du noyau à fonction de base radiale (RBF), l'approximation du noyau Additive Chi Squared (ACS), l'approximation du noyau Skewed Chi Squared (SCS) et l'approximation du noyau polynomial à l'aide de Tensor Sketch. Nous démontrerons comment utiliser ces techniques et discuterons de leurs avantages et limites.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook pour accéder à Jupyter Notebook pour la pratique.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous réglerons rapidement le problème pour vous.


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{{"Techniques d'approximation de noyau dans Scikit-Learn"}} ml/sklearn -.-> lab-71134{{"Techniques d'approximation de noyau dans Scikit-Learn"}} end

Méthode de Nystroem pour l'approximation de noyau

La méthode de Nystroem est une technique générale pour approximer les noyaux en utilisant une approximation de rang faible. Elle effectue un sous-échantillonnage de l'ensemble de données sur lequel le noyau est évalué. Par défaut, elle utilise le noyau RBF, mais elle peut être utilisée avec n'importe quelle fonction noyau ou une matrice de noyau prédéfinie.

Pour utiliser la méthode de Nystroem pour l'approximation de noyau, suivez ces étapes :

  1. Initialisez l'objet Nystroem avec le nombre souhaité de composants (c'est-à-dire la dimension cible de la transformation de caractéristiques).
from sklearn.kernel_approximation import Nystroem

n_components = 100
nystroem = Nystroem(n_components=n_components)
  1. Ajustez l'objet Nystroem aux données d'entraînement.
nystroem.fit(X_train)
  1. Transformez vos données d'entraînement et de test à l'aide de l'objet Nystroem.
X_train_transformed = nystroem.transform(X_train)
X_test_transformed = nystroem.transform(X_test)

Approximation du noyau à fonction de base radiale (RBF)

La classe RBFSampler implémente une mappage approximatif pour le noyau RBF, également connu sous le nom de Random Kitchen Sinks. Cette technique nous permet de modéliser explicitement une carte de noyau avant d'appliquer un algorithme linéaire, tel qu'un SVM linéaire ou une régression logistique.

Pour utiliser RBFSampler pour l'approximation de noyau, suivez ces étapes :

  1. Initialisez l'objet RBFSampler avec la valeur souhaitée de gamma (le paramètre du noyau RBF) et le nombre de composants.
from sklearn.kernel_approximation import RBFSampler

gamma = 0.1
n_components = 100
rbf_sampler = RBFSampler(gamma=gamma, n_components=n_components)
  1. Ajustez l'objet RBFSampler aux données d'entraînement.
rbf_sampler.fit(X_train)
  1. Transformez vos données d'entraînement et de test à l'aide de l'objet RBFSampler.
X_train_transformed = rbf_sampler.transform(X_train)
X_test_transformed = rbf_sampler.transform(X_test)

Approximation du noyau Additive Chi Squared (ACS)

Le noyau ACS est un noyau sur des histogrammes, couramment utilisé en vision par ordinateur. La classe AdditiveChi2Sampler fournit une mappage approximatif pour ce noyau.

Pour utiliser AdditiveChi2Sampler pour l'approximation de noyau, suivez ces étapes :

  1. Initialisez l'objet AdditiveChi2Sampler avec le nombre souhaité d'échantillons (n) et le paramètre de régularisation (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. Ajustez l'objet AdditiveChi2Sampler aux données d'entraînement.
additive_chi2_sampler.fit(X_train)
  1. Transformez vos données d'entraînement et de test à l'aide de l'objet AdditiveChi2Sampler.
X_train_transformed = additive_chi2_sampler.transform(X_train)
X_test_transformed = additive_chi2_sampler.transform(X_test)

Approximation du noyau Skewed Chi Squared (SCS)

Le noyau SCS est une variante du noyau exponentiated chi squared qui permet une approximation simple de Monte Carlo de la carte de caractéristiques. La classe SkewedChi2Sampler fournit une mappage approximatif pour ce noyau.

Pour utiliser SkewedChi2Sampler pour l'approximation de noyau, suivez ces étapes :

  1. Initialisez l'objet SkewedChi2Sampler avec le nombre souhaité d'échantillons (n) et le paramètre de régularisation (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. Ajustez l'objet SkewedChi2Sampler aux données d'entraînement.
skewed_chi2_sampler.fit(X_train)
  1. Transformez vos données d'entraînement et de test à l'aide de l'objet SkewedChi2Sampler.
X_train_transformed = skewed_chi2_sampler.transform(X_train)
X_test_transformed = skewed_chi2_sampler.transform(X_test)

Approximation du noyau polynomial via Tensor Sketch

Le noyau polynomial est une fonction noyau populaire qui modélise les interactions entre les caractéristiques. La classe PolynomialCountSketch fournit une méthode scalable pour approximer ce noyau en utilisant l'approche TensorSketch.

Pour utiliser PolynomialCountSketch pour l'approximation de noyau, suivez ces étapes :

  1. Initialisez l'objet PolynomialCountSketch avec le degré souhaité (d) et le nombre de composants.
from sklearn.kernel_approximation import PolynomialCountSketch

degree = 3
n_components = 100
polynomial_count_sketch = PolynomialCountSketch(degree=degree, n_components=n_components)
  1. Ajustez l'objet PolynomialCountSketch aux données d'entraînement.
polynomial_count_sketch.fit(X_train)
  1. Transformez vos données d'entraînement et de test à l'aide de l'objet PolynomialCountSketch.
X_train_transformed = polynomial_count_sketch.transform(X_train)
X_test_transformed = polynomial_count_sketch.transform(X_test)

Sommaire

L'approximation de noyau est une technique puissante qui nous permet d'utiliser efficacement les méthodes de noyau, en particulier pour les grands ensembles de données. Dans ce tutoriel, nous avons exploré plusieurs méthodes d'approximation de noyau disponibles dans scikit-learn, y compris la méthode de Nystroem, l'approximation du noyau RBF, l'approximation du noyau ACS, l'approximation du noyau SCS et l'approximation du noyau polynomial en utilisant Tensor Sketch. Nous avons appris à utiliser ces techniques et discuté de leurs avantages et limites. En exploitant l'approximation de noyau, nous pouvons appliquer efficacement les méthodes de noyau à une large gamme de tâches d'apprentissage automatique.