[scikit-learn] 13. linear_model.RidgeによるL2正則化

matplotlib Animation

はじめに

sklearn.linear_modelのRidgeにより、線形回帰で過学習を抑制することが可能なL2正則化ができる。ここではノイズの多いデータを対象に、L2正則化のパラメータ(alpha)を調整した時の変化をアニメーションで表示する。

解説

モジュールのインポートなど

バージョン

データの生成

xを0-10のランダムな値10ことして、func(x)でランダムなエラーのある線形データを作成する。

データを表示すると以下のようになる。

PolynomialFeaturesによる多項式の設定

degree=7で7次の多項式を定義する。fit_transformによって、xの値を計算可能な形に変換する。

予測に用いるxの設定

滑らかな予測結果を得たいので、データ間隔の細かいxデータを作成する。

ridge回帰

clf = Ridge(alpha=1e-2)で正則化パラメータαを0.01として設定する。
clf.fit(X_po, y)で計算を行い、y_ridge_em2 = clf.predict(xx_)で計算結果からデータを予測する。

ここでは、パラメータαを1e-2、1e3として計算を行い、予測結果を取得した。

それぞれの予測結果は以下のようになる。αが1e-2の場合はデータに追従するためにうねりが確認できるが、αが1e3の場合は、データにそれほど追従する事なく、滑らかな結果が得られている。

αを変えてデータを取得

alphaを1e-2から1e3まで変化させた時の予測結果、係数の値、平均二乗誤差を取得する。

アニメーションで表示

αによって、変化する予測結果をアニメーションで表示すると以下のようになる。

係数と平均二乗誤差の変化

αの増加に伴って、係数は0に漸近していき、平均二乗誤差は増加することがわかる。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

参考

sklearn.linear_model.Ridge
Examples using sklearn.linear_model.Ridge: Compressive sensing: tomography reconstruction with L1 prior (Lasso) Predicti...
sklearn.preprocessing.PolynomialFeatures
Examples using sklearn.preprocessing.PolynomialFeatures: Release Highlights for scikit-learn 0.24 Time-related feature e...
sklearn.metrics.mean_squared_error
Examples using sklearn.metrics.mean_squared_error: Early stopping in Gradient Boosting Gradient Boosting regression Pred...

コメント