- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用简单的时间序列预测。给定数量的输入(1 分钟滴答) Net 应该尝试预测下一个。我用不同的设置训练了 3 个网络来说明我的问题:
在右侧,您可以看到 3 个训练器 MLP - 随机命名和颜色编码,以及一些训练数据。在左侧 - 由这些网络做出的预测图和白色的实际验证数据。该图是通过遍历验证数据的每个刻度(白色),将 30|4|60 (Nancy|Kathy|Wayne) 之前的刻度输入网络并绘制它将在当前刻度位置预测的内容绘制的。
多层感知器的设置(Nancy|Kathy|Wayne 设置):
几何:2x30|4|60 个输入节点 -> 30|4|60 个隐藏层节点 -> 2 个输出
时代数:10|5|10
学习率:0.01
动量:0.5|0.9|0.5
非线性:纠正
损失:平方误差
似乎随着更多的训练应用 - 预测会收敛到某种平均线,这根本不是我所期望的。我期待预测与验证数据有点接近,但有一定的误差。
我是否选择了错误的模型、误解了机器学习的一些核心概念或在烤宽面条/theano 中做错了什么?
最相关(在我看来)代码部分的快速链接:
最佳答案
首先,我要赞扬您使用非线性整流。根据玻尔兹曼机的发明者 Geoffrey Hinton 所相信的,非线性整流器是人类大脑事件的最佳支撑。
但是对于您选择的其他部分,我建议您更改 NN 架构。对于股票市场的预测,您应该使用一些循环神经网络:最简单的候选者可能是 Elman 或 Jordan 网络。或者你可以尝试更复杂的,比如 LSTM 网络。
另一部分建议,我建议修改您在 NN 中提供的内容。一般来说,我建议您应用缩放和标准化。例如,不要输入 NN 原始价格。以下列方式之一修改它(这些建议不是一成不变的):
1. 输入价格变化的 NN 百分比。
2. 如果您输入 NN 30 个值,并且想要预测两个值,则从 30 + 2 个值中减去所有 32 个值的最小值,并尝试预测 2 个值,但基于 30。然后只需添加到结果的最小值32 个值。
不要在 NN 中只提供日期。它对 NN 没有任何关于进行预测的说明。而是输入 NN 日期和时间作为分类值。分类意味着您在多个条目中转换日期时间。例如,您可以考虑以下一些内容,而不是给 NN 2016/09/10。
关于python - 简单的 MLP 时间序列训练产生意想不到的平均线结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39896985/
我是一名优秀的程序员,十分优秀!