使用 Caret 库的 train() 方法训练的神经网络模型对测试数据集产生完全相同的预测值。此外,使用相同的调整参数 train() 函数比直接使用 neuralnet() 花费的时间要长得多。预测变量的范围归一化为 (0, 1)。
以下代码运行速度很快并给出了合理的结果,即测试数据的预测并不完全相同。
neuralnet(MEDV ~ . , bh.norm.tr, linear.output = TRUE, hidden = 3)
但是,当我使用具有相同参数的 Caret 时:
layer.grid <- expand.grid(layer1 = 3, layer2 = 0, layer3 = 0)
nnCtrl <- trainControl(method = 'none')
bh.MEDV.cv.nn <- train(MEDV ~ . , data = bh.norm.tr,
method = "neuralnet",
trControl = nnCtrl,
tuneGrid = layer.grid)
此代码运行时间太长,例如运行 10 分钟以上,并且给出的结果比直接使用 neuralnet() 更差。
更让我困惑的是,如果我使用稍微复杂一点的网络,比如:
layer.grid <- expand.grid(layer1 = 3, layer2 = 2, layer3 = 0)
nnCtrl <- trainControl(method = 'cv')
然后,验证数据的所有预测都是完全相同的数字。
所有预测变量都是范围归一化的。我还在 train() 中使用了 learningrate = .01 参数,但没有任何区别。
此时我完全迷路了。任何指导将不胜感激。
nnCtrl <- trainControl(method = 'none')