当使用glmnet算法选择lambda向量时,带有岭正则化的Glmnet在计算第一个lambda值的系数时与在函数调用中给定lambda向量时不同。例如,两个模型(我期望它们是相同的)
> 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都相等。
我的问题:
- 为什么会这样?是否存在差异?
- 最大Lambda coef(m, s=m$lambda[1])的系数是如何确定的?