网络。同一个 lambda 向量的不同结果,取决于它是通过 glmnet 计算还是作为参数传递下来

Posted

技术标签:

【中文标题】网络。同一个 lambda 向量的不同结果,取决于它是通过 glmnet 计算还是作为参数传递下来【英文标题】:Glmnet. Different results for the same lambda vector, depending on whether it was calculated by glmnet or passed down as a parameter 【发布时间】:2014-05-16 16:11:36 【问题描述】:

当 lambda 向量由 glmnet 算法选择时,与在函数调用中给出时相​​比,具有岭正则化的 Glmnet 计算第一个 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]) 的系数究竟是如何确定的?

【问题讨论】:

【参考方案1】:

这是一个棘手的问题。当 alpha=0 时,lambda 的“起始”值(除截距之外的所有系数都为零时的值)为无穷大。由于我们想要生成一个从初始值几何上趋于零的值网格,因此无穷大并没有多大用处。因此,我们将其设为当 alpha=0.001(在本例中为 500)时使用的起始值,这是看到的最大 lambda。

因此,在 m 中,系数实际上为零,但报告的最大 lambda 为 500(同时它实际上是无穷大)

在 m2 中,我们实际上为第一个位置生成了 500 处的拟合,并且系数并不完全为零。

为了验证我所说的,注意后面的系数都匹配。

特雷弗·哈斯蒂

【讨论】:

以上是关于网络。同一个 lambda 向量的不同结果,取决于它是通过 glmnet 计算还是作为参数传递下来的主要内容,如果未能解决你的问题,请参考以下文章

基于遗传算法寻优的多核支持向量机故障诊断系统

并行流在不同的操作下可以正常工作吗?

在向量成员变量中存储线程触发断点

$\lambda = 0$ 和 OLS 的 LASSO 在 R glmnet 中产生不同的结果

鉴于所有调用都是异步的,您如何在 lambda 中构建顺序 AWS 服务调用?

绘制具有单独分量数组的二维向量