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

Machine LearningMachine LearningBeginner
今すぐ練習

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

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

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

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

VMのヒント

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

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-49270{{"Scikit-Learn によるリッジ回帰の例"}} end

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

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

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のヒルベルト行列を生成し、リッジ回帰を使用して行列の係数を推定しました。その後、リッジ回帰パスの結果を可視化しました。リッジ回帰は、条件数の非常に悪い行列の変動(ノイズ)を低減するのに役立ちます。特定の正則化強度を設定することで、正則化の効果と二乗損失関数のバランスをとることができます。