LASSO変数選択

EViews 12の新機能であり、Lasso-OLSのハイブリッド、post-Lasso OLS、条件を緩和したLasso(特定の条件下)、またはpost-estimation OLSとしても知られるLASSO変数選択では、変数選択手法としてLASSOを使用し、その後に通常の最小二乗を使用します。
このページでは、開発元ブログ記事を元に、EViewsで行う、LASSOによる変数選択モデルを通常の最小二乗法を比較しながら解説します。

データ

iconL1罰則項と係数の変化


技術的背景・データセット


LASSOの技術的背景

LASSOモデルと変数選択モデルの背景についてはこちらをご覧ください。


サンプルデータセット

  1. ここで使用するサンプルデータセットは次の表のようなものです。10個の変数は、年齢、性別、肥満度指数(bmi)、平均血圧(bp)、および442人の患者の6回の血清測定値です。それらはすべて標準化されています。従属変数は、他の測定が行われてから1年後の疾患の進行の尺度であり、平均がゼロになるようにスケーリングされています。このデータの開発したモデルからの適合と予測の精度、および各リグレッサーの相対的な重要性に関心があります。
    オプション設定
  2. データセットはこちらで公開されています

LASSO変数選択モデルの推定

  • OLSとLASSO変数選択モデルを比較します

ベースライン

  1. はじめに、ベースラインとなるOLSでの推定を行います。Quick > Estimation Equationと操作し、Equation specificationでy c age bmi bp glu hdl ldl ltg sex tc tchと入力してOKをクリックし、最小二乗法で推定を行います。
    オプション設定
  2. 推定結果から、補正済み決定係数が0.5066なので、このモデルは従属変数のおよそ51%しか説明できていません。BMI、BP、LTG、SEXなどのいくつかの変数は統計的に有意であることがわかます。
    オプション設定
  3. Nameボタンをクリックして、名前を付けてモデルを保存します。

LASSOモデル

  1. 次に同じデータセットに対して、LASSO回帰を行い、L1ノルムに対する係数をプロットします。まず、Quick > Estimation Equationと操作し、Estimation settingsENET - Elastic Net Regularizationを選択し、Penalty specificationLassoとします。投入する変数は先と同様です。
    オプション設定
  2. Optionsタブに移動し、Regressor transformation:L1を選択し、OKをクリックします。
    オプション設定
  3. 推定後に、View > Coefficient Graphs > L1 Normと操作し、グラフを作成します。グラフは、それぞれの係数がどの程度従属変数に貢献しているかを感覚的に判断する材料となります。グラフでは、制約の度合いが小さくなる(L1ノルムが大きくなる)ほど、より多くの係数がモデルに入ってくることがわかります。
    オプション設定
  4. 各係数をよく調べてみます。最小のλ(0.001267)における係数の組み合わせはいずれもゼロではありません。しかし、隣の列(0.02065)では、元の10変数の内ゼロでないものは4つだけになっています。最小二乗法と比較すると、左列のほとんどの係数は0方向にわずかに縮小され、中央列ではさらに大きな罰則が科されています(変数HDLの符号の変化を除いて)。残された3つの変数(BMI、BP、LTG)は最小二乗法の結果においてもゼロではなく、かつ統計的に有意となっています。しかし、最小二乗法と比べ、モデルはより単純になっています。このように変数の数を減少させることでモデルの適合度は向上するのでしょうか。同じ設定でLASSO変数選択を行い、評価してみましょう。
    オプション設定

LASSOによる変数選択

  1. Quick > Estimation Equationと操作し、Estimation settingsVARSEL - Variable Selection and Stepwise Least Squaresを選択し、SelectionmethodLassoとします。投入する変数は先と同様ですが、上段のテキストボックスでは従属変数と定数項、下段のList of search regressorsには選択される変数を設定します。ここでは、age bmi bp glu hdl ldl ltg sex tc tchです。
    オプション設定
  2. 先ほどと同じように、Optionsタブに移動し、Regressor transformation:L1を選択し、OKをクリックします。
  3. LASSO変数選択によって、選択された変数をOLSで推定しているため、調整済み決定係数は0.5068から若干向上しています。LASSOは係数を全般的にゼロの方向に縮小(バイアス)しますが、OLSが適用されると、反対方向に拡張されます。結果として、最終モデルにおける分散が小さくなります、変数選択モデルとOLSモデルをくらべるとよくわかると思います。
    この結果におけるゼロでない係数の組み合わせが、先のLASSOと異なっていることに気づくかと思います。これは、LASSO変数選択が単純なLASSOとは異なる方法(AIC)でモデル選択を行っているためです。EViewsで利用できる他の変数選択でも同様の手法が用いられています。
    オプション設定
  4. Nameボタンで名前を付けてモデルを保存します。

予測力の比較

  • OLSとLASSO変数選択モデルを予測力を比較します
  1. 上で推定したOLSモデルと変数選択モデルについて、予測力の比較します。事前にサンプルをトレーニングデータ(70%)とテストデータ(30%)にランダムに振り分け、インジケータとなる二値変数trainingを用意し、区別できるようにします。
    yシリーズを開き、View > Forecast Evaluationと操作し、Forecast data objectに先のOLSモデルと変数選択モデルを入力します。Evaluation Sampleでは@all if training = 0と設定し、OKをクリックします。
    オプション設定
  2. 変数選択モデルではMAEとMAPEの値が若干改善し、逆にRMSEとSMAPEでは悪くなっていて、両者の違いはあまり明確ではありません。
    オプション設定

大規模データでの例

LASSO変数選択モデルの真の実力はさらに大きな(高次元の)データセットで推定を行う際に発揮されます。これを確認するため、二乗した9変数と54の交差項を使用して合計64の独立変数を使用します。

  1. まずは、比較対象となるOLSの推定を行います。独立変数は、age age_2 age_bmi age_glu age_hdl age_ldl age_ltg age_map age_sex age_tc age_tch bmi bmi_2 bmi_glu bmi_hdl bmi_ldl bmi_ltg bmi_map bmi_tc bmi_tch glu glu_2 hdl hdl_2 hdl_glu hdl_ltg hdl_tch ldl ldl_2 ldl_glu ldl_hdl ldl_ltg ldl_tch ltg ltg_2 ltg_glu map map_2 map_glu map_hdl map_ldl map_ltg map_tc map_tch sex sex_bmi sex_glu sex_hdl sex_ldl sex_ltg sex_map sex_tc sex_tch tc tc_2 tc_glu tc_hdl tc_ldl tc_ltg tc_tch tch tch_2 tch_glu tch_ltgの64個です。
    オプション設定
  2. 補正R2は0.5233で元の10変数のものより高くなっています、これは追加された変数がモデルに説明力を与えていることを示しています。Nameボタンから名前を付けてOLSモデルを保存します。
  3. 同じ変数を使用して、LASSO変数選択でも推定を行います。推定結果を見ると、64の変数から14が選択され、複雑なモデルを大幅に削減できました。決定係数は0.5233から0.5308に上昇し、標準誤差は小さくなっています。
    オプション設定
  4. 先と同様に操作し、最小二乗法とLASSO変数選択を比較します。yシリーズを開き、View > Forecast Evaluationを選択し、Forecast data objectに先のOLSモデルと変数選択モデルを入力します。OKをクリックします。
  5. 比較結果からは、予測力が大きく向上していることがうかがえます。大規模データセットへのLASSO変数選択の適用は、サンプル内推定ではわずかに向上するだけですが、標本外予測ではOLSに大きく勝ることがわかりました。
    オプション設定
page_top_icon