【发布时间】:2016-11-27 02:01:34
【问题描述】:
我在 glmnet 计算不合理的 lambda 序列时遇到了 ridge cv 问题。
我正在使用完全相同的数据使用glmnet 运行岭回归和套索回归。套索很好,但岭不是。
ridge.cv <- cv.glmnet(preds[train.i,], resp[train.i], alpha=0, family="binomial", type.measure="class")
lasso.cv <- cv.glmnet(preds[train.i,], resp[train.i], alpha=1, family="binomial", type.measure="class")
range(lasso.cv$glmnet.fit$dev.ratio)
[1] 1.117039e-14 9.334558e-01
range(ridge.cv$glmnet.fit$dev.ratio)
[1] 1.117039e-14 1.852909e-01
> range( lasso.cv$lambda)
[1] 0.002812585 0.268474838
> range(ridge.cv$lambda)
[1] 2.812585 268.474838
因此,Lasso 计算了一个合理的 lambda 序列,产生了一个合理的偏差范围。然而,Ridge 计算出的 lambda 序列正好是 lasso 的 1000 倍,产生了一个荒谬的偏差范围。预测矩阵的尺寸为 891 x 1028
知道为什么会发生这种情况以及如何解决吗?我当然可以输入自己的序列,但我想知道为什么会发生这种情况,以防它只是更大问题的征兆。
【问题讨论】: