はじめに
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ファイル)参考
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...
コメント