Régression ridge noyau

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

Dans ce laboratoire, nous allons apprendre à connaître la régression ridge noyau (Kernel Ridge Regression - KRR) et son implantation à l'aide de la bibliothèque scikit - learn en Python. La KRR combine la régression ridge avec la technique du noyau pour apprendre une fonction linéaire dans l'espace induit par le noyau. C'est une méthode de régression non linéaire qui peut gérer les relations non linéaires entre les variables d'entrée et de sortie.

Conseils sur la machine virtuelle (VM)

Une fois le démarrage de la VM 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 des commentaires après la session, et nous réglerons rapidement le problème pour vous.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/model_selection("Model Selection") sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/kernel_ridge("Kernel Ridge Regression") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/model_selection -.-> lab-71096{{"Régression ridge noyau"}} sklearn/kernel_ridge -.-> lab-71096{{"Régression ridge noyau"}} ml/sklearn -.-> lab-71096{{"Régression ridge noyau"}} end

Importation des bibliothèques

Tout d'abord, importons les bibliothèques requises pour ce laboratoire.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.kernel_ridge import KernelRidge

Générer des données synthétiques

Ensuite, générons quelques données synthétiques avec lesquelles travailler. Nous allons créer une fonction cible sinusoïdale et y ajouter du bruit aléatoire.

## Generate input data
np.random.seed(0)
X = np.sort(5 * np.random.rand(100, 1), axis=0)
y = np.sin(X).ravel()
y += 0.5 * (0.5 - np.random.rand(y.size))

Ajuster le modèle de régression ridge noyau

Maintenant, ajustons un modèle de régression ridge noyau aux données. Nous utiliserons le noyau RBF (Radial Basis Function), qui est couramment utilisé pour la régression non linéaire.

## Fit Kernel Ridge Regression model
alpha = 1.0  ## Paramètre de régularisation
gamma = 0.1  ## Coefficient du noyau pour le noyau RBF
krr = KernelRidge(alpha=alpha, kernel='rbf', gamma=gamma)
krr.fit(X, y)

Visualiser la fonction prédite

Une fois que le modèle est entraîné, visualisons la fonction prédite ainsi que les points de données originaux.

## Generate test data points
X_test = np.linspace(0, 5, 100)[:, None]

## Predict the target values
y_pred = krr.predict(X_test)

## Visualize the data and the predicted function
plt.scatter(X, y, color='blue', label='Données')
plt.plot(X_test, y_pred, color='red', label='Fonction prédite')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.show()

Optimiser les hyperparamètres

Dans l'étape précédente, nous avons utilisé les valeurs par défaut des hyperparamètres pour alpha et gamma. Pour améliorer les performances du modèle, nous pouvons optimiser ces hyperparamètres en utilisant la recherche en grille.

from sklearn.model_selection import GridSearchCV

## Define the parameter grid
param_grid = {'alpha': [1e-3, 1e-2, 1e-1, 1, 10],
              'gamma': [1e-3, 1e-2, 1e-1, 1, 10]}

## Perform grid search
grid_search = GridSearchCV(krr, param_grid, cv=5)
grid_search.fit(X, y)

## Get the best hyperparameters
best_alpha = grid_search.best_params_['alpha']
best_gamma = grid_search.best_params_['gamma']
best_krr = grid_search.best_estimator_

print("Best alpha:", best_alpha)
print("Best gamma:", best_gamma)

Visualiser la fonction prédite optimisée

Enfin, visualisons la fonction prédite en utilisant les hyperparamètres optimisés.

## Predict the target values using the optimized model
y_pred_opt = best_krr.predict(X_test)

## Visualize the data and the optimized predicted function
plt.scatter(X, y, color='blue', label='Données')
plt.plot(X_test, y_pred_opt, color='green', label='Fonction prédite optimisée')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.show()

Sommaire

Dans ce laboratoire, nous avons appris à propos de la régression ridge noyau (KRR) et de la manière de la mettre en œuvre à l'aide de la bibliothèque scikit - learn en Python. Nous avons généré des données synthétiques, ajusté un modèle KRR aux données, visualisé la fonction prédite et optimisé les hyperparamètres en utilisant la recherche en grille. La KRR est une méthode de régression non linéaire puissante qui peut gérer les relations complexes entre les variables.