[ipywidgets] 35. FloatLogSliderで正則化パラメータを調整してL2正則化

ipywidgets

はじめに

sklearn.linear_modelのRidgeにより、過学習を抑制した線形回帰(L2正則化)ができる。ここではノイズの多いデータを対象に、ipywidgetsのFloatLogSliderでL2正則化のパラメータ(alpha)を調整する方法について説明する。

解説

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

バージョン

データの生成

xを0-10のランダムな値20ことして、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、1e5として計算を行い、予測結果を取得した。

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

FloatLogSliderでαを調整して結果を表示

FloatLogSliderのスライダーを動かす頃でαを調整し、そのalphaによる回帰結果を直ちに表示する。これによって、変化する予測結果を対話的に理解することができるようになる。

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

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

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

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

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

参考

sklearn.linear_model.Ridge
Examples using sklearn.linear_model.Ridge: Compressive sensing: tomography reconstruction with L1 prior (Lasso) Compressive sensing: tomography reconstruction w...
sklearn.preprocessing.PolynomialFeatures
Examples using sklearn.preprocessing.PolynomialFeatures: Release Highlights for scikit-learn 0.24 Release Highlights for scikit-learn 0.24 Time-related feature ...
sklearn.metrics.mean_squared_error
Examples using sklearn.metrics.mean_squared_error: Gradient Boosting regression Gradient Boosting regression Prediction Intervals for Gradient Boosting Regressi...
Widget List — Jupyter Widgets 8.0.2 documentation

コメント