В наше время, наверное, каждый трейдер слышал о нейронных сетях и знает, как это круто. В представлении большинства те, которые в них разбираются, это какие-то чуть ли не сверхчеловеки. В этой статье я постараюсь рассказать, как устроена нейросеть, что с ней можно делать и покажу практические примеры её использования.
我认为SanSanych的意思是不要费力地写自己的代码,而是使用R的现成函数
这不仅仅是代码的问题。现成的代码是关于实现一些想法。
见
gafs-通过遗传算法 选择预测器
而最终的模型是基于预测器的一个子集,该子集被附加到由重采样确定的最佳代数上
RFE--预测因子的逆向选择
实现了基于预测器重要性排序的预测器的后向选择。
对预测因子进行排序,在建模前依次删除不太重要的预测因子。
目的是找到一个可以被更准确的模型使用的预测因子子集。
safs- -模拟预测器选择稳健性(预测器退火)。
在搜索过程中, 需要对搜索 的适配性(即 SA的能量值 ) 进行衡量 。 这是一种内部的性能衡量。在搜索过程中,可用的数据是通过高层重采样选择的实例(例如上面提到的那些十分之九的部分)。一般的方法必须做一个不同的再抽样程序。另一种选择必须使用多个 样本 外的方式来确定内部的绩效评估
在这样做的时候,始终记住:"垃圾进,垃圾出"。
这不仅仅是代码的问题。现成的代码是关于实现一些想法。
见
gafs-通过遗传算法 选择预测器
而最终的模型是基于预测器的一个子集,该子集附有通过重采样确定的最佳代数
RFE--预测因子的逆向选择
实现了基于预测器重要性排序的预测器的后向选择。
对预测因子进行排序,在建模前依次删除不太重要的预测因子。
目标是找到一个可以被更准确的模型使用的预测器子集。
safs- -模拟预测器选择稳健性(预测器退火)。
在搜索过程中, 需要对搜索 的适配性(即 SA的能量值 ) 进行衡量 。 这是一种内部的性能衡量。在搜索过程中,可用的数据是通过高层重采样选择的实例(例如上面提到的那些十分之九的部分)。一般的方法必须做一个不同的再抽样程序。另一种选择必须使用多个 样本 外的方式来确定内部的绩效评估
在这样做的时候,始终记住:"垃圾进,垃圾出"。
有趣的想法。你不可能自己写这样的东西...
我做了一个相关的筛选。对于初学者来说。
我按照总的相关度对预测者进行排序,然后从相关度较低的开始,删除那些与之相关的。然后,我对其余的预测因素重复这一做法。
Pearson Corr M
1.00,0.97,0.86,0.88,0.84,0.80,
0.97,1.00,0.92,0.84,0.79,0.75,
0.86,0.92,1.00,0.73,0.67,0.63,
0.88,0.84,0.73,1.00,0.99,0.98,
0.84,0.79,0.67,0.99,1.00,1.00,
0.80,0.75,0.63,0.98,1.00,1.00,
Corr + Kfull - 列数之和
5.35,5.26,4.80,5.42,5.30,5.16,
Kfull排序
4.80(2),5.16(5),5.26(1),5.30(4),5.35(0),5.42(3),
要删除的输入。1,3,4,
要保持的输入:0,2,5。
这不仅仅是代码的问题。现成的代码是关于实现一些想法。
见
gafs-通过遗传算法 选择预测器
而最终的模型是基于预测器的一个子集,该子集被附加到通过重采样确定的最佳代数上
RFE--预测因子的逆向选择
实现了基于预测器重要性排序的预测器的后向选择。
对预测因子进行排序,在建模前依次删除不太重要的预测因子。
目标是找到一个可以被更准确的模型使用的预测因子子集。
safs- -模拟预测器选择稳健性(预测器退火)。
在搜索过程中, 需要对搜索 的适配性(即 SA的能量值 ) 进行衡量 。 这是一种内部的性能衡量。在搜索过程中,可用的数据是通过高层重采样选择的实例(例如上面提到的那些十分之九的部分)。一般的方法必须做一个不同的再抽样程序。另一种选择必须使用多个 样本 外的方式来确定内部的绩效评估
在这样做的时候,始终记住 "垃圾进,垃圾出"。
有趣的想法,当然你不可能自己写,也不可能自己想出这个主意)
问题是,这样复杂的想法是否需要用于交易目的。我将尝试暂时删除高度相关的,如果结果不可接受,我将不得不切换到R。有趣的想法,当然你不能自己写,你也不可能想出这个主意)。
问题是,这样复杂的想法是否需要用于交易目的。我现在先试着去掉高度相关的,如果结果不能接受,我就得改用R了。你被alglib困住了,因为它在研究工作中是非常无助的。R解释器,尝试任何事情都是轻而易举的。
去除高度相关的预测因子--(多线性)是必须的。
预测器和目标之间的相关性--当然很有趣。我可以为这种关联性抛出一个想法。建立一个线性回归(有更复杂的回归),并抛出那些系数不显著的预测因子。这对我来说并不奏效。也许你可以做到这一点。
但在MO中,预测因子的选择是必须的。
该文章https://www.mql5.com/ru/articles/497,建议根据输入的数量改变激活函数的斜率。
在Algli和R中,斜率是标准的还是根据输入的数量而自我优化的?还是说几乎没有人知道这些黑盒子里有什么?
该文章https://www.mql5.com/ru/articles/497,建议根据输入的数量改变激活函数的斜率。
在Algli和R中,斜率是标准的还是根据输入的数量而自我优化的?或者那些几乎没有人知道的黑盒子里有什么?
一些神经网络库为用户提供了大量的机会来定制正在创建的神经网络,甚至可以设置激活单个神经元的功能或添加/删除单个连接。然而实践表明,广泛的功能往往是根本不需要的--有一些通用的架构不能通过微调来显著改善,神经网络训练方法的情况也是如此。最后,还有一个原因是不要给用户提供太丰富的工具箱--如果一个神经网络需要微调,那么这种微调对软件包的作者来说并不困难,但往往会让终端用户感到困惑。因此,结论是--一个好的神经网络包不应该需要复杂的定制。遵循这一原则,ALGLIB软件包试图自动解决尽可能多的问题,只把真正重要的决定留给用户。
可用的架构
ALGLIB软件包允许创建没有隐藏层、有一个隐藏层和有两个隐藏层的神经网络。连接从输入层到第一个隐藏层(如果有的话),然后到第二个,然后到输出层。从输入层到输出层没有 "短 "连接。隐蔽层有一个标准的压缩激活函数,但对于神经网络的输出层来说,可以有更多种类。输出层可以是线性的(这种网络用于近似问题),可以有一个压缩的激活函数(在网络输出被限制在一定范围内的情况下)。也可以使用从上(或从下)有界激活函数的网络。在最简单的情况下(以零为界),当x趋向于+∞时,这个函数趋向于x,而当x趋向于-∞时,指数级地 趋向于零。
一个特殊的情况是具有线性输出层和输出SOFTMAX归一化的神经网络。它们用于分类问题,在这些问题中,网络的输出必须是非负的,而且它们的总和必须严格等于1,这就允许将它们作为输入向量分配到某个类别的概率(在极限情况下,训练过的网络的输出会收敛到这些概率)。这样一个网络的输出数量总是至少有两个(由基本逻辑决定的限制)。
这样一套架构,尽管具有最小化的特点,但足以解决大多数实际问题。没有多余的细节可以让人专注于问题(分类或近似),而不必过度关注不重要的细节(例如,为非线性层选择一个特定的激活函数通常对结果影响不大)。
http://alglib.sources.ru/dataanalysis/neuralnetworks.php
"隐层有一个标准的压缩激活函数" - 哪一个?它是否根据传入连接的数量调整其系数?文章中显示了输入的数量会影响结果的事实。否则,我们在一个隐藏层(甚至在一个输入层)中敲打100个神经元,下面的神经元可能在只有5个输入的情况下工作得很好。
早些时候读过,但这并没有回答这个问题(
"隐层有一个标准的压缩激活函数" - 哪一个?它是否根据传入连接的数量调整其系数?文章中显示了输入的数量会影响结果的事实。否则,我们在隐蔽层(甚至在输入层)输入100个神经元,下面的神经元可能只需要5个输入就能很好地工作...
如果有两种类型的网格,可能是sigmoid和一些其他的输出,这取决于它是线性还是范围内的。
和网格结构是一个有点麻烦的问题...我得费一番周折,但幸运的是只有两个隐藏层,所以已经比较容易了 :)我在某处读到,一般来说,隐藏层应该比输入层少2倍......或者更多,我忘了 )
顺便说一下,我检查了欧元兑美元 M1图表 上从10到60(6件)的周期的相关性,朝向出口(我没有人字形,但接近的东西)。
-0.00,0.01,0.00,0.01,0.01,-0.01
相关性从-0.01到0.01,即完全没有相关性。
然而,你的专家顾问显示了利润。我认为写一个普通的专家顾问,按照这些规则来工作要容易得多。
我在某处读到,一般来说,隐藏层应该是输入层的一半大小......或者更多,我忘了 )
规则之一 "隐藏层的最佳神经元数量(隐藏神经元的数量)=(输入的数量+输出的数量)/2,或SQRT(输入的数量*输出的数量)"
而在你使用的Reshetov网络中,2nInputs