9

このglmnetパッケージは、予測子が選択されていない最大値からスケーリングされたLASSO調整パラメーターの範囲を使用します。この値を計算する方法を知りたいです。たとえば、単純なデータセットでは次のようになります。lambdalambda_maxglmnetlambda_max

set.seed(1)
library("glmnet")
x <- matrix(rnorm(100*20),100,20)
y <- rnorm(100)
fitGLM <- glmnet(x,y)
max(fitGLM$lambda)
# 0.1975946

パッケージ vignette ( http://www.jstatsoft.org/v33/i01/paper ) は、セクション 2.5 で、この値を次のように計算すると説明しています。

sx <- as.matrix(scale(x))
sy <- as.vector(scale(y))
max(abs(colSums(sx*sy)))/100
# 0.1865232

これは明らかに近いですが、同じ値ではありません。では、この違いは何が原因なのでしょうか。lambda_max関連する質問では、ロジスティック回帰をどのように計算できますか?

4

5 に答える 5

3

2 番目の質問については、Friedman らの論文「Regularization paths for generalized linear models via coordinate descent」を参照してください。特に、平衡状態での等式である式 (10) を参照してください。分子 $S(\cdot,\cdot)$ がすべてのパラメータでゼロになる条件を確認してください。

于 2015-12-11T00:23:52.993 に答える
0

最大ラムダ値によるとhelp("glmnet")、「すべての係数がゼロになる最小値」です。

sum(fitGLM$beta[, which.max(fitGLM$lambda)])
#[1] 0
sum(glmnet(x,y, lambda=max(fitGLM$lambda)*0.999)$beta)
#[1] -0.0001809804

一見すると、 によって呼び出される Fortran コードによって値が計算されているように見えますelnet

于 2014-08-12T09:44:15.677 に答える