【问题标题】:Is this R neural network overfitting?这是 R 神经网络过拟合吗?
【发布时间】:2019-07-19 14:49:07
【问题描述】:

我用 R 中的神经网络包构建了一个神经网络来预测股票价格。我的模型和代码运行良好,但准确率在 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

【问题讨论】:

  • 您是否在验证集上运行过?您通常将数据分成几个子集,其中一个用于测试模型的泛化程度/过拟合程度。
  • 不,我只是将数据分为训练 (70%) 和测试 (30%)。从代码中可以看出,我使用测试来测试我的模型。
  • 嗨,欢迎来到 Stack Overflow。我更改了您的问题的标题及其文本的措辞,以明确您的要求。你没有问任何关于股票价格的事情。你在问你的模型是否过拟合。但是,我不确定您的问题是否适合 Stack Overflow。请查看stats.stackexchange.com 并考虑在那里询问。祝你好运!

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


【解决方案1】:

我会说只有在以下情况下存在过度拟合的风险:

  • 该模型已经过多次迭代训练,每次迭代都会打乱训练组和测试组的内容
  • 在参数设置完成后模型已经优化 被反复调整,以便在您的测试中获得良好的准确性 数据。

在这两种情况下,验证集都是必要的。

如果以上都不是,那么这种准确性显然更可靠。即便如此,您也可以使用一组额外的数据来测试相同的模型,以确认您的结果。

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

【讨论】:

    猜你喜欢
    • 2021-04-13
    • 2021-07-07
    • 2018-12-09
    • 1970-01-01
    • 2018-02-19
    • 2017-02-19
    • 2017-11-27
    • 2018-07-16
    • 2011-03-08
    相关资源
    最近更新 更多