【问题标题】:Ridge Regression always returns Error岭回归总是返回错误
【发布时间】:2017-08-22 00:24:07
【问题描述】:

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

if (any(lambda

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

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

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

【问题讨论】:

  • 尝试使用小 Alpha:alpha = 1e-20。它有效。
  • 我试过了,发现它有效,但是任何接近 0 的东西在所有意图和目的上都类似于 ridge 吗?
  • 尝试使用library(glmnet):ridge = cv.glmnet(auto$x, auto$y, alpha = 0)。有用。我不知道为什么HDTweedie 对alpha=0 有问题
  • @J. Gursky:我认为一个可以忽略不计的小阿尔法将与拟合岭回归实质上相同:阿尔法项决定了岭回归惩罚与损失函数中 LASSO 惩罚的权重(即鼓励小系数的位),如果你的模型给出了 99.99999999% 权重的岭回归惩罚,那么它在功能上只是一个岭回归。
  • @Marco Sandri,我考虑过使用 glmnet,但据我了解,它没有 Tweedie 发行版的功能,是吗?

标签: r statistics regression tweedie


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2021-02-20
    • 2012-10-07
    • 2012-02-26
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    • 2019-10-11
    • 2018-05-12
    相关资源
    最近更新 更多