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.
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.