Ridge / Lasso / Elastic Net — 正則化の論点をやさしくまとめる
機械学習で過学習(オーバーフィッティング)を避け、モデルを安定化させるための代表的な手法について、直感と実践のポイントを整理します。図を見ながらイメージすると理解が早いです。
なぜ正則化するのか
モデルが訓練データに過度に適合すると、ノイズまで学習して新しいデータで性能が落ちます。正則化は「係数に罰則を与える」ことで過度の振れ幅を抑え、汎化性能(未知データでの性能)を改善します。
代表的な考え方:
- 目的
- 誤差(RSS)を小さくすることに加え、係数の大きさにもペナルティを課す。
Lasso(L1)の直感 — 特徴量選択ができる
コスト関数の形: RSS + λ * Σ |βj|
ポイント:
- 係数の絶対値の和を罰則にする(L1ノルム)。
- 幾何的に見ると、罰則の許容領域が「ひし形」のようになり、最適解がその角(頂点)で決まりやすく、結果としていくつかの係数がちょうどゼロになる。
- → 不要な説明変数を自動で選択(ゼロにする)ので、変数選択を同時に行いたい場面で有効。
注意点:相関の強い説明変数が複数あると、Lassoはそのうちのどれか一つだけを選びがち(選ばれる変数が不安定になることがある)。
Ridge(L2)の直感 — 全体を安定化する
コスト関数の形: RSS + λ * Σ βj2
ポイント:
- L2ノルム(係数の二乗和)を罰則にする。
- 幾何的に罰則の領域は「円形」になり、最適解は軸に張り付かず、係数はゼロになりにくい。
- → 相関の高い特徴量がある場合でも、それらをまとめて小さくする性質があり、推定が安定する。
注意点:変数選択は行わない(係数はゼロにならず、ただし小さくなる)。
Elastic Net — Lasso と Ridge の“いいとこ取り”
コスト関数の形(代表的表記):
RSS + λ ( α Σ |βj| + (1-α) Σ βj2 )
ここで α(0〜1)は L1 と L2 の重みのバランス。
特徴:
- α = 1 なら Lasso、α = 0 なら Ridge。
- 0 < α < 1 のとき、Elastic Net は一部の係数をゼロにできる一方で、相関の高い説明変数群はまとめて残す傾向がある。
- → 多くの説明変数があり、かつ相関の強い変数群が存在する実データで特に有効。
どの手法を選ぶか(実務上の指針)
- 特徴量が少ない/相関が弱い:Ridge もしくは Lasso、どちらでも状況次第。モデル解釈(変数選択)を優先するなら Lasso。
- 特徴量が多く、相関の高い群がある:Elastic Net を優先。Lasso 単体より安定する。
- 単純に予測性能を最大化したい:クロスバリデーションで λ(と α)をチューニングして比較するのが最も確実。
- 解釈性(どの変数を採用するか)が必要:Lasso / Elastic Net(小さい α ほど Ridge 寄り)で調整。
scikit-learn の例(Python)
簡単なコード例:Elastic Net を使ってハイパーパラメータをグリッドサーチする例。
from sklearn.linear_model import ElasticNet
from sklearn.model_selection import GridSearchCV
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
# パイプライン(標準化 → ElasticNet)
pipe = make_pipeline(StandardScaler(), ElasticNet(max_iter=5000))
param_grid = {
"elasticnet__alpha": [0.01, 0.1, 1.0], # 正則化強さ(λに相当)
"elasticnet__l1_ratio": [0.1, 0.5, 0.9], # α(L1とL2のバランス)
}
gs = GridSearchCV(pipe, param_grid, cv=5, scoring="neg_mean_squared_error")
gs.fit(X_train, y_train)
print("best params:", gs.best_params_)
print("best CV score:", gs.best_score_)
ポイント:
実務的な小技・注意点
まとめ
正則化は「誤差を抑えつつ係数に罰則を課す」ことで汎化を改善します。Lasso(L1)はゼロにして特徴量選択ができ、Ridge(L2)は全体を安定化します。Elastic Net は両者のバランスをとり、実務で最も汎用性が高いことが多いです。最終的にはクロスバリデーションでハイパーパラメータを探索して選択しましょう。