投げ縄vs適応投げ縄


12

LASSOとアダプティブLASSOは2つの異なるものですよね?(私にとっては、ペナルティは異なって見えますが、私は何かを逃したかどうかを確認しているだけです。)

一般にエラスティックネットについて話すとき、特別なケースはLASSOまたは適応型LASSOですか?

alpha = 1を選択した場合、glmnetパッケージは何をしますか?

Adaptive LASSOは穏やかな条件で機能しますよね?どちらも適切なデータにoracleプロパティがありますよね?

回答:


15

質問に対する簡単な回答:

  • 投げ縄と適応投げ縄は異なります。(アダプティブラッソが標準のラッソとどのように異なるかについては、Zou(2006)を確認してください。)
  • なげなわは、弾性ネットの特殊なケースです。(Zou&Hastie(2005)を参照してください。)
    アダプティブラッソは、弾性ネットの特別なケースではありません。
    エラスティックネットは、投げ縄や適応投げ縄の特殊なケースではありません。
  • glmnetRの「glmnet」パッケージの関数は、のlasso(適応型lassoではない)を実行しalpha=1ます。
  • 投げ縄は、適応投げ縄よりも穏やかな条件下で機能しますか?私はこれに答えることはできません洞察のためにZou(2006)をチェックする必要があります)。
  • オラクルのプロパティを持つのは、アダプティブラッソ(ラッソやエラスティックネットは除く)のみです。(Zou(2006)を参照してください。)

参照:


12

LASSOソリューションは、

Q(β|X,y)=12n||yXβ||2+λj|βj|

アダプティブラッソは、これに重みを追加するだけで、バイアスされているLASSO推定の既知の問題に対抗しようとします。

Qa(β|X,y,w)=12n||yXβ||2+λjwj|βj|

多くの場合、次のように表示されます、のいくつかの初期推定値である(多分ちょうどLASSOを使用して、または最小二乗法を使用してから、など)。時々、アダプティブラッソは、「パスワイズアプローチ」を使用してフィットします。この場合、重みを変更できます。β jを β λwj=1/β~jβ~jβλ

glmnet penalty.factor glmnet

wj(λ)=w(β~j(λ))
。で重みはで指定可能なパッケージ引数。で「パスワイズアプローチ」を指定できるかどうかはわかりません。glmnetpenalty.factorglmnet

ペナルティ条件で絶対値を取ることを忘れました。
Richard Hardy

|β|γγβ

基本的に、glmnetはデフォルトでLASSOまたはエラスティックネットを実行しますが、適切な重みを指定することで、これを適応型LASSO(またはEN)に切り替えることができますか?これが事実なら、100万人に感謝します!
Mr Validation

@MrValidation、アダプティブラッソなどの新しいメソッドの作成者は、Webサイトにメソッドのコードを持っている可能性があることに注意してください(たまに、自分たちが書いたRパッケージへの参照を提供するだけです)。
Richard Hardy

1
glmnetの重みの引数は、ペナルティの重みではなく、観測の重みを指していると思います
jmb

3

適応LASSOは、一貫した変数選択に使用されます。LASSOを変数選択に使用するときに発生する問題は次のとおりです。

  • 収縮パラメータは、選択よりも予測よりも大きくする必要があります
  • ゼロ以外の大きなパラメーターは小さすぎるため、バイアスが大きすぎます
  • ゼロ以外の小さなパラメータを一貫して検出できない
  • 予測子間の高い相関は、選択パフォーマンスの低下につながります

したがって、LASSOは、収縮パラメーター、パラメーター(ベータ最小条件)、および相関(代表的でない条件)に関するいくつかの条件下での変数選択に対してのみ一貫しています。詳細については、修士論文の 101〜106ページを参照してください。

LASSOは予測用の調整パラメーターを選択するときに多くの変数を含むことがよくありますが、実際のモデルはこれらの変数のサブセットである可能性が非常に高いです。これは、予測最適調整パラメーターを使用してLASSO推定のバイアスを制御する、適応LASSOのような推定の第2段階を使用することを示唆しています。これにより、上記の条件なしで一貫した選択(またはOracleプロパティ)が実現します。

適応型LASSOにはglmnetを使用できます。最初に、重みを計算するために、最小二乗、リッジ、またはLASSO推定のいずれかの初期推定が必要です。次に、Xマトリックスをスケーリングすることにより、適応型LASSOを実装できます。トレーニングデータに最小二乗初期推定値を使用する例を次に示します。

# get data
y <- train[, 11]
x <- train[, -11]
x <- as.matrix(x)
n <- nrow(x)

# standardize data
ymean <- mean(y)
y <- y-mean(y)  
xmean <- colMeans(x)
xnorm <- sqrt(n-1)*apply(x,2,sd)
x <- scale(x, center = xmean, scale = xnorm)

# fit ols 
lm.fit <- lm(y ~ x)
beta.init <- coef(lm.fit)[-1] # exclude 0 intercept

# calculate weights
w  <- abs(beta.init)  
x2 <- scale(x, center=FALSE, scale=1/w)  

# fit adaptive lasso
require(glmnet)
lasso.fit <- cv.glmnet(x2, y, family = "gaussian", alpha = 1, standardize = FALSE, nfolds = 10)
beta <- predict(lasso.fit, x2, type="coefficients", s="lambda.min")[-1]

# calculate estimates
beta <- beta * w / xnorm # back to original scale
beta <- matrix(beta, nrow=1)
xmean <- matrix(xmean, nrow=10)
b0 <- apply(beta, 1, function(a) ymean - a %*% xmean) # intercept
coef <- cbind(b0, beta)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.