井出草平の研究ノート

Stataにおけるlasso入門[stata]

blog.stata.com

なぜlassoが興味深いのか?

最小絶対縮小選択演算子(lasso)はモデル係数を推定し、これらの推定値はどの共変量をモデルに含めるかを選択するために使用できる。lassoは結果予測や因果パラメータに関する推論に使用される。この投稿では、lassoの紹介と予測のためのlassoの使用について説明するす。次の投稿では、因果パラメータに関する推論のためのLassoの使用について説明する。

lassoは、結果に影響を与える共変量が、潜在的な多くの共変量のうち少数であり、影響を与える共変量のみを含めることが重要である場合に、最も有用である。"少数 "と "多数 "は、標本サイズに関連して定義さ れる。我々は、共変量のうちの約10個だけが重要であると考え、10個の共変量は600個の観測に対して "わずか "であると感じます。

たくさんの共変量のうちのほんのわずかしか結果に影響しないことを考えると、問題は、どの共変量が重要で、どれが重要でないかがわからないということだ。lassoは、係数の推定を生成し、この共変量選択の問題を解決する。

たくさんの共変量のうちのほんのわずかしか結果に影響しないことを考えると、問題は、どの共変量が重要で、どれが重要でないかがわからないということだ。lassoは、係数の推定を生成し、この共変量選択の問題を解決する。

この例の状況には専門用語がある。利用可能なサンプルサイズから確実に推定できる係数よりも多くの共変量を持つモデルは、高次元モデルとして知られている。真のモデルで非ゼロである係数の数がサンプルサイズに対して小さいという仮定は、スパース性の仮定として知られている。より現実的には、近似スパース性仮定は、現実世界を最もよく近似するモデルの非ゼロ係数の数がサンプルサイズに対して小さいことを要求する。

このような技術的な観点から、lasso は高次元の近似スパース・モデルの係数を推定する際に最も有用な方法だ。

高次元モデルは、予測問題や柔軟な関数形を使用するモデルにおいて、ほぼどこにでも存在する。多くの場合、多くの潜在的共変量は、多項式、スプライン、または元の共変量の他の関数から作成される。また、多くの潜在的共変量は、行政データ、ソーシャルメディア、または自然に膨大な数の潜在的共変量を生み出す他のソースから得られる場合もある。

レストランの検査点数の予測

lassoの議論をより分かりやすくするために、一連の例を使用する。これらの例では、以下の問題のシミュレーション・データを使用する。米国のある小さな都市の衛生検査官は、ソーシャル・メディアのレビューを使ってレストランの衛生検査スコアを予測したいと考えている。検査官は、予測された健康スコアが最も低いレストランに、我々の予測を使って抜き打ち検査を追加することを計画している。

hsafety2.dtaには、600のレストランそれぞれについて1つの観測があり、最新の検査でのスコアがスコアとして入っている。検査前の3ヶ月間に書かれたレビューにおける出現率が検査スコアを予測できる50の単語、30の単語ペア、20のフレーズを特定した。50語の出現率は、word1~word50である。30単語のペアの出現率はwpair1~wpair30である。20フレーズの出現率は phrase1 - phrase20 である。

研究者は、最良の predictor を見つけるために広く以下のステップを使用する。

  1. 標本を訓練サブ標本と検証サブ標本に分割する。
  2. 競合する各推定量のモデル・パラメータを推定するために訓練データを使用する。
  3. 各競合する推定量によって生成された予測値の標本外平均2乗誤差(MSE)を推定するために検証データを使用する。
  4. 最良の予測量は、最小の標本外MSEを産出する推定量である。
  5. 通常の最小2乗(OLS)推定量は、それが実行可能な場合、ベンチマーク定量として頻繁に含まれる。

下の出力では、データをメモリに読み込んで、split(.75 .25)オプションでsplitsampleを使用して、標本の75%に対して1、標本の残りの25%に対して2という変数sampleを生成しています。sampleの各観測の1または2への割り当てはランダムだが、rseedオプションは、ランダムな割り当てを再現可能にする。

. use hsafety2

. splitsample , generate(sample) split(.75 .25) rseed(12345)

. label define slabel 1 "Training" 2 "Validation"

. label values sample slabel

. tabulate sample

     sample |      Freq.     Percent        Cum.
------------+-----------------------------------
   Training |        450       75.00       75.00
 Validation |        150       25.00      100.00
------------+-----------------------------------
      Total |        600      100.00

tabulateによって生成された標本の一方向集計は、標本が要求された75%-25%の分割を含んでいることを確認する。

次に、訓練サンプルのデータを使ってOLS推定値を計算し、その結果をolsとしてメモリに格納する。

. quietly regress score word1-word50 wpair1-wpair30 phrase1-phrase20 if sample==1
. estimates store ols

ここで、lassogofにover(sample)オプションを付けて、MSEの標本内推定値(トレーニング)と標本外推定値(検証)を計算する。

. lassogof ols, over(sample)

Penalized coefficients
-------------------------------------------------------------
Name             sample |         MSE    R-squared        Obs
------------------------+------------------------------------
ols                     |
               Training |    24.43515       0.5430        450
             Validation |    35.53149       0.2997        150
-------------------------------------------------------------

予想通り、推定MSEは検証サンプルよりもトレーニングサブサンプルの方がはるかに小さい。MSEの標本外推定値は、予測誤差のより信頼性の高い推定値である。例えば、Hastie, Tibshirani, and Friedman (2009)の第1章、第2章、第3章を参照のこと。

このセクションでは、lassoを紹介し、そのサンプル外のMSEの推定値とOLSの推定値を比較する。

lassoとは?

lassoはモデルの係数の推定量です。lasso が特別なのは、係数の推定値が正確にゼロであるものもあれば、そうでないものもあるということである。lasso は、推定係数がゼロである共変量を除外し、推定係数がゼロでない共変量を含めることで共変量を選択する。lasso の推定値には標準誤差はない。lassoは共変量選択法として機能するため、非標準推定量となり、標準誤差を推定することができない。この投稿では、推論問題でのlassoの使い方について説明する。

Tibshirani (1996) はlassoを導き出し、Hastie, Tibshirani, and Wainwright (2015) は教科書的な紹介をしている。

このセクションの残りの部分では、lassoが係数推定値を生成する仕組みについて詳しく説明する。lassoには線形モデルと非線形モデルで異なるバージョンがあります。線形モデル、ロジスティック・モデル、ポアソン・モデル用のlassoのバージョンはStata 16で利用可能である。ここでは、線形モデル用のlassoについてのみ説明しますが、ここで説明するポイントは非線形モデル用のlassoにも一般化される。

多くの推定量と同様に、線形モデルのlassoは最適化問題を解きます。具体的には、線形lasso点推定値βは次式で与えられる。

  • λ>0 は、lasso ペナルティ・パラメータである
  • y は結果変数
  • x は p 個の潜在的共変量
  • β は x の係数のベクトル
  • βj はβのj番目の要素
  • ωj は,ペナルティ負荷量として知られるパラメータ・レベルの重み
  • n は標本サイズ

この最適化問題には2つの項がある。

と制約項

パラメータλとωjは「チューニング」パラメータと呼ばれる。これらは、制約項に適用される重みを指定する。λ=0 の時、線形 lasso は OLS 推定量に減少する。λ が増加するにつれて、すべての推定係数の大きさはゼロに向かって "縮小 "される。この縮小は、各ゼロでないβˆjのコストが、λが増加するにつれて増加する制約項によって増加するために起こる。

制約項には各βjの絶対値が含まれる。絶対値関数はゼロでkink(チェックと呼ばれることもある)を持つ。各係数の制約項への寄与にkinkがあるため、最適解において推定係数の一部が正確にゼロになる。詳細はHastie, Tibshirani, and Wainwright (2015)の2.2節を参照。

すべての推定係数がちょうどゼロになる値λmaxがある。λがλmaxから小さくなるにつれて、ゼロでない係数推定値の数が増える。λ∈(0,λmax)の場合、推定係数のいくつかは正確にゼロであり、いくつかはゼロではない。共変量の選択に lasso を使用すると、推定係数がゼロの共変量は除外され、推定係数がゼロでない共変量が含まれる。

潜在的な共変量の数pがサンプル・サイズnよりも大きくなり得ることは、lassoの利点としてよく議論されている。近似スパース性の仮定は、モデル(s)に属する共変量の数がnに対して小さくなければならないことを覚えておくことが重要である。

lasso チューニング・パラメータの選択

チューニング・パラメータは、予測やモデル選択に lasso を使用する前に選択する必要があります。チューニング・パラメータの選択に最も頻繁に使用される方法は、クロス・バリデーション(CV)、適応型 lasso、プラグイン法です。CVは、予測値の標本外MSEを最小化するλを見つけます。CVのメカニズムは,標本外予測変数の最良を見つけるための分割標本を用いたプロセスを模倣している。詳細は付録で示す。

CVは、lassoコマンドのチューニング・パラメータを選択するデフォルトの手法である。下記の出力では、訓練標本を用いて、スコア・モデルの係数を推定するためにlassoを使用しています。CVの結果を再現できるようにrseed()オプションを指定した。

. lasso linear score word1-word50 wpair1-wpair30 phrase1-phrase20
>         if sample==1, nolog rseed(12345)

Lasso linear model                          No. of obs        =        450
                                            No. of covariates =        100
Selection: Cross-validation                 No. of CV folds   =         10

--------------------------------------------------------------------------
         |                                No. of      Out-of-      CV mean
         |                               nonzero       sample   prediction
      ID |     Description      lambda     coef.    R-squared        error
---------+----------------------------------------------------------------
       1 |    first lambda    3.271123         0       0.0022       53.589
      25 |   lambda before    .3507518        22       0.3916     32.53111
    * 26 | selected lambda     .319592        25       0.3917     32.52679
      27 |    lambda after    .2912003        26       0.3914     32.53946
      30 |     last lambda    .2202824        30       0.3794     33.18254
--------------------------------------------------------------------------
* lambda selected by cross-validation.

. estimates store cv

出力は、100個の共変量のうち25個の係数がゼロでないλをCVが選択したことを明らかにする。これらの結果をメモリにcvという名前で格納するためにestimates storeを用いた。

CV 関数をプロットするために cvplot を用いる。

. cvplot, minmax

CV関数は最適なλの近傍でやや平坦に見えるが、これはλの近傍の値が同様の標本外MSEを生成することを意味する。

含まれる共変量の数は、CV関数の平坦な部分で大きく変わる可能性がある。我々は、lasso knot tableと呼ばれる表を使って、選択された共変量の数の変動を調査することができる。結び目の表を表示するには、lassoknots を使用する。

. lassoknots

-------------------------------------------------------------------------------------
       |              No. of   CV mean |
       |             nonzero     pred. |        Variables (A)dded, (R)emoved,    
    ID |   lambda      coef.     error |             or left (U)nchanged         
-------+-------------------------------+---------------------------------------------
     2 | 2.980526          2   52.2861 | A phrase3   phrase4                     
     3 | 2.715744          3  50.48463 | A phrase5                               
     4 | 2.474485          4  48.55981 | A word3                                 
     6 | 2.054361          5  44.51782 | A phrase6                               
     9 | 1.554049          6  40.23385 | A wpair3                                
    10 | 1.415991          8  39.04494 | A wpair2    phrase2                     
    12 | 1.175581          9    36.983 | A word2                                 
    14 | .9759878         10  35.42697 | A word31                                
    16 | .8102822         11   34.2115 | A word19                                
    17 |  .738299         12  33.75501 | A word4                                 
    21 | .5088809         14  32.74808 | A word14    phrase7                     
    22 | .4636733         17  32.64679 | A word32    wpair19   wpair26           
    23 | .4224818         19  32.56572 | A wpair15   wpair25                     
    24 | .3849497         22  32.53301 | A wpair24   phrase13  phrase14          
  * 26 |  .319592         25  32.52679 | A word25    word30    phrase8           
    27 | .2912003         26  32.53946 | A wpair11                               
    29 | .2417596         27  32.86193 | A wpair17                               
    30 | .2202824         30  33.18254 | A word23    word38    wpair4            
-------------------------------------------------------------------------------------
* lambda selected by cross-validation.

CV関数はID=26のλで最小化され、lassoはこのλ値で25の共変量を含む。CV関数の平坦部はID∈{21,22,23,24,26,27}のλ値を含みます。ID=21のλを使ったlassoでは14の共変量しか含まれないこの観察結果については、以下で感度分析を用いて検討する。

CVは、データを生成したプロセスを最もよく近似するモデルに、係数がゼロである余分な共変量を含める傾向がある。これは、CV ベースの lasso の予測性能に影響を与える可能性があり、モデル選択に CV ベースの lasso を使用する推論手法の性能に影響を与える可能性がある。Adaptive lassoは CV の多段階バージョンである。これは、これらの余分な共変量のいくつかを除外するように設計されている。

Adaptive lassoの最初のステップは CV である。第2ステップは、第1ステップで選択された共変量の間でCVを行う。この第2ステップでは、制約負荷は ωj=1/|βˆj| で、ここで βˆj は第1ステップからのペナルティ付き推定値である。係数の大きさが小さい共変量は、第2ステップで除外される可能性が高い。Adaptive lassoとCVベースのlassoの選択過剰傾向については、Zou (2006)とBühlmann and Van de Geer (2011)を参照。また、CV lassoの正式な結果とこの選択過剰の傾向を説明できる結果については、Chetverikov, Liao, and Chernozhukov (2019)を参照。

以下にselection(adaptive)というオプションを指定することで、lassoがCVの代わりにadaptive lassoを使ってチューニング・パラメータを選択するようになる。adaptiveという名前で結果を保存するためにestimates storeを使用した。

. lasso linear score word1-word50 wpair1-wpair30 phrase1-phrase20
>         if sample==1, nolog rseed(12345) selection(adaptive)

Lasso linear model                         No. of obs         =        450
                                           No. of covariates  =        100
Selection: Adaptive                        No. of lasso steps =          2

Final adaptive step results
--------------------------------------------------------------------------
         |                                No. of      Out-of-      CV mean
         |                               nonzero       sample   prediction
      ID |     Description      lambda     coef.    R-squared        error
---------+----------------------------------------------------------------
      31 |    first lambda    124.1879         0       0.0037     53.66569
      77 |   lambda before    1.719861        12       0.4238     30.81155
    * 78 | selected lambda    1.567073        12       0.4239      30.8054
      79 |    lambda after    1.427859        14       0.4237     30.81533
     128 |     last lambda    .0149585        22       0.4102     31.53511
--------------------------------------------------------------------------
* lambda selected by cross-validation in final adaptive step.

. estimates store adaptive

Adaptive lassoは25の共変量ではなく12の共変量を含んでいることがわかる。

プラグイン法はadaptive lassoよりもさらに単純化される傾向がある。プラグイン法は、各パラメータの(評価されない)適合尺度のスコアを正規化するためにωjを選択する。正規化されたスコアが与えられると、1に近い確率で最大の正規化スコアより大きいλの値を選択する。

プラグインベースのlassoは、CVベースのlassoや adaptive実際には、プラグイン・ベースLassoは重要な共変量を含む傾向があり、データを最も良く近似するモデルに属さない共変量を含まないことが得意である。プラグインベースのlassoは、大きな係数を持つ共変量を見逃してしまい、小さな係数を持つ共変量しか見つけられないリスクがある。

詳細と正式な結果については、 Belloni, Chernozhukov, and Wei (2016)と Belloni, et al (2012)を参照のこと。

以下にselection(plugin)オプションを指定し、lassoがプラグイン法を用いてチューニング・パラメーターを選択するようにする。結果はpluginという名前で保存される。

. lasso linear score word1-word50 wpair1-wpair30 phrase1-phrase20  
>         if sample==1, selection(plugin)

Computing plugin lambda ...
Iteration 1:     lambda = .1954567   no. of nonzero coef. =       8
Iteration 2:     lambda = .1954567   no. of nonzero coef. =       9
Iteration 3:     lambda = .1954567   no. of nonzero coef. =       9

Lasso linear model                          No. of obs        =        450
                                            No. of covariates =        100
Selection: Plugin heteroskedastic

--------------------------------------------------------------------------
         |                                No. of
         |                               nonzero    In-sample
      ID |     Description      lambda     coef.    R-squared          BIC
---------+----------------------------------------------------------------
     * 1 | selected lambda    .1954567         9       0.3524     2933.203
--------------------------------------------------------------------------
* lambda selected by plugin formula assuming heteroskedastic.

. estimates store plugin

プラグイン・ベースのlassoは100個の共変量のうち9個を含み、これはCVベースのlassoや適応的lassoが含むよりもはるかに少ない。

予測因子の比較

現在、4つの異なるスコア予測変数があります: OLS、CV-based lasso、Adaptive lasso、Plug-in-based lassoです。3つのlassoメソッドは、lassoによって推定された制約付き係数を使用してスコアを予測することもできるし、lassoによって選択された共変量のみを含むOLSによって推定された制約なし係数を使用してスコアを予測することもできる。制約付きlasso推定値を使用する予測はlasso予測として知られ、制約無し係数を使用する予測はポスト選択予測、またはポストlasso予測として知られている。

線形モデルの場合、BelloniとChernozhukov (2013)は、選択後の予測値がlasso予測値と同等以上の性能を発揮する条件を提示している。ヒューリスティックには、CVが最良のlasso予測を行うためにλを選択するので、CVベースのlassoからのlasso予測は、事後選択予測よりも良いパフォーマンスをすると期待される。同様に、プラグインは、データを生成したプロセスを最もよく近似する共変量のセットに近いものを選択する傾向があるので、plug-in-based lassoの事後選択予測は、lasso予測よりもよい実行がされることが期待される。

実際には、Lasso予測と選択後予測の両方を使用して、すべての推定量の予測のサンプル外MSEを推定する。予測のサンプル外MSEが最も低いものを選択する。

次の出力では、lassogofを使用して、OLSのサンプル外予測パフォーマンスと3つのlassoメソッドからのlasso予測を比較している。

. lassogof ols cv adaptive plugin if sample==2

Penalized coefficients
-------------------------------------------------
       Name |         MSE    R-squared        Obs
------------+------------------------------------
        ols |    35.53149       0.2997        150
         cv |    27.83779       0.4513        150
   adaptive |    27.83465       0.4514        150
     plugin |    32.29911       0.3634        150
-------------------------------------------------

これらのデータでは、adaptive lassoを使用したlasso予測は、CVベースのlassoからのlasso予測よりも少し優れたパフォーマンスを示した。

次の出力では、OLSのサンプル外予測のパフォーマンスと、事後選択係数推定を使用した3つのLasso方法からのLasso予測を比較している。

. lassogof ols cv adaptive plugin if sample==2, postselection

Penalized coefficients
-------------------------------------------------
       Name |         MSE    R-squared        Obs
------------+------------------------------------
        ols |    35.53149       0.2997        150
         cv |    27.87639       0.4506        150
   adaptive |    27.79562       0.4522        150
     plugin |    26.50811       0.4775        150
-------------------------------------------------

Plug-in-based lassoが最小のサンプル外MSEを生成することは驚くべきことではない。プラグイン法では共変数を選択する傾向があり、選択後の推定値がデータの近似に適している。

実際の競争は、制約きlasso予測の最良のものからのlasso推定値とプラグインベースのlassoからの事後選択推定値の間にある傾向がある。この場合、プPlug-in-based lassoからの事後選択推定は、より優れたサンプル外予測を生成し、これらの結果を使用してスコアを予測する。

elastic net とリッジ回帰

elastic netは、より一般的な制約項を用いることでlassoを拡張したものです。詳細はZou and Hastie (2005)を参照。

線形 elastic net は

ここで、αはelastic-net penaltyパラメータです。α=0に設定すると、リッジ回帰が生じる。α=1にするとlassoになる。

elasticnetコマンドは、CVによってαとλを選択する。オプションalpha () は、αの候補値を指定する。

. elasticnet linear score word1-word50 wpair1-wpair30 phrase1-phrase20
>         if sample==1, alpha(.25 .5 .75) nolog rseed(12345)

Elastic net linear model                         No. of obs        =        450
                                                 No. of covariates =        100
Selection: Cross-validation                      No. of CV folds   =         10

-------------------------------------------------------------------------------
               |                               No. of      Out-of-      CV mean
               |                              nonzero       sample   prediction
alpha       ID |     Description      lambda    coef.    R-squared        error
---------------+---------------------------------------------------------------
0.750          |
             1 |    first lambda    13.08449        0       0.0062     53.79915
            39 |   lambda before    .4261227       24       0.3918     32.52101
          * 40 | selected lambda    .3882671       25       0.3922     32.49847
            41 |    lambda after    .3537745       27       0.3917     32.52821
            44 |     last lambda    .2676175       34       0.3788     33.21631
---------------+---------------------------------------------------------------
0.500          |
            45 |    first lambda    13.08449        0       0.0062     53.79915
            84 |     last lambda    .3882671       34       0.3823     33.02645
---------------+---------------------------------------------------------------
0.250          |
            85 |    first lambda    13.08449        0       0.0058     53.77755
           120 |     last lambda    .5633091       54       0.3759       33.373
-------------------------------------------------------------------------------
* alpha and lambda selected by cross-validation.

. estimates store enet

elastic net は100の共変量のうち25を選択したことがわかる。

比較のため、CVによって制約パラメータを選択し、elastic netを使用してリッジ回帰を実行する。

. elasticnet linear score word1-word50 wpair1-wpair30 phrase1-phrase20
>         if sample==1, alpha(0) nolog rseed(12345)

Elastic net linear model                         No. of obs        =        450
                                                 No. of covariates =        100
Selection: Cross-validation                      No. of CV folds   =         10

-------------------------------------------------------------------------------
               |                               No. of      Out-of-      CV mean
               |                              nonzero       sample   prediction
alpha       ID |     Description      lambda    coef.    R-squared        error
---------------+---------------------------------------------------------------
0.000          |
             1 |    first lambda    3271.123      100       0.0062     53.79914
            90 |   lambda before     .829349      100       0.3617     34.12734
          * 91 | selected lambda    .7556719      100       0.3621      34.1095
            92 |    lambda after    .6885401      100       0.3620     34.11367
           100 |     last lambda    .3271123      100       0.3480     34.86129
-------------------------------------------------------------------------------
* alpha and lambda selected by cross-validation.

. estimates store ridge

リッジ回帰はモデル選択を行わないため、すべての共変量を含む。

ここで、lasso予測を使用して、CVベースlasso、elastic net、リッジ回帰、およびplug-in-based lassoのサンプル外予測能力を比較する。(elastic netおよびリッジ回帰の場合、 「lasso予測」 は制約付き推定量によって生成された係数推定値を使用して行われる) 。

. lassogof cv adaptive enet ridge plugin if sample==2

Penalized coefficients
-------------------------------------------------
       Name |         MSE    R-squared        Obs
------------+------------------------------------
         cv |    27.83779       0.4513        150
   adaptive |    27.83465       0.4514        150
       enet |    27.77314       0.4526        150
      ridge |    29.47745       0.4190        150
     plugin |    32.29911       0.3634        150
-------------------------------------------------

この場合、制約付きelastic-net係数の推定値は、Lassoの推定値の中でサンプルから最良のものを予測する。plug-in-based lassoによって生成される選択後予測は、全体的に最高のパフォーマンスを発揮する。これは、上の出力と下の出力を比較することで確認できる。

. lassogof cv adaptive enet plugin if sample==2, postselection

Penalized coefficients
-------------------------------------------------
       Name |         MSE    R-squared        Obs
------------+------------------------------------
         cv |    27.87639       0.4506        150
   adaptive |    27.79562       0.4522        150
       enet |    27.87639       0.4506        150
     plugin |    26.50811       0.4775        150
-------------------------------------------------

そこで、plug-in-based lassoからのこれらの事後選択係数推定値を使用してスコアを予想する。

感度分析

チューニングパラメータの小さな変化が予測性能の大きな変化につながるかどうかを調べるために感度解析が行われることがある。CVベースのlassoによって生成されたlassoknotsの出力を見ると、制約付き推定値によって生成されるCV関数のわずかな増加に対して、選択された共変量の数が大幅に減少する可能性があることに注目した。cv推定値を復元してlassoknots出力を繰り返すと、

. estimates restore cv
(results cv are active now)

. lassoknots

-------------------------------------------------------------------------------------
       |              No. of   CV mean |
       |             nonzero     pred. |        Variables (A)dded, (R)emoved,    
    ID |   lambda      coef.     error |             or left (U)nchanged         
-------+-------------------------------+---------------------------------------------
     2 | 2.980526          2   52.2861 | A phrase3   phrase4                     
     3 | 2.715744          3  50.48463 | A phrase5                               
     4 | 2.474485          4  48.55981 | A word3                                 
     6 | 2.054361          5  44.51782 | A phrase6                               
     9 | 1.554049          6  40.23385 | A wpair3                                
    10 | 1.415991          8  39.04494 | A wpair2    phrase2                     
    12 | 1.175581          9    36.983 | A word2                                 
    14 | .9759878         10  35.42697 | A word31                                
    16 | .8102822         11   34.2115 | A word19                                
    17 |  .738299         12  33.75501 | A word4                                 
    21 | .5088809         14  32.74808 | A word14    phrase7                     
    22 | .4636733         17  32.64679 | A word32    wpair19   wpair26           
    23 | .4224818         19  32.56572 | A wpair15   wpair25                     
    24 | .3849497         22  32.53301 | A wpair24   phrase13  phrase14          
  * 26 |  .319592         25  32.52679 | A word25    word30    phrase8           
    27 | .2912003         26  32.53946 | A wpair11                               
    29 | .2417596         27  32.86193 | A wpair17                               
    30 | .2202824         30  33.18254 | A word23    word38    wpair4            
-------------------------------------------------------------------------------------
* lambda selected by cross-validation.

lassoはID=26と25の共変量を持つλを選択した。ここでlassoselectを使用して、ID=21のλが選択されたλであることを指定し、結果をhandという名前で格納する。

. lassoselect id = 21
ID = 21  lambda = .5088809 selected

. estimates store hand

ここで、λがID=21であるlassoの選択後推定値によって生成されるサンプル外MSEを計算する。結果に大きな違いはなく、選択後のプラグインベースのlassoによって生成されたものに従う。

. lassogof hand plugin if sample==2, postselection

Penalized coefficients
-------------------------------------------------
       Name |         MSE    R-squared        Obs
------------+------------------------------------
       hand |    27.71925       0.4537        150
     plugin |    26.50811       0.4775        150
-------------------------------------------------

結論

この記事ではlassoとelastic netの概要を紹介し、予測に使用する方法を説明した。Stata 16 LASSOマニュアルにはさらに多くの情報がある。次の記事では、lassoを使用した因果パラメータの推論について説明する。


前立腺がんのデータで実行する

データをメモリに読み込んで、split(.75 .25)オプションでsplitsampleを使用して、標本の75%に対して1、標本の残りの25%に対して2という変数sampleを生成しています。sampleの各オブザベーションの1または2への割り当てはランダムだが、rseedオプションは、ランダムな割り当てを再現可能にする。

. splitsample , generate(sample) split(.75 .25) rseed(12345)

. label define slabel 1 "Training" 2 "Validation"

. label values sample slabel

. tabulate sample

     sample |      Freq.     Percent        Cum.
------------+-----------------------------------
   Training |         73       75.26       75.26
 Validation |         24       24.74      100.00
------------+-----------------------------------
      Total |         97      100.00

tabulateによって生成された標本の一方向集計は、標本が要求された75%-25%の分割を含んでいることを確認する。

次に、訓練サンプルのデータを使ってOLS推定値を計算し、その結果をolsとしてメモリに格納する。

. quietly regress lpsa lcavol lweight age lbph svi lcp gleason pgg45 if sample==1
. estimates store ols

ここで、lassogofにover(sample)オプションを付けて、MSEの標本内推定値(トレーニング)と標本外推定値(検証)を計算する。

. lassogof ols, over(sample)

Penalized coefficients
-------------------------------------------------------------
Name             sample |         MSE    R-squared        Obs
------------------------+------------------------------------
ols                     |
               Training |    .3898443       0.7103         73
             Validation |    .6900565       0.3598         24
-------------------------------------------------------------

予想通り、推定MSEは検証サンプルよりもトレーニングサブサンプルの方がはるかに小さい。MSEの標本外推定値は、予測誤差のより信頼性の高い推定値である。例えば、Hastie, Tibshirani, and Friedman (2009)の第1章、第2章、第3章を参照のこと。

lasso チューニング・パラメータの選択

. lasso linear lpsa lcavol lweight age lbph svi lcp gleason pgg45 if sample==1, nolog rseed(12345)

Lasso linear model                          No. of obs        =         73
                                            No. of covariates =          8
Selection: Cross-validation                 No. of CV folds   =         10

--------------------------------------------------------------------------
         |                                No. of      Out-of-      CV mean
         |                               nonzero       sample   prediction
      ID |     Description      lambda     coef.    R-squared        error
---------+----------------------------------------------------------------
       1 |    first lambda    .8993453         0      -0.0066     1.354729
      45 |   lambda before     .015002         7       0.6333     .4934641
    * 46 | selected lambda    .0136692         7       0.6334     .4934226
      47 |    lambda after    .0124549         7       0.6333     .4934787
      52 |     last lambda     .007822         8       0.6328     .4941266
--------------------------------------------------------------------------
* lambda selected by cross-validation.

. estimates store cv

CV 関数をプロットするために cvplot を用いる。

. cvplot, minmax

含まれる共変量の数は、CV関数の平坦な部分で大きく変わる可能性がある。我々は、lasso knot tableと呼ばれる表を使って、選択された共変量の数の変動を調査することができる。結び目の表を表示するには、lassoknots を使用する。

. lassoknots

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       |              No. of   CV mean |
       |             nonzero     pred. |                                                     Variables (A)dded, (R)emoved,                                                     
    ID |   lambda      coef.     error |                                                          or left (U)nchanged                                                          
-------+-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------
     2 |   .81945          1  1.261339 | A lcavol                                                                                                                              
    10 | .3893051          2  .7388865 | A lweight                                                                                                                             
    14 | .2683329          3  .6275686 | A svi                                                                                                                                 
    17 |  .202984          4  .5840535 | A pgg45                                                                                                                               
    21 |  .139909          5  .5586959 | A lbph                                                                                                                                
    22 | .1274799          6  .5544653 | A gleason                                                                                                                             
    27 | .0800611          7  .5401904 | A age                                                                                                                                 
  * 46 | .0136692          7  .4934226 | U                                                                                                                                     
    49 | .0103403          8  .4937842 | A lcp                                                                                                                                 
    52 |  .007822          8  .4941266 | U                                                                                                                                     
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
* lambda selected by cross-validation.

adaptive lasso

. lasso linear lpsa lcavol lweight age lbph svi lcp gleason pgg45 if sample==1, nolog rseed(12345) selection(adaptive)

Lasso linear model                         No. of obs         =         73
                                           No. of covariates  =          8
Selection: Adaptive                        No. of lasso steps =          2

Final adaptive step results
--------------------------------------------------------------------------
         |                                No. of      Out-of-      CV mean
         |                               nonzero       sample   prediction
      ID |     Description      lambda     coef.    R-squared        error
---------+----------------------------------------------------------------
      53 |    first lambda    4.194469         0      -0.0066     1.354729
     125 |   lambda before    .0051711         7       0.6361     .4897819
   * 126 | selected lambda    .0047117         7       0.6361     .4897788
     127 |    lambda after    .0042932         7       0.6361     .4897801
     134 |     last lambda    .0022385         7       0.6360     .4898436
--------------------------------------------------------------------------
* lambda selected by cross-validation in final adaptive step.

plugin type lasso

.  lasso linear lpsa lcavol lweight age lbph svi lcp gleason pgg45 if sample==1, nolog rseed(12345) selection(plugin)

Lasso linear model                          No. of obs        =         73
                                            No. of covariates =          8
Selection: Plugin heteroskedastic

--------------------------------------------------------------------------
         |                                No. of
         |                               nonzero    In-sample
      ID |     Description      lambda     coef.    R-squared          BIC
---------+----------------------------------------------------------------
     * 1 | selected lambda    .3832394         2       0.5743     179.3772
--------------------------------------------------------------------------
* lambda selected by plugin formula assuming heteroskedastic errors.

今までのlassoを保存する。

 lasso linear lpsa lcavol lweight age lbph svi lcp gleason pgg45 if sample==1, nolog rseed(12345) selection(adaptive)
 estimates store adaptive
 
 lasso linear lpsa lcavol lweight age lbph svi lcp gleason pgg45 if sample==1, nolog rseed(12345) selection(plugin)
 estimates store plugin

lassogofで比較する。

.  lassogof ols cv adaptive plugin if sample==2

Penalized coefficients
-------------------------------------------------
       Name |         MSE    R-squared        Obs
------------+------------------------------------
        ols |    .6900565       0.3598         24
         cv |    .6963831       0.3540         24
   adaptive |    .7014057       0.3493         24
     plugin |     .829317       0.2306         24
-------------------------------------------------
.  lassogof ols cv adaptive plugin if sample==2, postselection

Postselection coefficients
-------------------------------------------------
       Name |         MSE    R-squared        Obs
------------+------------------------------------
        ols |    .6900565       0.3598         24
         cv |    .7059685       0.3451         24
   adaptive |    .7059685       0.3451         24
     plugin |    .7648852       0.2904         24
-------------------------------------------------

elastic net とリッジ回帰

. elasticnet linear lpsa lcavol lweight age lbph svi lcp gleason pgg45 if sample==1, alpha(.25 .5 .75) nolog rseed(12345)

Elastic net linear model                         No. of obs        =         73
                                                 No. of covariates =          8
Selection: Cross-validation                      No. of CV folds   =         10

-------------------------------------------------------------------------------
               |                               No. of      Out-of-      CV mean
               |                              nonzero       sample   prediction
alpha       ID |     Description      lambda    coef.    R-squared        error
---------------+---------------------------------------------------------------
0.750          |
             1 |    first lambda    3.597381        0      -0.0193     1.371832
            65 |     last lambda    .0104294        8       0.6332     .4936791
---------------+---------------------------------------------------------------
0.500          |
            66 |    first lambda    3.597381        0      -0.0193     1.371832
           126 |     last lambda    .0151313        8       0.6337     .4929103
---------------+---------------------------------------------------------------
0.250          |
           127 |    first lambda    3.597381        0      -0.0158     1.367119
           178 |   lambda before    .0349552        7       0.6352     .4908983
         * 179 | selected lambda    .0318499        7       0.6353     .4908395
           180 |    lambda after    .0290204        8       0.6352     .4909755
           184 |     last lambda    .0200026        8       0.6344     .4919723
-------------------------------------------------------------------------------
* alpha and lambda selected by cross-validation.

リッジ回帰。

. elasticnet linear lpsa lcavol lweight age lbph svi lcp gleason pgg45 if sample==1, alpha(0) nolog rseed(12345)

Elastic net linear model                         No. of obs        =         73
                                                 No. of covariates =          8
Selection: Cross-validation                      No. of CV folds   =         10

-------------------------------------------------------------------------------
               |                               No. of      Out-of-      CV mean
               |                              nonzero       sample   prediction
alpha       ID |     Description      lambda    coef.    R-squared        error
---------------+---------------------------------------------------------------
0.000          |
             1 |    first lambda    899.3453        8      -0.0193     1.371832
            99 |   lambda before     .098703        8       0.6329     .4940113
         * 100 | selected lambda    .0899345        8       0.6334      .493346
-------------------------------------------------------------------------------
* alpha and lambda selected by cross-validation.

保存。

elasticnet linear lpsa lcavol lweight age lbph svi lcp gleason pgg45 if sample==1, alpha(.25 .5 .75) nolog rseed(12345)
estimates store enet
 
elasticnet linear lpsa lcavol lweight age lbph svi lcp gleason pgg45 if sample==1, alpha(0) nolog rseed(12345)
estimates store ridge

lassogof

. lassogof cv adaptive enet ridge plugin if sample==2

Penalized coefficients
-------------------------------------------------
       Name |         MSE    R-squared        Obs
------------+------------------------------------
         cv |    .6963831       0.3540         24
   adaptive |    .7014057       0.3493         24
       enet |    .6958754       0.3544         24
      ridge |    .6961023       0.3542         24
     plugin |     .829317       0.2306         24
-------------------------------------------------
. lassogof cv adaptive enet plugin if sample==2, postselection

Postselection coefficients
-------------------------------------------------
       Name |         MSE    R-squared        Obs
------------+------------------------------------
         cv |    .7059685       0.3451         24
   adaptive |    .7059685       0.3451         24
       enet |    .7059685       0.3451         24
     plugin |    .7648852       0.2904         24
-------------------------------------------------

感度分析

. estimates restore cv
(results cv are active now)

. lassoknots

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       |              No. of   CV mean |
       |             nonzero     pred. |                                                     Variables (A)dded, (R)emoved,                                                     
    ID |   lambda      coef.     error |                                                          or left (U)nchanged                                                          
-------+-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------
     2 |   .81945          1  1.261339 | A lcavol                                                                                                                              
    10 | .3893051          2  .7388865 | A lweight                                                                                                                             
    14 | .2683329          3  .6275686 | A svi                                                                                                                                 
    17 |  .202984          4  .5840535 | A pgg45                                                                                                                               
    21 |  .139909          5  .5586959 | A lbph                                                                                                                                
    22 | .1274799          6  .5544653 | A gleason                                                                                                                             
    27 | .0800611          7  .5401904 | A age                                                                                                                                 
  * 46 | .0136692          7  .4934226 | U                                                                                                                                     
    49 | .0103403          8  .4937842 | A lcp                                                                                                                                 
    52 |  .007822          8  .4941266 | U                                                                                                                                     
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
* lambda selected by cross-validation.

References

Belloni, A., D. Chen, V. Chernozhukov, and C. Hansen. 2012. Sparse models and methods for optimal instruments with an application to eminent domain. Econometrica 80: 2369–2429.

Belloni, A., and V. Chernozhukov. 2013. Least squares after model selection in high-dimensional sparse models. Bernoulli 19: 521–547.

Belloni, A., V. Chernozhukov, and Y. Wei. 2016. Post-selection inference for generalized linear models with many controls. Journal of Business & Economic Statistics 34: 606–619.

Bühlmann, P., and S. Van de Geer. 2011. Statistics for High-Dimensional Data: Methods, Theory and Applications. Berlin: Springer.

Chetverikov, D., Z. Liao, and V. Chernozhukov. 2019. On cross-validated Lasso. arXiv Working Paper No. arXiv:1605.02214. http://arxiv.org/abs/1605.02214.

Hastie, T., R. Tibshirani, and J. Friedman. 2009. The Elements of Statistical Learning: Data Mining, Inference, and Prediction. 2nd ed. New York: Springer.

Hastie, T., R. Tibshirani, and M. Wainwright. 2015. Statistical Learning with Sparsity: The Lasso and Generalizations. Boca Rotaon, FL: CRC Press.

Tibshirani, R. 1996. Regression shrinkage and selection via the lasso. Journal of the Royal Statistical Society, Series B 58: 267–288.

Zou, H. 2006. The adaptive Lasso and its oracle properties. Journal of the American Statistical Association 101: 1418–1429.

Zou, H., and T. Hastie. 2005. Regularization and variable selection via the elastic net. Journal of the Royal Statistical Society, Series B 67: 301–320.