なぜ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 を見つけるために広く以下のステップを使用する。
- 標本を訓練サブ標本と検証サブ標本に分割する。
- 競合する各推定量のモデル・パラメータを推定するために訓練データを使用する。
- 各競合する推定量によって生成された予測値の標本外平均2乗誤差(MSE)を推定するために検証データを使用する。
- 最良の予測量は、最小の標本外MSEを産出する推定量である。
- 通常の最小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.