gpt4 book ai didi

r - ridge vs lasso 中 glmnet 中的 lambda 序列

转载 作者:行者123 更新时间:2023-12-02 04:39:33 25 4
gpt4 key购买 nike

我在计算不合理的 lambda 序列时遇到了 glmnet 中的脊 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

知道为什么会发生这种情况以及如何解决它吗?我当然可以输入我自己的序列,但我想知道为什么会这样,以防它只是一个更大问题的征兆。

最佳答案

来自 glmnet 帮助文件:

lambda: The actual sequence of ‘lambda’ values used. When ‘alpha=0’, the largest lambda reported does not quite give the zero coefficients reported (‘lambda=inf’ would in principle). Instead, the largest ‘lambda’ for ‘alpha=0.001’ is used, and the sequence of ‘lambda’ values is derived from this.

基本上,在岭回归的情况下,它从 alpha = 0.001,这将比从 alpha = 1(LASSO 情况)派生的 lambda.max 大 1000 倍。

我不太确定你所说的“修复它”是什么意思,因为有意义的 lambda 值的范围会根据你的 alpha 值而变化。

关于r - ridge vs lasso 中 glmnet 中的 lambda 序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38538762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com