R神经网络是否过度拟合?

时间:2019-07-19 14:49:07

标签: r machine-learning neural-network recurrent-neural-network

我用R中的Neuronet软件包构建了一个神经网络,以预测股票价格。我的模型和代码运行良好,但是准确率达到了97-99%,这让我有点怀疑:

我的模型是否过拟合?

This是我正在使用的数据集(已缩放),而this是我的原始数据集(未缩放),我需要计算其准确性。这是构建和测试模型的代码:

normalize <- function(x) {
return ((x - min(x)) / (max(x) - min(x)))
}

nn_df <- as.data.frame(lapply(nn_df, normalize))    

nn_df_train = as.data.frame(nn_df[1:1965,]) #1965
nn_df_test = as.data.frame(nn_df[1966:2808,]) #843

# NN for Sentiment GI
nn_model <- neuralnet(GSPC.Close ~ GSPC.Open +GSPC.Low + GSPC.High + SentimentGI, data = nn_df_train, hidden=5, linear.output=TRUE, threshold=0.01)

plot(nn_model)

nn_model$result.matrix

nn_pred <- compute(nn_model, nn_df_test)
nn_pred$net.result

results <- data.frame(actual = nn_df_test$GSPC.Close, prediction = nn_pred$net.result)
results

#calc accuracy
predicted = results$prediction * abs(diff(range(nn_org$GSPC.Close))) + min(nn_org$GSPC.Close)
actual = results$actual * abs(diff(range(nn_org$GSPC.Close))) + min(nn_org$GSPC.Close)
comparison = data.frame(predicted,actual)
#deviation=((actual-predicted)/actual)
deviation= abs((actual-predicted)/actual)
comparison=data.frame(predicted,actual,deviation)
accuracy=1-abs(mean(deviation))
accuracy

1 个答案:

答案 0 :(得分:0)

我要说的是,只有在以下情况下才有过度拟合的风险:

  • 该模型已经过多次迭代训练,每次迭代都会拖延训练和测试组的内容
  • 参数经过优化后,模型已经过优化 进行了反复调整,以便在测试中获得良好的准确性 数据。

在两种情况下,都需要一个验证集。

如果以上都不是,则该准确性显然更加可靠。即使这样,您也可以使用一组额外的数据来测试同一模型,以确认结果。

编辑:让我补充一点,尽管令人惊讶的是,我仅使用线性回归就可以在未来30天的股票预测模型中获得类似的准确性;所以我不知道这种准确性水平在股市预测领域是否足够好。