【スパースな解が欲しいならコレ!】L1正則化とは?特徴量選択にも効く賢いペナルティ🧠⚖️
「特徴量が多すぎてモデルが過学習しそう…」
「できれば、重要な特徴だけ残したい!」
そんな願いをかなえてくれるのが、**L1正則化(L1 Regularization)**です✨
この記事では、L1正則化の仕組み、効果、L2との違いなどをわかりやすく解説します!
🔷 L1正則化とは?
L1正則化とは、モデルの重みの絶対値の合計にペナルティをかける正則化手法です。
数式で書くと👇
最小化する目的関数:
Loss=損失関数+λ∑i∣wi∣\text{Loss} = \text{損失関数} + \lambda \sum_i |w_i|
ここで:
-
wiw_i:各パラメータ(重み)
-
λ\lambda:正則化の強さを調整するハイパーパラメータ
この式のポイントは、“重みを0に近づける”ように圧力をかけること⚖️
🎯 L1正則化のメリット
✅ 特徴選択ができる(スパース性)🌱
L1正則化の最大の特徴は、
不要な重みを完全に0にすることがある点です!
これにより:
-
不要な特徴量を自動で無視できる
-
解釈性の高いモデルになる(どの特徴が効いてるか明確)
といった効果が得られます✨
🔄 L2正則化との違い
項目 | L1正則化 | L2正則化 |
---|---|---|
ペナルティ内容 | ( \sum | w_i |
スパースな重み | 得意(0が多い) | 苦手(小さくなるだけ) |
計算安定性 | やや不安定 | 安定性高め |
主な用途 | 特徴選択・モデルの簡素化 | 過学習の抑制 |
どちらも過学習対策に使われますが、
「必要な特徴だけ選びたい」なら L1、
「全体をなめらかにしたい」なら L2 が向いています🧠
🧪 実装例(Python・scikit-learn)
from sklearn.linear_model import Lasso
model = Lasso(alpha=0.1) # Lasso回帰 = L1正則化付き線形回帰
model.fit(X_train, y_train)
print(model.coef_) # 0になってる特徴量に注目!
alpha
が大きいほど、より多くの重みが0になります。
正則化の強さはハイパーパラメータチューニングで調整🔧
🤖 応用分野
-
特徴選択を重視する線形回帰や分類モデル
-
高次元データ(例:ゲノム、テキスト)
-
解釈性が重要な統計モデル(スパース回帰)
-
機械学習モデルの前処理としてのスパース表現
✅ まとめ
L1正則化とは、
-
重みの絶対値にペナルティをかける手法
-
不要な特徴量を自動で排除(スパース化)
-
モデルの簡素化と解釈性の向上に効果的
-
Lasso回帰などで簡単に使える
という、実用性・解釈性を両立できる強力な正則化テクニックです📉
「使える特徴だけで、スマートに予測したい!」
そんなときは、ぜひL1正則化を活用してみてくださいね😉✨