Kernel Ridge Regression

Beginner

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

Введение

В этом лабе мы узнаем о Kernel Ridge Regression (KRR) и его реализации с использованием библиотеки scikit-learn в Python. KRR комбинирует регрессию с риджем с ядровым трюком для обучения линейной функции в пространстве, индуцированном ядром. Это метод нелинейной регрессии, который может обрабатывать нелинейные зависимости между входными и выходными переменными.

Советы по работе с ВМ

После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Это Guided Lab, который предоставляет пошаговые инструкции, чтобы помочь вам учиться и практиковаться. Внимательно следуйте инструкциям, чтобы выполнить каждый шаг и получить практический опыт. Исторические данные показывают, что это лабораторная работа уровня начальный с процентом завершения 90%. Он получил 91% положительных отзывов от учащихся.

Импортируем библиотеки

Сначала импортируем необходимые библиотеки для этого лаб.

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

Генерируем синтетические данные

Далее сгенерируем некоторые синтетические данные для работы. Создадим синусоидальную целевую функцию и добавим к ней некоторый случайный шум.

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

Теперь обучим модель Kernel Ridge Regression на этих данных. Будем использовать ядро RBF (Radial Basis Function), которое часто используется для нелинейной регрессии.

## Fit Kernel Ridge Regression model
alpha = 1.0  ## Параметр регуляризации
gamma = 0.1  ## Коэффициент ядра для ядра RBF
krr = KernelRidge(alpha=alpha, kernel='rbf', gamma=gamma)
krr.fit(X, y)

Визуализируем предсказанную функцию

После того, как модель обучена, давайте визуализируем предсказанную функцию вместе с исходными точками данных.

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

Оптимизируем гиперпараметры

В предыдущем шаге мы использовали значения гиперпараметров по умолчанию для alpha и gamma. Чтобы повысить производительность модели, мы можем оптимизировать эти гиперпараметры с использованием сеточного поиска.

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)

Визуализируем оптимизированную предсказанную функцию

Наконец, давайте визуализируем предсказанную функцию с использованием оптимизированных гиперпараметров.

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

Резюме

В этом практическом занятии мы изучили Kernel Ridge Regression (KRR) и методы ее реализации с использованием библиотеки scikit - learn в Python. Мы сгенерировали синтетические данные, обучили модель KRR на этих данных, визуализировали предсказанную функцию и оптимизировали гиперпараметры с использованием сеточного поиска. KRR - это мощный метод нелинейной регрессии, который может обрабатывать сложные зависимости между переменными.