Kernel Ridge Regression

Machine LearningMachine LearningBeginner
Jetzt üben

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

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir uns mit Kernel Ridge Regression (KRR) und ihrer Implementierung mithilfe der scikit-learn-Bibliothek in Python befassen. KRR kombiniert Ridge Regression mit dem Kernel-Trick, um eine lineare Funktion im durch den Kernel induzierten Raum zu lernen. Es ist eine nicht-lineare Regressionsmethode, die nicht-lineare Beziehungen zwischen Eingangs- und Ausgangsvariablen handhaben kann.

Tipps für die VM

Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback ab, und wir werden das Problem für Sie prompt beheben.


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{{"Kernel Ridge Regression"}} sklearn/kernel_ridge -.-> lab-71096{{"Kernel Ridge Regression"}} ml/sklearn -.-> lab-71096{{"Kernel Ridge Regression"}} end

Bibliotheken importieren

Zunächst importieren wir die erforderlichen Bibliotheken für dieses Lab.

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

Synthetische Daten generieren

Als nächstes generieren wir einige synthetische Daten, mit denen wir arbeiten können. Wir werden eine sinusförmige Zielfunktion erstellen und ihr einige zufälliges Rauschen hinzufügen.

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

Kernel Ridge Regression-Modell anpassen

Jetzt passen wir ein Kernel Ridge Regression-Modell an die Daten an. Wir werden den RBF (Radial Basis Function)-Kernel verwenden, der für die nicht-lineare Regression häufig eingesetzt wird.

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

Visualisiere die vorhergesagte Funktion

Sobald das Modell trainiert ist, visualisieren wir die vorhergesagte Funktion zusammen mit den ursprünglichen Datenpunkten.

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

Hyperparameter optimieren

Im vorherigen Schritt haben wir die Standardwerte für die Hyperparameter alpha und gamma verwendet. Um die Leistung des Modells zu verbessern, können wir diese Hyperparameter mit Hilfe der Grid-Search optimieren.

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)

Visualisiere die vorhergesagte Funktion mit optimierten Hyperparametern

Schließlich visualisieren wir die vorhergesagte Funktion mit den optimierten Hyperparametern.

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

Zusammenfassung

In diesem Lab haben wir über Kernel Ridge Regression (KRR) gelernt und erfahren, wie man sie mit der scikit-learn-Bibliothek in Python implementiert. Wir haben synthetische Daten generiert, ein KRR-Modell an die Daten angepasst, die vorhergesagte Funktion visualisiert und die Hyperparameter mit Hilfe der Grid-Search optimiert. KRR ist eine leistungsstarke Methode zur nicht-linearen Regression, die komplexe Zusammenhänge zwischen Variablen behandeln kann.