【问题标题】:Model learning times in RR中的模型学习时间
【发布时间】:2017-07-16 17:36:15
【问题描述】:

总的来说,我对 r 和机器学习还很陌生,我正在尝试使用一些数据来训练几个不同的模型。训练数据集由包括目标在内的 75 个变量的 4650 个观测值组成。使用虚拟变量,我猜(自己没有预处理)总变量达到 130 左右。目标是具有 3 个级别的有序因子。使用嘎嘎声,训练一棵树需要 1-2 秒,训练随机森林需要 45-55 秒,使用 svm 大约需要 30 秒。但是使用带有插入符号的 nnet 包,我为神经网络模型运行了以下代码:

nnet_grid<-expand.grid(.decay = c(.1, .01), .size = c(20, 30, 40, 50))
nnetfit<-caret::train(OUTPUT ~ ., data=hdtrain, method="nnet", 
                      maxit = 10000, tuneGrid = nnet_grid, MaxNWts=10000)

现在已经超过 36 小时,并且仍在运行。这种时间是预期的吗?我在具有 8gb 内存的 i7-2720QM @ 2.2GHz 上运行它。

【问题讨论】:

  • 您可能希望将 trControl 参数更改为重采样默认值以外的值。请参阅?trainControl 了解更多详细信息,特别是您可能需要调整前几个参数。
  • 不,有问题。但我建议在 python 中使用 TensorFlow 或 Theano 来构建神经网络模型。

标签: r machine-learning neural-network


【解决方案1】:

您将maxitMaxNWts 设置得相当高——您选择这些数字有什么原因吗?我建议先尝试使用默认值,分别为 100 和 1000,并且可能还会减小参数网格的大小。然后在运行后增加迭代次数和参数数量。

来自nnet documentationMaxNWts

允许的最大重量数。代码中没有内在限制,但增加 MaxNWts 可能会导致拟合非常缓慢且耗时。 (强调我的)

【讨论】:

  • maxit 很高,因为在之前的单独运行中,我很少看到模型在 4K 迭代之前收敛,有时在 8-9K 之后收敛。 MaxNWts 是这个数字,因为有 50 个神经元、119 个输入(包括假人)和 3 个输出类,权重为 6103。无论如何,上面的代码并没有停止。我猜train 会一直运行,直到所有模型收敛。所以在 72 小时后,我停止了它,让所有的时间都白费了。
猜你喜欢
  • 1970-01-01
  • 2016-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-20
  • 1970-01-01
  • 1970-01-01
  • 2015-11-18
相关资源
最近更新 更多