はじめに
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ファイル)参考
Ridge
Gallery examples: Compressive sensing: tomography reconstruction with L1 prior (Lasso) Prediction Latency Comparison of ...
PolynomialFeatures
Gallery examples: Release Highlights for scikit-learn 0.24 Time-related feature engineering Comparing Linear Bayesian Re...
mean_squared_error
Gallery examples: Early stopping in Gradient Boosting Gradient Boosting regression Prediction Intervals for Gradient Boo...
Widget List — Jupyter Widgets 8.1.5 documentation
コメント