交易中的机器学习:理论、模型、实践和算法交易 - 页 755

 
交易员博士

这些表可以用rbind()函数连接在一起。
MLP1 <- rbind(Train1, Test)

什么是Test(Train2)?而为什么要把训练表和测试表结合起来?测试应该是单独的,以便对训练好的模型进行测试。

一切都不会像你想的那样简单和快速。这在雷舍托夫的模型中,你只需输入数据,模型本身就会筛选出预测因子,确定权重、神经元数量,等等。但你不能用普通的神经元来做,你需要通过交叉验证来选择神经元的参数,例如我今天在这里写的例子,或者Vladimir Perervenko的文章。


再看看我在那里写了什么 -https://www.mql5.com/ru/forum/86386/page753#comment_6821981
只要按照描述将你的数据粘贴到该代码中,然后运行它。如果所有的预测因子都是一个一个地拿出来的,而不是消除的,那么从第一次开始,可能就会太糟糕。运行代码后,另外运行max(gaResult@fitness) 命令,这将显示由遗传学找到的最佳模型的R2得分。如果估计值接近1或稍低,那就好,如果接近0甚至是负数,那就不好。

然后在PREDICTOR_COLUMNS 中指定你认为好的列的确切数量,并再次运行代码,模型将只在这些预测器上训练。理想情况下,遗传学的最佳模型评价应该接近1,训练和测试表中的精确度应该是1.00。

测试表的时间应该严格在训练数据之后,就像这个模型已经在市场上交易一样。

如果这段代码没有什么好的结果(甚至在KFOLDS=10 的情况下)--那么它就没有好处。如果它能工作,那么就有一个很好的替代Reshetov模型的方法,我们可以进一步处理该代码,并将该模型移植到mql。

事实上,只有两个部分Train1和Test1

网络A从Train1中学习并被Test1采样

NetB从Test1中学习并在Train1上采样

当我们把这两块地加起来。网络A学习Test1,网络B学习Trine1,我们将得到整个学习图的学习结果,但这个图将是一个测试图。这就是雷舍托夫的观点。我不知道,因为你建议我检查你.....。kFold将图块以某种方式划分,....不清楚.....

 

我不想重复雷舍托夫的结果,我想像他那样组织人工智能。他训练委员会的方式。显然,培训本身将是已经存在的手段,但组织,可能发挥重要的作用....。

我将尝试在我的数据上运行你的脚本,看看会有什么结果。

 

我明白了,这几乎是一样的。在雷舍托夫的例子中,线条是一条一条的(在偶数线上训练,在奇数线上测试),但在我的例子中,线条被分成一排一组(在1-100行上训练,在101-200行上测试)。这对外汇来说是比较好的,至少可以对模型可能在其他时间区间工作的事实进行一些检查,而这是它所不知道的。

也可以进行Reshetov式分区,那么在函数elemnn_kfold erase

split2 <- function(x,n) split(x, cut(seq_along(x), n, labels = FALSE)) #функция  которая поделит строки таблицы на число кусков согласно KFOLDS
folds <- split2(1:nrow(x), KFOLDS) #номера  строк для обучения в каждом фолде

而代之以插入

folds <- list()
folds[[1]] <- c(which(y==1)[c(T,F)], which(y==0)[c(T,F)])
folds[[2]] <- c(which(y==1)[c(F,T)], which(y==0)[c(F,T)])

并确保将折页数改为2 -KFOLDS=2,否则会出现一些错误

 

只是我们需要明白,交叉验证qufold内的 "训练 "和 "测试 "是嵌套检查。有一个训练表,分为几个部分,这些部分将是训练和测试,循环中的模型从一个部分学习并预测其他部分,以确保模型能够在新的数据上为它学习和预测这些参数的东西。

而且还有一个单独的测试表,不再参与这个交叉验证。它只是等待,直到模型被完全训练好后再进行检查,就像模拟真实交易的走势图中的测试。
而当训练和测试窗口按时间转移时,如果向前滚动在每次测试中都能得到正常的结果,那么最后一个训练的模型就不会在单独的测试台上进行测试,而是进入终端进行交易。

 
这是正确的,一个对照样本,可能是一个OOS网站。受过训练,经过测试。被扔到交易中。我个人认为,......
 
Mihail Marchukajtes:
这就对了,一个对照样本,可能是一个OOS部分。受过训练,经过测试。他们被训练、测试,然后被扔到交易中。我个人认为,......

但这提出了一个问题。如何选择一个没有对照图的模型。训练后,收到交叉验证的结果,说这是能得分的模型,把它放在real!!!!!。

我通常在一天内做一个测试图案,这是3-4个信号.....,考虑到两个星期的工作,不是一个大的损失......。

 
我运行了你的脚本并做了上述改动。它没有给出任何错误,甚至还训练了一些东西,但在训练期间没有显示任何图形。总之,我看到的结果是错误的形式。我将重新制作我的模型,然后回到这个脚本。就在训练集形成后,我们将继续有....。
 

TO: Dr. Trader.

我懒得详细分析剧本,你写得很 "破烂"。嗯,每个人都有自己的风格。但这里有几个重要的点。ELM在应用中具有许多特点。

  • 在训练中,你给ELM提供的例子越多,它对噪音就越不敏感(根据经验至少有2000个)。
  • 在ELM神经网络的集合中,你必须有100个以上的神经网络才能得到一个合理的结果(根据经验,最好是采取一些冗余的东西,然后再筛选出来)。
  • 你用简单的投票方式进行合并,结果比平均数更差。但这是由开发商决定的。
  • seet.seed在优化超参数时没有提供必要的可重复性和多样性。看看这篇文章的评论 吧。在那里,Elibrarius通过实验检验了这个想法。只有在神经网络的每次初始化时强迫RNG进入受控状态,你才能得到真正的优化结果。对我来说,最好是使用贝叶斯优化法。给出了一个很好的超参数选择。
祝好运

 

谢谢你的意见,我会记住的。

我在文末添加了你上一篇文章的链接,谁想更认真地了解榆林市的情况--最好直接去读这篇文章。


弗拉基米尔-佩雷文科

通过你使用的简单投票进行合并,产生的结果比平均数更差。尽管这是由开发商决定的。

实际上有两种集合预测的方式。

1) elemnn_kfold_predict()函数 - 考虑每个模型的回归结果的算术平均值

2) elemnn_kfold_predict_reshetovstyle() 函数 - 我为Mikhail的实验添加了这个,这种组合集合结果的方式在Reshetov神经元学中使用。只有分类。它对所有模型的结果进行比较,只有在所有模型都给出相同的预测时,才会给出一个具有特定类别的答案。如果至少有一个模型给出了与其他模型不同的预测结果,该函数就会返回 "不知道 "的预测结果。

[删除]  
你有结果了吗?顾问在哪里?