交易中的机器学习:理论、模型、实践和算法交易 - 页 755 1...748749750751752753754755756757758759760761762...3399 新评论 Mihail Marchukajtes 2018.03.16 19:45 #7541 交易员博士。这些表可以用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将图块以某种方式划分,....不清楚..... Mihail Marchukajtes 2018.03.16 19:52 #7542 我不想重复雷舍托夫的结果,我想像他那样组织人工智能。他训练委员会的方式。显然,培训本身将是已经存在的手段,但组织,可能发挥重要的作用....。 我将尝试在我的数据上运行你的脚本,看看会有什么结果。 Dr. Trader 2018.03.16 20:02 #7543 我明白了,这几乎是一样的。在雷舍托夫的例子中,线条是一条一条的(在偶数线上训练,在奇数线上测试),但在我的例子中,线条被分成一排一组(在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,否则会出现一些错误。 Dr. Trader 2018.03.16 20:17 #7544 只是我们需要明白,交叉验证qufold内的 "训练 "和 "测试 "是嵌套检查。有一个训练表,分为几个部分,这些部分将是训练和测试,循环中的模型从一个部分学习并预测其他部分,以确保模型能够在新的数据上为它学习和预测这些参数的东西。 而且还有一个单独的测试表,不再参与这个交叉验证。它只是等待,直到模型被完全训练好后再进行检查,就像模拟真实交易的走势图中的测试。 而当训练和测试窗口按时间转移时,如果向前滚动在每次测试中都能得到正常的结果,那么最后一个训练的模型就不会在单独的测试台上进行测试,而是进入终端进行交易。 Mihail Marchukajtes 2018.03.16 21:03 #7545 这是正确的,一个对照样本,可能是一个OOS网站。受过训练,经过测试。被扔到交易中。我个人认为,...... Mihail Marchukajtes 2018.03.17 07:42 #7546 Mihail Marchukajtes: 这就对了,一个对照样本,可能是一个OOS部分。受过训练,经过测试。他们被训练、测试,然后被扔到交易中。我个人认为,......但这提出了一个问题。如何选择一个没有对照图的模型。训练后,收到交叉验证的结果,说这是能得分的模型,把它放在real!!!!!。 我通常在一天内做一个测试图案,这是3-4个信号.....,考虑到两个星期的工作,不是一个大的损失......。 Mihail Marchukajtes 2018.03.17 08:06 #7547 我运行了你的脚本并做了上述改动。它没有给出任何错误,甚至还训练了一些东西,但在训练期间没有显示任何图形。总之,我看到的结果是错误的形式。我将重新制作我的模型,然后回到这个脚本。就在训练集形成后,我们将继续有....。 Vladimir Perervenko 2018.03.18 16:47 #7548 TO: Dr. Trader. 我懒得详细分析剧本,你写得很 "破烂"。嗯,每个人都有自己的风格。但这里有几个重要的点。ELM在应用中具有许多特点。 在训练中,你给ELM提供的例子越多,它对噪音就越不敏感(根据经验至少有2000个)。在ELM神经网络的集合中,你必须有100个以上的神经网络才能得到一个合理的结果(根据经验,最好是采取一些冗余的东西,然后再筛选出来)。你用简单的投票方式进行合并,结果比平均数更差。但这是由开发商决定的。seet.seed在优化超参数时没有提供必要的可重复性和多样性。看看这篇文章的评论 吧。在那里,Elibrarius通过实验检验了这个想法。只有在神经网络的每次初始化时强迫RNG进入受控状态,你才能得到真正的优化结果。对我来说,最好是使用贝叶斯优化法。给出了一个很好的超参数选择。 祝好运 Dr. Trader 2018.03.18 22:17 #7549 谢谢你的意见,我会记住的。 我在文末添加了你上一篇文章的链接,谁想更认真地了解榆林市的情况--最好直接去读这篇文章。 弗拉基米尔-佩雷文科。 通过你使用的简单投票进行合并,产生的结果比平均数更差。尽管这是由开发商决定的。 实际上有两种集合预测的方式。 1) elemnn_kfold_predict()函数 - 考虑每个模型的回归结果的算术平均值 2) elemnn_kfold_predict_reshetovstyle() 函数 - 我为Mikhail的实验添加了这个,这种组合集合结果的方式在Reshetov神经元学中使用。只有分类。它对所有模型的结果进行比较,只有在所有模型都给出相同的预测时,才会给出一个具有特定类别的答案。如果至少有一个模型给出了与其他模型不同的预测结果,该函数就会返回 "不知道 "的预测结果。 [删除] 2018.03.18 22:20 #7550 你有结果了吗?顾问在哪里? 1...748749750751752753754755756757758759760761762...3399 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这些表可以用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 中
而代之以插入
并确保将折页数改为2 -KFOLDS=2,否则会出现一些错误。
只是我们需要明白,交叉验证qufold内的 "训练 "和 "测试 "是嵌套检查。有一个训练表,分为几个部分,这些部分将是训练和测试,循环中的模型从一个部分学习并预测其他部分,以确保模型能够在新的数据上为它学习和预测这些参数的东西。
而且还有一个单独的测试表,不再参与这个交叉验证。它只是等待,直到模型被完全训练好后再进行检查,就像模拟真实交易的走势图中的测试。
而当训练和测试窗口按时间转移时,如果向前滚动在每次测试中都能得到正常的结果,那么最后一个训练的模型就不会在单独的测试台上进行测试,而是进入终端进行交易。
这就对了,一个对照样本,可能是一个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神经元学中使用。只有分类。它对所有模型的结果进行比较,只有在所有模型都给出相同的预测时,才会给出一个具有特定类别的答案。如果至少有一个模型给出了与其他模型不同的预测结果,该函数就会返回 "不知道 "的预测结果。