Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 神经网络和算法,从过去预测未来结果_Algorithm_Neural Network_Prediction - Fatal编程技术网

Algorithm 神经网络和算法,从过去预测未来结果

Algorithm 神经网络和算法,从过去预测未来结果,algorithm,neural-network,prediction,Algorithm,Neural Network,Prediction,我正在研究一个算法,在这个算法中,我得到了一些输入和输出,并且给出了3个月的输出(给予或接受),我需要一种方法来找到/计算未来的输出。 现在,给出的这个问题可能与股票交易有关,我们得到了一定的约束和一定的结果,我们需要找到下一个。 我偶然发现了神经网络股票市场预测,你可以,或者你可以读到它,然后 要开始制作算法,我无法确定层的结构应该是什么。 给定的约束条件是: 输出将始终是整数 输出将始终在1和100之间 我们没有确切的输入,就像股票市场一样,我们只知道股票价格会波动1和100,所以我们可以

我正在研究一个算法,在这个算法中,我得到了一些输入和输出,并且给出了3个月的输出(给予或接受),我需要一种方法来找到/计算未来的输出。
现在,给出的这个问题可能与股票交易有关,我们得到了一定的约束和一定的结果,我们需要找到下一个。
我偶然发现了神经网络股票市场预测,你可以,或者你可以读到它,然后

要开始制作算法,我无法确定层的结构应该是什么。
给定的约束条件是:

  • 输出将始终是整数
  • 输出将始终在1和100之间
  • 我们没有确切的输入,就像股票市场一样,我们只知道股票价格会波动1和100,所以我们可以(或不)把这看作是唯一的输入。
  • 我们有过去3个月(或更长)的记录
现在,我的第一个问题是,我需要多少节点作为输入

输出只有一个,很好。但正如我所说的,我是否应该为输入层设置100个节点(假设股票价格始终是整数,并且始终是btw 1和100?)

隐藏层呢?有多少个节点?比如说,如果我在那里也有100个节点,我认为这不会对网络进行太多的训练,因为我认为对于每个输入,我们需要考虑所有以前的输入

比如说,我们正在计算第4个月的第1天的输出,我们应该在隐藏/中间层中有90个节点(为了简单起见,每个月想象30天)。现在有两个案例

  • 我们的预测是正确的,结果和我们预测的一样
  • 我们的预测失败了,结果与我们的预测不同
不管是什么情况,现在当我们计算第4个月的第2天的输出时,我们不仅需要这90个输入,还需要最后的结果(不是预测,是相同的!),因此我们现在在中间/隐藏层中有91个节点

依此类推,它将每天不断增加节点的数量,AFAICT

所以,我的另一个问题是,如果隐藏层/中间层的节点数量动态变化,我如何定义/设置它的数量

我的最后一个问题是,有没有其他我不知道的算法(对于这类事情/东西)?我应该用它来代替神经网络的东西


最后,我是否遗漏了任何可能导致我(而不是我正在做的算法)预测输出的东西,我是指任何警告,或任何可能导致我遗漏的出错的东西?

成千上万想要赢得100万美元的人对这类问题进行了特别深入的研究

早些时候提交的意见书通常是基于。后来提交的意见书使用和。获胜者综合运用了几种技巧

阅读优秀的文章会给你很多关于从过去预测未来的最佳方法的见解。您还可以找到不同方法的大量源代码

有趣的是,神经网络很快就被抛弃了,因为它们没有产生任何有价值的东西(我个人还没有看到一个非平凡的神经网络产生任何有价值的东西)

如果你刚开始,我建议SVD作为第一条道路;它非常容易制作,并且常常对数据产生令人惊讶的见解


祝你好运

对于你的问题,有很多可以回答的。事实上,您的问题解决了时间序列预测的一般问题,以及神经网络在这项任务中的应用。我在这里只写了几个最重要的关键点,但在读了这些之后,你可能会深入研究Google的查询结果
时间序列预测神经网络
。有很多作品详细介绍了这些原则。各种软件实现(带有源代码)也确实存在()

1) 我必须说,99%的问题是关于数据预处理和选择正确的输入/输出因子,只有1%的问题是关于要使用的具体仪器,无论是神经网络还是其他什么。作为补充,神经网络可以在内部实现大多数其他数据分析方法。例如,您可以使用神经网络进行主成分分析(PCA),这与SVD密切相关,在另一个答案中提到

2) 很少有输入/输出值严格适合特定区域。现实生活中的数据可以被认为是绝对值无界的(即使它的变化似乎产生了一个通道,它也可以在瞬间被分解),但神经网络只能在稳定的条件下运行。这就是为什么数据通常首先转换为增量(通过计算第i点和第i-1点之间的增量,或从它们的比率中提取
log
)。我建议您无论如何都要使用您的数据,尽管您声明它位于[01100]区域内。若你们不这样做,神经网络很可能会退化为一个所谓的朴素预测器,它会产生一个预测,下一个值等于上一个值

然后将数据标准化为[0,1]或[-1,+1]。第二种方法适用于时间序列预测的情况,其中+1表示上移,而-1表示下移。对网络中的神经元使用hypertanh激活功能

3) 您应该向NN提供从日期的
滑动窗口获得的输入数据。例如,如果你有一年的数据,而每一点都是一天,你应该选择窗口的大小——比如说,一个月——然后逐日滑动,从过去到未来。窗口右边界处的一天是NN的目标输出。这是一种非常简单的方法(有更复杂的方法),我之所以提到它,是因为您询问如何处理不断到达的数据。答案是-你不需要每天改变/放大你的NN。只有你