0

我正在尝试使用该HDtweedie包为 Tweedie 发行版运行岭回归。除了 0 之外,使用任何级别的 alpha 运行弹性网都没有问题。当我尝试运行 ridge 时,它​​总是输出:

if (any(lambda < 0)) stop("lambdas should be non-negative") 中的错误:需要 TRUE/FALSE 的缺失值

auto使用包含在中的包的示例HDTweedie

require(HDtweedie)
data('auto')
ridge = cv.HDtweedie(auto$x, auto$y, p = 1.44, alpha = 0)

非常感谢任何想法或建议!

4

1 回答 1

0

正如@Marco Sandri 评论的那样,实现这一目标的最简单方法是使用非常小的 alpha 值。然而,这样做的副作用是 lambdas 的选择。HDtweedie 文档中描述了 lambda 的默认起始值​​:

max(lambda) 是所有系数都为零的 lambda 的最小值。

如果 lasso 权重为 1e-20,那么这个值将是 1e+20 的量级来补偿,因此脊收缩效果将是巨大的。对我来说,这表现为非常小的系数,截距不受影响。

这可以通过手动提供一组适当的 lambda 值来解决。

于 2018-05-28T16:01:04.853 回答