我用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
答案 0 :(得分:0)
我要说的是,只有在以下情况下才有过度拟合的风险:
在两种情况下,都需要一个验证集。
如果以上都不是,则该准确性显然更加可靠。即使这样,您也可以使用一组额外的数据来测试同一模型,以确认结果。
编辑:让我补充一点,尽管令人惊讶的是,我仅使用线性回归就可以在未来30天的股票预测模型中获得类似的准确性;所以我不知道这种准确性水平在股市预测领域是否足够好。