Lassoの収縮パラメータまたは50Kを超える変数を持つリッジ回帰を推定する方法は?


36

50,000個を超える変数を持つモデルにLassoまたはリッジ回帰を使用したい。Rのソフトウェアパッケージを使用してこれを行います。収縮パラメーター()を推定するにはどうすればよいですか?λ

編集:

ここに私が立ち上がったポイントがあります:

set.seed (123)
Y <- runif (1000)
Xv <- sample(c(1,0), size= 1000*1000,  replace = T)
X <- matrix(Xv, nrow = 1000, ncol = 1000)

mydf <- data.frame(Y, X)

require(MASS)
lm.ridge(Y ~ ., mydf)

plot(lm.ridge(Y ~ ., mydf,
              lambda = seq(0,0.1,0.001)))

ここに画像の説明を入力してください

私の質問は次のとおりです。どのが私のモデルに最適であるかをどのように知ることができますか?λ


3
平滑化パラメーターは統計的に推定可能ではありませんが、たとえば、クロス検証を使用してサンプル外の近似を最大化するために選択されています。LASSOとRのRidge Regressionの標準パッケージには、これを行うための機能が組み込まれていると思います-調べましたか?
マクロ

4
私は同意しません-混合モデルのアプローチを使用して、平滑化パラメーターを推定できます。Remlメソッドは、階層ベイズメソッドと同様に存在します。費用のかかる相互検証は必要ありません。
確率の

1
@probabilityislogic情報をありがとうございます。remlを使用してこれを行う方法について、スクリプトに関する詳細がほとんどない場合は素晴らしいと思います
ジョン

2
リッジ回帰の場合、leave-one-out交差検証は本質的に無料であり(AllenのPRESS統計)、合理的に良い方法であることがわかりました。しかし、そう多くの機能を使用すると、使用するほとんどすべての方法が不安定になり、パラメーターと正則化パラメーターの両方を無視する完全なベイジアン手法がより信頼性の高いソリューションになる可能性があります(確率論が示唆したように)。ベイジアン法が気に入らない場合は、バギングを使用し、毎回ラムダを再推定します。
ディクラン有袋類

2
λβklog(λ)log|XTX+λI|kβN(0,σ2λ1)σ2β=β^

回答:


25

cv.glmnetλ112α

λλcv.glmnetλlambda.minlambda.1seλtype.measure

あるいは、Rパッケージmgcvには、ペナルティパラメータの自動選択を含む、2次ペナルティ化による推定の広範な可能性が含まれています。実装されたメソッドには、コメントで言及されているように、一般化された相互検証とREMLが含まれます。詳細については、パッケージ作成者向けの書籍を参照してください。Wood、SN(2006)Generalized Additive Models:an Introduction with R、CRC。


1
cv.glmnetλlambda.minlambda.1se

@chl、提案に感謝します。それを追加すべきだった。
NRH

15

この答えはMATLAB固有ですが、基本的な概念はRで慣れているものと非常に似ているはずです...

MATLABの場合、相互検証を有効にしてlassoを実行するオプションがあります。

そうすると、投げ縄関数は2つの重要なパラメーター値を報告します

  1. 交差検証された平均二乗誤差を最小化するラムダ値
  2. CVMSEが最小の1つの標準誤差内にある収縮の最大量を持つラムダ値。

また、ラムダとCVMSEの関係を調べるために使用できる素敵な小さなグラフを取得します。

ここに画像の説明を入力してください

一般に、青の線と緑の線の間にあるラムダの値を選択します。

次のブログ投稿には、次の例に基づいたデモコードが含まれています。

Tibshirani、R.(1996)。投げ縄による回帰収縮と選択。J.ロイヤル。統計学者。Soc B.、Vol。58、No。1、267-288ページ)。

http://blogs.mathworks.com/loren/2011/11/29/subset-selection-and-regularization-part-2/


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.