gpt4 book ai didi

R - cv.glmnet 错误 : matrices must have same number of columns

转载 作者:行者123 更新时间:2023-12-04 10:46:35 25 4
gpt4 key购买 nike

从带有大型稀疏数据集的 glmnet 包中运行 R cv.glmnet 函数我经常收到以下错误:

# Error: Matrices must have same number of columns in .local(x, y, ...)

我用随机生成的数据复制了错误:
set.seed(10)

X <- matrix(rbinom(5000, 1, 0.1), nrow=1000, ncol=5)
X[, 1] <- 0
X[1, 1] <- 1

Y <- rep(0, 1000)
Y[c(1:20)] <- 1

model <- cv.glmnet(x=X, y=Y, family="binomial", alpha=0.9, standardize=T,
nfolds=4)

这可能与初始变量筛选有关(基于 XY 的内积)。不是将系数固定为零 glmnet 从 X 中删除变量矩阵,这是为每个验证集完成的。然后,如果在其中一些变量中删除变量并保留在其他变量中,则会出现错误。

有时增加 nfolds有帮助。这与假设 nfolds 的数量较多时一致意味着更大的验证子集和更小的机会在其中任何一个中删除变量。

一些额外的注意事项:

错误仅出现在 alpha接近 1( alpha=1 相当于 L1 正则化)并使用标准化。它不会出现在 family="Gaussian" .

你认为会发生什么?

最佳答案

这个例子是有问题的,因为一个变量只有一个 1,其余的都是 0。在这种情况下,逻辑回归可能会发散(如果没有正则化),因为将该系数推向无穷大(正负取决于响应)将完美地预测该观察结果,而不会影响其他任何东西。

现在模型是正则化的,所以这不应该发生,但它确实会引起问题。
我发现通过使 alpha 变小(朝向山脊,本例中为 0.5),问题就消失了。

这里真正的问题是与用于每个折叠的 lambda 序列有关,但这有点技术性。我将尝试修复 cv.glmnet,使这个问题消失。

Trevor Hastie(glmnet 维护者)

关于R - cv.glmnet 错误 : matrices must have same number of columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22403793/

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