Scikit-Learn によるリッジ回帰の例

Beginner

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

はじめに

この実験では、推定器の共線係数を推定するためにリッジ回帰をどのように使用するかを示します。リッジ回帰は、モデルに L2 正則化を適用する線形回帰の一種です。

この例では、10x10 のヒルベルト行列を生成し、リッジ回帰を使用して行列の係数を推定します。

VM のヒント

VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。

時々、Jupyter Notebook が読み込み終了するまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。

学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

必要なライブラリをインポートする

このステップでは、この例に必要なライブラリをインポートします。

import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model

データを生成する

このステップでは、10x10 のヒルベルト行列を生成し、目的変数 y を全て 1 のベクトルに設定します。

X = 1.0 / (np.arange(1, 11) + np.arange(0, 10)[:, np.newaxis])
y = np.ones(10)

リッジ回帰パスを計算する

このステップでは、異なる正則化強度に対するリッジ回帰パスを計算します。

n_alphas = 200
alphas = np.logspace(-10, -2, n_alphas)

coefs = []
for a in alphas:
    ridge = linear_model.Ridge(alpha=a, fit_intercept=False)
    ridge.fit(X, y)
    coefs.append(ridge.coef_)

結果を可視化する

このステップでは、リッジ回帰パスの結果を可視化します。

ax = plt.gca()

ax.plot(alphas, coefs)
ax.set_xscale("log")
ax.set_xlim(ax.get_xlim()[::-1])  ## reverse axis
plt.xlabel("alpha")
plt.ylabel("weights")
plt.title("Ridge coefficients as a function of the regularization")
plt.axis("tight")
plt.show()

まとめ

この実験では、推定器の共線的係数を推定するためにリッジ回帰をどのように使用するかを示しました。10x10 のヒルベルト行列を生成し、リッジ回帰を使用して行列の係数を推定しました。その後、リッジ回帰パスの結果を可視化しました。リッジ回帰は、条件数の非常に悪い行列の変動(ノイズ)を低減するのに役立ちます。特定の正則化強度を設定することで、正則化の効果と二乗損失関数のバランスをとることができます。