我使用的是Neuralnet和nnet包。我有一个包含26个变量的数据,其中17个是二进制数据,其中9个是连续的。我预测的变量是连续的。我在火车数据中有1279次观察。我的第一个测试向量是已知数据,其他是迭代中的预测。数据在Z分数上归一化,并且在[0,1]上缩放。所有变量都是类xts(),甚至是二进制变量。
>model <- neuralnet(formula,
data = train_data, hidden = 2, threshold = 5*10^-3, stepmax = 2000000,
algorithm = "backprop", learningrate = 0.001, linear.output = F, rep = 4,
act.fct = "logistic")
而不是我在for循环中做出预测
>for(i in 1:length(test_data)){
new_prediction <- compute(model, last_prediction, rep = best)
re_scaled_and_renormalized <- new_prediction
test_data[i,] <- re_scaled_and_renormalized
new_vector <- calculating_other_parameters(re_scaled_and_renormalized)
last_prediction <- normalized(scaled(new_vector))
}
测试集上有结果。
Real Predicted
14.50 14.32869879
14.51 14.38411842
14.97 14.41794784
14.74 14.45243153
14.74 14.49286739
14.33 14.52317526
14.03 14.53298749
14.02 14.52977663
13.91 14.57668540
13.90 14.61568341
13.05 14.64826698
13.12 14.70308401
13.41 14.77500693
13.49 14.90128834
13.35 15.03657559
13.51 15.15863558
14.01 15.27185599
13.94 15.35757182
14.15 15.45064387
14.25 15.53207570
14.16 15.59686009
结果我上火车套装非常好(很合适)。结果中存在动态(列车组的结果非常适合实际数据),但在测试集上没有动态(实际数据是具有起伏的时间序列函数,但预测数据与回归线非常相似)。如果我使用nnet(),我会遇到同样的问题。知道我做错了吗?