9

我有相当多的数据,它有 80 列和大约 220, 000 行当我尝试使用nnet'smultinom()函数对无序多分类数据执行多项逻辑回归时,该函数似乎在 100 次迭代后停止:

# weights:  322 (270 variable)
initial  value 807521.728781 
iter  10 value 191523.940813
iter  20 value 163085.728004
iter  30 value 146262.378340
iter  40 value 139398.851395
iter  50 value 134606.101687
iter  60 value 133588.725646
iter  70 value 133253.102380
iter  80 value 133129.328709
iter  90 value 133098.717752
iter 100 value 133095.661773
final  value 133095.661773 
stopped after 100 iterations

我也尝试使用VGAM'svglm()但是它给了我以下错误:

Error in outer(X, Y, FUN, ...) : allocMatrix: too many elements specified

一个可能的解释是,我的微型 macbook air 无法胜任这项工作,但我想知道,我还有哪些其他替代方法可以对我目前拥有的数据集执行多项逻辑回归?

4

2 回答 2

20

如果您查看 的文档multinom(),您会看到它包含一个...用于“nnet 的附加参数”的参数。

然后,查看 的文档nnet,您将看到以下用法:

nnet(x, y, weights, size, Wts, mask,
linout = FALSE, entropy = FALSE, softmax = FALSE,
censored = FALSE, skip = FALSE, rang = 0.7, decay = 0,
maxit = 100, Hess = FALSE, trace = TRUE, MaxNWts = 1000,
abstol = 1.0e-4, reltol = 1.0e-8, ...)

您遇到的问题是默认maxit值为 100。尝试将maxit=1000(或任何您想要的)添加到您的multinom()参数中。我没有测试过这个(我需要你包括可重现的样本数据),但我认为它会成功。

于 2012-07-27T16:21:51.597 回答
7

如果您查看它的帮助,?multinom它会说它调用nnet并且...nnet. 这些参数之一是maxit默认为 100。将其作为参数添加到您的最大迭代次数中。

你也可以看看这个关于vglm错误的问题。

于 2012-07-27T16:21:03.033 回答