Regresión Kernel Ridge

Beginner

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

Introducción

En este laboratorio, aprenderemos sobre el Kernel Ridge Regression (KRR) y su implementación utilizando la biblioteca scikit-learn en Python. El KRR combina la regresión ridge con el truco del kernel para aprender una función lineal en el espacio inducido por el kernel. Es un método de regresión no lineal que puede manejar relaciones no lineales entre las variables de entrada y salida.

Consejos sobre la VM

Una vez que se haya iniciado 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 lo resolveremos rápidamente para usted.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 90%. Ha recibido una tasa de reseñas positivas del 91% por parte de los estudiantes.

Importar bibliotecas

Primero, importemos las bibliotecas necesarias para este laboratorio.

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

Generar datos sintéticos

A continuación, generemos algunos datos sintéticos con los que trabajar. Crearemos una función objetivo senoidal y le agregaremos algo de ruido aleatorio.

## 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))

Ajustar el modelo de regresión Kernel Ridge

Ahora, ajustemos un modelo de regresión Kernel Ridge a los datos. Usaremos el kernel RBF (Función Base Radial), que se utiliza comúnmente para la regresión no lineal.

## Fit Kernel Ridge Regression model
alpha = 1.0  ## Regularization parameter
gamma = 0.1  ## Kernel coefficient for RBF kernel
krr = KernelRidge(alpha=alpha, kernel='rbf', gamma=gamma)
krr.fit(X, y)

Visualizar la función predicha

Una vez que el modelo está entrenado, visualicemos la función predicha junto con los puntos de datos originales.

## 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='Data')
plt.plot(X_test, y_pred, color='red', label='Predicted Function')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.show()

Optimizar hiperparámetros

En el paso anterior, usamos valores predeterminados de hiperparámetros para alpha y gamma. Para mejorar el rendimiento del modelo, podemos optimizar estos hiperparámetros usando búsqueda en cuadrícula (grid search).

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)

Visualizar la función predicha optimizada

Finalmente, visualicemos la función predicha usando los hiperparámetros optimizados.

## 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='Data')
plt.plot(X_test, y_pred_opt, color='green', label='Optimized Predicted Function')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.show()

Resumen

En este laboratorio, aprendimos sobre la regresión Kernel Ridge (KRR) y cómo implementarla usando la biblioteca scikit - learn en Python. Generamos datos sintéticos, ajustamos un modelo KRR a los datos, visualizamos la función predicha y optimizamos los hiperparámetros usando búsqueda en cuadrícula. La KRR es un método de regresión no lineal poderoso que puede manejar relaciones complejas entre variables.