我正在研究用Python编写的反向传播神经网络here。它与所提供的简单XOR示例配合得很好。在
然而,我想用它来做一些更复杂的事情:尝试预测股票价格。我知道神经网络不一定是最好的选择,可能一点也不准确,但我还是想试试。在
我的第一次尝试是获得某一特定股票(例如GOOG)过去10天的收盘价。然后我希望用这些数据训练神经网络,然后预测第二天的收盘价,但后来我意识到了一点:我只有1个输入值,在试图得到预测值时,没有任何输入可以提供。这是我所有困惑的根源,输入/隐藏/输出节点的数量。在
在一篇论文here中,他们提到使用最近d
天股票的最低、最高和平均值作为输入。这是3个输入(或4个?如果你计算d
),但是为了预测第二天的价格,你将不能提供任何这些作为输入(除了d
?)。在
当用神经网络进行训练和预测时,你如何解释输入数量的这种变化?我是否遗漏了NN的一些基本部分以及它们是如何使用的?谢谢!在
你用滚动平均法消除了很多信息。将时间序列数据表示为神经网络的方法还有很多,例如滑动窗口法。在
假设您使用3天的数据作为输入,以便预测第4天。代替之前3天的平均值,您可以将每一天都呈现给一个输入节点。在前半部分数据上滚动这个3天的窗口来训练你的模型。要进行测试,请在您希望预测的前一天提供价值3天的价格。E、 g
训练集
测试
^{pr2}$@anana的评论帮助我点击了神经网络应该如何工作。正如她所说,我可以提供一只股票在过去d天(在我的例子中,是5天)的平均值作为输入,试图得到一个预测。在
这意味着我的培训输入格式为:
[[rollingAverage, rollingMinimum, rollingMaximum], normalizedClosePrice]
过去五天(由于滚动窗口,总共分析了9天)。在当我想在培训后获得预测时,我只提供以下格式的输入节点:
[rollingAverage, rollingMinimum, rollingMaximum]
最近5天。在以下是所有相关逻辑,结合我在原题中链接的神经网络:
有监督的机器学习者是一种算法,它采用一组特征(一组数字、输入)和一个结果(输出)相一致的案例。在
您需要的是一个训练数据集,例如,几个月的时间序列,您知道它的输出。一旦你的人际网络得到训练,你就要计算最近几天的股票价值(因为它已经发生了),以便预测明天会发生什么,这样你就知道该买什么了。在
最后,
d
不是一个输入,而是一个常量。输入/输出的数量是独立的(好吧,只要你有足够的输入特性)。理论上,拥有更多的特征可以提高预测的准确性,但是需要更长的处理时间,需要更大的训练集,并且可能容易过度拟合。在相关问题 更多 >
编程相关推荐