回帰モデルにおけるL1正則化とL2正則化の効果
概要
回帰モデルとは、与えられた入力を用いて目標変数を予測するモデルです。
回帰モデルでは過学習を防ぐため、誤差関数(二乗誤差関数など)に次の式で表される正則化項を加えて最小化します。
この形の正則化項を用いる回帰をブリッジ回帰と呼びます。
特にの時をLasso回帰、の時をRidge回帰と呼びます。また、それぞれに用いられている正則加項をL1ノルム、L2ノルムと呼びます。
L1ノルムとL2ノルムの特徴を簡単にまとめると次のようになります。
- L1ノルムはパラメータの一部を完全に0にするため、モデルの推定と変数選択を同時に行うことができる
- 特に次元数>>データ数の状況で強力
- L2ノルムは微分可能であり解析的に解けるが、L1ノルムは 解析的に計算出来ない
- L1ノルムには様々な推定アルゴリズムが提案されている
また、L1ノルムには
- 次元が標本数より大きい時、高々個の変数までしか選択できない
- 説明変数間に強い相関がある場合、相関を捉えきれず適切な変数選択が行われるとは限らない
といった問題があり、これを解決するために、L1ノルムとL2ノルムを線形結合したElastic Netというモデルも提案されています。
Elastic NetはRidge回帰とLasso回帰の両方の性質を有しています。
こういった特徴が実際にはどのような結果として表れるか、多項式回帰を用いて実験してみました。
コード
今回はPythonのscikit-learnという機械学習ライブラリを用いて実験しました、
コードは次のリンクにあります。
Regularization by Bridge Regression
実験
データの生成に用いた関数は次式になります。
この関数にに従う乱数を加えたデータ20個を用いました。
結果は次のようになりました。
今回の場合、L2ノルムを用いた場合は若干過学習気味に、L1ノルムを用いた場合は正則化の効果が程よく得られてる印象を受けます。Elastic NetはL1とL2の中間くらいのモデリングになっています。
パラメータの値は以下のようになっています。
Lasso | Ridge | Elastic Net | |
---|---|---|---|
0 | 0 | 0 | |
8.46E-03 | -5.55E-06 | 0 | |
0 | 9.18E-06 | 0 | |
8.86E-04 | 2.85E-04 | 1.63E-03 | |
7.47E-06 | 4.54E-04 | -8.58E-05 | |
0 | 6.34E-05 | -9.49E-06 | |
2.33E-08 | -2.33E-05 | 1.70E-06 | |
0 | -1.22E-06 | -4.91E-08 | |
0 | 3.69E-07 | 3.67E-09 | |
0 | 6.53E-09 | 7.88E-10 | |
0 | -1.80E-09 | -1.14E-10 |
L1ノルムは確かにパラメータの一部が完全に0になっていることが確認されました。
また、Elastic Netも一部変数が0になっています。
考察
L2ノルムが過学習を起こしてる理由としては学習データが非常に少ないからであり、これは各正則化の差を見るために意図的に少なくしています。
他のデータも用いて実験してみたのですが、常にどのノルムが一番優れている、ということはほとんどないようです。
Sin関数に従うデータを用いた実験も行ってみましたが、Elastic Netが一番当てはまりがよく、次にL2ノルム、L1ノルムといった感じでした。(あくまで見た目での判断ですが)
L1ノルムはパラメータが0になりやすく、正則化の影響が非常に強いと感じられました。
対してL2ノルムは過学習になりやすく、正則化の影響が少し弱いと感じられました。
Elastic Netは当てはまりの良いモデルとなることが多かったと思います。
今回は低次元の多項式回帰での実験ですが、L1ノルムの真価は高次元での線形回帰で発揮されると思うので、そちらに関しても今度実験してみようと思います。
参考
川野秀一, et al. "回帰モデリングと L1 型正則化法の最近の展開." 日本統計学会誌 39.2 (2010): 211-242.
http://svr4.terrapub.co.jp/journals/jjssj/pdf/3902/39020211.pdf
回帰モデルの正則化について詳しく扱っています。