LASSO入門: 機械学習初心者向けの正則化と特徴選択の解説【コード有り】

データ分析

こんにちは、nissyです。

本日は、機械学習初学者にとって重要な次のステップとなる「LASSO(Least Absolute Shrinkage and Selection Operator)」について解説していきたいと思います。

LASSOは、重回帰分析の発展形であり、正則化と特徴選択を組み合わせた強力な手法です。これにより、よりスパースで解釈しやすいモデルを構築することができます。

今回の記事では、データサイエンス初学者の皆さんが、LASSOの基本的な理解を深めることができることを目指しています。

今回は重回帰分析の知識を有している方を対象に記事を作成しています。
重回帰分析についての理解が不安な方は以下のブログを先に読んでいただくことを推奨します。

一番最初に学ぶべき機械学習モデル それは重回帰分析!!
こんにちは、nissyです。 本日は「データサイエンス初学者が一番最初に学ぶべき機械学習モデル」について紹介したいと思います。 結論としては重回帰分析1択です。 重回帰分析は非常に汎用性が高い分析手法であり、ビジネ...

正則化の概念

機械学習やデータ解析の分野では、過学習(overfitting)や未学習(underfitting)といった問題がよく発生します。

これらの問題は、モデルがデータに対して適切なバイアスとバリアンスのバランスを見つけることが難しいためです。

正則化(regularization)は、これらの問題に対処するための一般的な手法であり、LASSO回帰はその中でも非常によく使われる手法の一つです。

実際に私も最初はLASSO回帰でモデル構築を試す事が多く、仕事でも非常に使用頻度の高いモデルです。

正則化は、過学習を防ぐための手法で、モデルの表現力に制約を加えることで実現します。具体的には、損失関数にペナルティ項を加えて、モデルのパラメータが大きくなりすぎないようにします。

正則化を用いることで、モデルのバイアスとバリアンスのバランスを適切に調整できます。バイアスはモデルが学習データに適合できるかを示し、バリアンスは新しいデータに対してモデルが適応できるかを示します。

過学習を防ぐためには、バイアスとバリアンスの適切なバランスが必要で、これは正則化パラメータを調整することで制御できます。適切な正則化パラメータを選ぶことで、モデルの予測性能を向上させることができます。

LASSOの説明

LASSOは、統計学と機械学習における重要な手法で、特徴選択と正則化を同時に行うことができます。LASSOの基本的な考え方は、モデルの表現力を制御しつつ、予測性能を最適化することです。これは、線形回帰の誤差関数にL1正則化項を追加することで実現されます。

線形回帰の誤差関数は平均二乗誤差(MSE)を最小化することを目指しますが、LASSOではこの誤差関数にパラメータの絶対値の和(L1ノルム)に比例するペナルティ項(L1正則化項)を加えます。つまり、LASSOの誤差関数は以下のようになります。

$$E(\theta)=\frac{1}{N}\sum_{i=1}^{N}{(h_{\theta}(x^{(i)}) – y^{(i)})^2} + \alpha \sum_{j=1}^{D} |\theta_j|$$

ここで、\(h_{\theta}(x^{(i)})\)はモデルの予測値、\(y_i\)は実際の値、\(\alpha\)はモデルのハイパーパラメータ、\(N\)はデータの数、\(D\)は特徴量の数、\(\lambda\)は正則化パラメータを表します。

このペナルティ項は、モデルのパラメータが大きくなることを抑制し、モデルの表現力を制限します。これにより、過学習を防ぎつつ、モデルの予測性能を維持することが可能となります。

LASSOのもう一つの重要な特性は特徴選択です。LASSOは不要な特徴量のパラメータ(回帰係数)をゼロにすることができます。これはL1正則化がスパースな解を生む性質によるもので、この特性によりモデルが自動的に重要な特徴量だけを選択することが可能となります。これは、特に特徴の数が多く、どの特徴量が重要であるかを事前に判断するのが難しい場合に有用です。

このようにLASSOはモデルの表現力を制御し、過学習を防ぐだけでなく、重要な特徴量を自動的に選択することで、モデルの解釈性を向上させることができます。

PythonでLASSOの回帰を実装

それでは実際にPythonを使って「ボストン住宅価格データセット」を用いてLASSO回帰分析を行っていきます。

まずは使用するライブラリーをインポートします。

次にボストン住宅価格データセットを用意します。実務の状況に近づけるためにデータフレームの形でデータセットを確認します。

今回使うデータセットはサンプル数506、特徴量が13のデータセットです。

目的変数を”PRICE”として、他12個の特徴量から目的変数を予測する回帰モデルを構築してみます。

以下のコードでデータを学習データとテストデータに分割し、それぞれを標準化します。

今回はハイパーパラメータである\(\alpha\)を3通りの方法で決めてみようと思います。それぞれ、

  • 交差検証誤差
  • AIC(赤池情報量基準)
  • BIC(ベイズ情報量基準)

詳細は改めて別の記事でご紹介しようと思います。以下のコードでモデルの定義および学習を実行します。

LASSO回帰の解析結果がどの程度の予測精度を有しているかを直感的に理解するためにyyプロットを作図します。

計算によって得られた回帰係数をグラフ化します。

 

学習曲線(交差検証誤差)

ハイパーパラメータチューニングの学習曲線を示します。

学習曲線(AIC、BIC)

今回のデータセットではAIC、BICで正則化パラメータを決めると0となり、スパース性は有していない事がわかります。

係数プロット

それでは正則化パラメータ\(\alpha\)を変えた時の各特徴量の回帰係数がどのように変化するかを確認してみましょう。

まとめ

今日はLASSOという重要な機械学習の手法について学びました。LASSOは、特徴選択と正則化を同時に行うことで、モデルの複雑さを制御し、予測性能を最適化することが可能です。そして、その実装はPythonを使って比較的簡単に行うことができます。

これからも機械学習の学習を進めていく中で、LASSOは必ずと言っていいほど出てくる重要な手法です。ぜひこの機会にPythonでの実装に挑戦してみてください。この記事があなたの学習の一助となれば幸いです。

データ分析
未経験の壁をぶっこわ〜す!化学系データサイエンティスト転職ブログ

コメント

タイトルとURLをコピーしました