リッジ正規化を使用した Glmnet は、ラムダ ベクトルが glmnet アルゴリズムによって選択された場合と、関数呼び出しで指定された場合とで、最初のラムダ値の係数を異なる方法で計算します。たとえば、2 つのモデル (同一であると予想されます)
> m <- glmnet(rbind(c(1, 0), c(0, 1)), c(1, 0), alpha=0)
> m2 <- glmnet(rbind(c(1, 0), c(0, 1)), c(1, 0), alpha=0, lambda=m$lambda)
完全に異なる係数を与える:
> coef(m, s=m$lambda[1])
3 x 1 sparse Matrix of class "dgCMatrix"
1
(Intercept) 5.000000e-01
V1 1.010101e-36
V2 -1.010101e-36
> coef(m2, s=m2$lambda[1])
3 x 1 sparse Matrix of class "dgCMatrix"
1
(Intercept) 0.500000000
V1 0.000998004
V2 -0.000998004
異なるデータセットでも同じことが起こります。glmnet に lambda が提供されていない場合、lambda.max coef(m, s=m$lambda[1]) (切片を除く) のすべての係数はゼロに非常に近く、予測は任意の X に対して等しくなります (丸めのため? )。
私の質問:
- これはなぜですか?違いは意図的なものですか?
- 最大ラムダ coef(m, s=m$lambda[1]) の係数はどのくらい正確に決定されますか?