神经网络 - 页 14

 
是的训练与预测。我建立了一个新的网络,用前6-7年的数据进行训练、测试和交叉验证。然后,我把剩下的3年的数据作为没有学习的测试,其目的是为了模仿一个实时测试。训练回归线的斜率为0.99995,当我给它输入大约3年的以前未见过的数据时,斜率下降到0.9995。我不知道如何解释这一点。对于我在不到一个小时内完成的东西来说,它似乎有点太精确了。

我用一个例子向你解释。

假设你想预测一个变量,这个变量的值可以从100到250/像GBPJPY/。你想预测与训练数据相比非常小的时间步长/如H1或H4/。 对于某个步长,期望值是,比方说,174.850,NN的输出是176.350。误差非常小/约0.8%/,但在外汇方面,误差很大--150点。

预测正常或对数的回报率要容易得多。即使你犯了一个错误,输出可能仍然是有用的/如果你预测价格上涨20%,而实际上是10%,即使错误是50%,结果仍然是非常好的/。

当然,如果你随机生成第一个群体,是否有可能生成一个没有程序解决问题的群体?

这是不可能的。

即使NN给出一个非常糟糕的预测,它仍然是一个解决方案。

比说一般的台式机可以处理的更多

你可以使用台式电脑。今天的计算机比我开始的那些计算机好得多

 

mrwobbles,

你能好心地告诉我们你的NN结果的输入和输出吗?我想通过NeuroShell运行它,看看我是否能在相同的紧密度下产生R的相关水平。提前感谢。

 
Kazam:
我用一个例子来向你解释。

假设你想预测一个可以有100到250值的变量/比如GBPJPY/。你想预测与训练数据相比非常小的时间步长/如H1或H4/。 对于某个步长,期望值是,比如174.850,而NN的输出是176.350。误差非常小/约0.8%/,但在外汇方面,误差很大--150点。

预测正常或对数的回报率要容易得多。即使你犯了一个错误,输出可能仍然是有用的/如果你预测价格上涨20%,而实际上是10%,即使错误是50%,结果仍然是非常好的/。

是的,但我说的是比这小一个数量级的误差。我训练的网络的平均误差是10-20个点,接近可接受的水平。但还是有一些异常的结果,有几个超过100点,这显然是不可接受的。

这是不可能的。

即使NN给出一个非常糟糕的预测,它仍然是一个解决方案。

是的,我想你可以称它们为解决方案,但是从一个随机的群体开始,会不会导致更长的收敛时间?在这种情况下,从一个预先训练好的网络群体开始,肯定会加快网络的收敛,并希望能得到更准确的结果。

 
是的,但我说的是比这小一个数量级的误差。我训练的网络的平均误差约为10-20点,接近可接受的水平。仍然有一些异常的结果,有几个超过100点,这显然是不可接受的。

但是你仍然在看训练数据。我做了一个简单的例子--看下面的图片。误差措施很小,相关系数很高,但看看当你试图预测接下来的10步会发生什么。

是的,我想你可以称它们为解决方案,但是从一个随机的群体开始,会不会导致更长的收敛时间?在这种情况下,从预先训练好的网络群体开始,肯定会加快网络的收敛,并希望能得到更准确的结果。

随机性是关键

有了许多随机网络,你就有更大的机会在最后找到可能的最佳解决方案。请看第二张图片。如果你预先选择NN,你可能会卡在局部最佳状态,但如果你使用随机NN,你就有更大的机会找到全局最佳。

当然,有一些方法可以克服卡在局部最优的问题。

附加的文件:
 

这个想法在我脑海中闪过。我的意思是,如果预训练的NNs群体太小,或者没有足够的遗传变异,那么一些解决方案可能不会被考虑。就像你说的,总是有机会选择12个NN,它们都卡在不同的局部最小值上,那就不妙了。或者更糟糕的是,12个NN都卡在同一个局部最小值上。尽管你总是可以编码一些随机的基因突变来尝试增加基因存量,比如每10代一次。从一个完全随机的结构开始,可以确保考虑到大多数可能性。

啊,我明白了,好吧,我刚刚发现如何在网络训练后使用它,显然是模拟功能......哦,帮助文件的乐趣 ,你必须原谅我的无知,我对使用NN的工作相当陌生。如果我这么容易就解决了这个问题,我会很失望的。这应该是我在暑假期间要做的事情 ,以及工作。

编辑:我在前7年的数据上训练了网络,然后在过去几年的输入上模拟了它的表现。平均误差为40个点,但如果你看一下图表的情节,它在最初的1500个点上非常准确,然后它失去了它,开始弄错价格,但方向在大多数情况下是正确的。然后,它达到了大约10000点,它又重新振作起来(正好赶上了大崩溃)。看一下这个,告诉我你的想法。深蓝色是输出浅蓝色的目标。顺便说一下,我没有给网络提供目标,那些目标是为了分析而铺设的。

附加的文件:
gbpjpy60-4.jpg  40 kb
gbpjpy60-8.jpg  55 kb
 

我不能从图片上看出什么,因为可能有 "阴影效应",而图片太小,无法看出。

但我可以告诉你如何检查NN是否正常。在Matlab中,有一个导出和导入 向导,将测试输出导出到一个XLS或CSV文件/Excel文件/。然后把真实值放在NN输出的旁边,在下一列中放入一个公式,检查NN是否预测了正确的价格运动方向。

通过计算得到多少个 "1",你就会知道网络的准确性。

你可以写一个公式,计算每一步的利润和损失。请看下图/我用的是波兰版的Excel,所以我不知道我的公式是否正确 /。 暂时跳过点差。

附加的文件:
 

嗨,卡扎姆。

是否有可能在Metatrader上实施这个NN包?

附加的文件:
example.zip  106 kb
 

看起来它可能是好的,我通过Open Office电子表格 运行该公式,它在交易方向上的准确率为73%。还有一些输入要给网络,我认为这将提高准确性。这是电子表格,我把它保存为xls格式,你应该可以阅读它。

附加的文件:
gj60.rar  831 kb
 

在样,不在样

mrwobbles:
看起来它可能是好的,我通过Open Office电子表格运行了这个公式,它在交易方向上的准确率为73%。我还需要再给网络一些输入,我认为这将提高准确率。这是电子表格,我把它保存为xls格式,你应该可以阅读它。

好......样本内还是样本外?

这对你的账户有很大的影响,73%的样本内是账户杀手,73%的样本外是可能的......

尽量只相信样本外的结果,你的输入越少,你得到的过拟合就越少......所以,如果你增加新的输入,考虑删除一些旧的输入......或者扩大样本外的数据集,你将在此基础上形成你的信念。

作为一个经验法则。更少的输入,更少的连接,更多的样本外的点......更好的概括。

谢谢

辛巴

 

biddick

这是一个DLL,所以请看这里。

http://www.metatrader.info/node/150[/CODE]

There's an example of how to use DLL functions in Metatrader.

mrwobbles

It's either the training data or you got something wrong - the results are to good .

If one could get an accuracy of 73% with a simple back propagation network no one would give a shit about more complicated stuff

SIMBA

You're right. Choosing the proper input is a the most important thing in the process of creating a NN /there's a rule "trash goes in, trash comes out" /.

But you can always use data mining tools to analyze many different variables and choose those that affect the one you want to predict.

There's a nice book about data minig /and about genetic algorithms, Bayesian classification etc./ - "Data Mining Methods and Models." by Daniel T. Larose. It also shows how to use WEKA /a free, open source software for machine learning/.

My preferred way is to use GA - for the propose of time series prediction I usually allow them to choose from 15-40 previous steps.

PS

I've mentioned using Bayesian probability for the classification tasks but it can also be used for time series prediction

[CODE]http://www.cis.hut.fi/juha/papers/ESTSPfinal.pdf