カーネルリッジ回帰

Beginner

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

はじめに

この実験では、Kernel Ridge Regression (KRR) と Python の scikit-learn ライブラリを使ったその実装方法について学びます。KRR は、リッジ回帰とカーネルトリックを組み合わせて、カーネルによって誘導される空間で線形関数を学習します。入力と出力変数の間の非線形関係を処理できる非線形回帰手法です。

VM のヒント

VM の起動が完了したら、左上隅をクリックして ノートブック タブに切り替え、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)について学び、Python の scikit - learn ライブラリを使ってそれを実装する方法を学びました。合成データを生成し、KRR モデルをデータに適合させ、予測関数を可視化し、グリッドサーチを使ってハイパーパラメータを最適化しました。KRR は、変数間の複雑な関係を処理できる強力な非線形回帰手法です。