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

 
Vizard_
你,为人们制作一个正常版本的程序(或升级版)))

1.让它读取这种类型的标准文件--头(带倒逗号和不带倒逗号)、数据、定界符,让它读取zpt、diff.zpt、制表。例子--

"Date";"V1";"A77";"V23A";"Целевая"
01.01.2000;4.999995E-03;1.499891E-03;-2.000213E-03;-5.000234E-03;1

2.让模型只使用10个输入,但要让它可以加载大量的输入,然后
在一个单独的标签中,或设置上限(你选择输入),或其他。

3.没有归一化!(或禁用),因为如果数据最初是以0为中心的,在转换之后
x-x.min/....(或任何你有的东西) - 飞走)))

4.抛开随机性(或可切换),让它只是把数据分成两部分,按顺序计数,并输出1的成功预测率(0的不成功)。

5.使投入的重要性 - 很好!

6.让除此之外的公式输出,输出完整的!,即现在的

double x2 = 2.0 * (v5 + 1.0) / 2.0 - 1.0。
双重决定 = -0.2632437547312642 -0.2634178652535958 * x2
+ 0.05267978803936412

我们必须 -

名称目标= -0.2632437547312642 -0.2634178652535958 *插入建设 x2= (2.0 * (v5 + 1.0) / 2.0 - 1.0)
+ 0.05267978803936412

我们得到 -

名称目标 = -0.2632437547312642 -0.2634178652535958 * (2.0 * (v5 + 1.0) / 2.0 - 1.0)
+ 0.05267978803936412

你会得到一个有点用处的设备,用于快速测试。然后你仍然可以插入等,简单(不贪婪)。
算法,有一个选择...否则,这个工具就毫无用处。当文件被编辑时,这个和那个...使用其他东西更容易...
第7版在哪里?
不...我喜欢它,它相当坚固。所以100分,尤拉。
 
桑桑尼茨-弗门科

一般般--只是没有足够的大脑和时间。

你必须从目标变量开始,然后你必须用预测器来匹配它,然后用数学来反复检查它们,可以这么说。总之,这个过程很繁琐,我不知道如何把它正式化。

嘴上说说就走了。我知道是这样。我整夜都在思考。请看,我们根据IDEAL输出的谓词来建立模型。我们在极少数情况下会得到50-60%的归纳。选择IDEAL输出的输入是不容易的,如果有可能的话。如果输出是不真实的,那又如何?如果我们允许错误进入,会导致100%的泛化呢?通过这样做,我们将知道输入的能力,如果这个需要的输出能赚到钱(即使有错误),那么它也有权利在未来继续生存。起初我以为我们需要双重优化,即模型本身和输出变量的优化。然而,后来我想到了。如果模型被训练到60%的泛化,那么通过替换指标中的公式并获得训练和测试样本上的信号,我们得到的结果可以使系统达到100%。 这意味着如果我们收到训练和测试样本上的信号并根据这些信号改变输出变量,我们会得到100%的学习效果。因此,结论是。在获得几个具有50-60%泛化率的模型后,我们选择在训练和测试区域获得(赚取)的模型。这表明,一般来说,基本的信号它已经赚了(那些带来足够利润的信号),而它失去的信号也不是太无利可图(分享你的微笑,它将不止一次地回到你身边),最重要的是,我们在期末赚了。原来是这样的.......
 
Vizard_
4.扔掉随机性(或禁用),让它只是把数据分成两部分,按顺序计数,并输出成功预测的百分比为1(不需要0)。

如果试图将jPrediction用于外汇,这可能是需要添加的主要内容。有很多模型可以将数据随机分成两部分,然后在第一部分上进行训练,并在第二部分上也显示出良好的结果。但这些模型中的大多数在新数据上将是无效的。外汇交易中没有恒定的依赖性,在随机测试样本上的好结果并不能保证在新数据上的好结果。确保一个模型适用于外汇的唯一方法是进行滚动测试。

该模型应该对标为红色的数据显示出良好的预测能力。现在,在jPrediction中,这样的测试必须通过为每个测试案例重新输入数据来手动完成,这对严肃的工作是不利的。
我也同意,只显示测试数据的分数比显示训练+测试的总分要好。
jPrediction现在产生的所有成绩对于外汇来说都是不够的,只能是误导。

顺便说一下,在R的caret包中是如何进行向前滚动的。

http://topepo.github.io/caret/splitting.html(时间序列的数据分割部分)

library(caret)
caretObj <- train(x = trainData[,1:(ncol(trainData)-1)],
                  y = trainData[,ncol(trainData)],
                  trControl = trainControl(method = "timeslice", initialWindow=1000, horizon=300, fixedWindow=TRUE),
                  verbose = TRUE)

该模型将在前1000个样本上进行训练,然后在1001-1300个样本上进行测试。然后转移到300,训练301-1300,测试1301-1600,等等,直到你的训练例子用完。

 
Vizard_
Yur,为人们制作一个正常版本的程序(或升级版)))))。

1.让它读取这种类型的标准文件--头(带或不带反转逗号)、数据、定界符让它催促zpt、point.zpt、制表。例子--


2.可能只使用10个输入的模型,但要让它可以加载很多输入,然后
在一个单独的标签中,你可以把标记(你选择输入)或其他东西。

3.没有归一化!(或禁用),因为如果数据最初是以0为中心的,在转换之后
x-x.min/....(或任何你有的东西) - 飞走)))

4.抛开随机性(或可切换),让它只是把数据分成两部分,按顺序计数,并输出1的成功预测率(0的不成功)。

5.使投入的重要性 - 很好!

6.让除了输出的公式外,让它输出完整的!,也就是现在的


7.第7版在哪里?
  1. 重点是,Excel中的逗号是用来分隔数字的整数部分和小数部分的。如果我添加更多的分隔符,那些在不同的应用程序中编辑选择的人将无法在jPrediction中编辑它们而不需要额外的跳舞。也就是说,目前所有东西都或多或少地与电子表格兼容。目前,解析器只针对CSV文件实现,它是为电子表格量身定做的。但jPrediction是以OOP方式建立的,可以为其他格式扩展接口。
  2. 第二点是,jPrediction没有也永远不会有额外的设置。用户在jPrediction中的工作是取一个准备好的样本,按F8键,在合理的时间内得到一个模型或 "垃圾进,垃圾出 "的信息。如果你喜欢大惊小怪的学习算法,调整程序,设计网络架构,但不喜欢为任务选择好的数据方面的研究活动,就让他们使用其他的ML包。现在有很多这样的包裹,你可能会用你的余生在其中挖掘。 机器学习的要点是,模型的通用性只取决于样本中数据的质量,而不取决于算法及其设置。 因此,你应该在样本中寻找问题,而不是试图在jPrediction中调整什么。
  3. 见第2项。2.
  4. 见第1段。2
  5. -
  6. 那里的输出不是一个公式,而是用于将模型移植到其他应用程序的代码。目前,移植到Java应用程序的代码已经实现。以后计划将模型代码移植到MQL。这个代码应该尽可能的简洁,而不是长篇大论。因此,所有不必要的东西都被删除了,经常重复的东西都被分开放置。
  7. 该项目网站在jprediction.com,还有一个 "下载 "菜单项可以下载最新版本。

如果有人不喜欢jPrediction中的某些东西,该项目在GNU GPL许可下是开放的,从它那里制作分叉,改变和修改某些东西,不仅不被禁止,而且在某种程度上甚至是欢迎的。

 
Dr.Trader:

如果试图将jPrediction用于外汇,这可能是需要添加的主要内容。有很多模型可以将数据随机分成两部分,然后在第一部分上进行训练,并在第二部分上也显示出良好的结果。但这些模型中的大多数在新数据上将是无效的。外汇交易中没有恒定的依赖性,在随机测试样本上的好结果并不能保证在新数据上的好结果。确保一个模型适用于外汇的唯一方法是进行滚动测试。

该模型应该对标为红色的数据显示出良好的预测能力。现在,在jPrediction中,这样的测试必须通过为每个测试案例重新输入数据来手动完成,这对严肃的工作是不利的。
我也同意,只显示测试数据的分数比显示训练+测试的总分要好。
jPrediction现在给出的所有成绩对于外汇来说都是不够的,只能是误导。

顺便说一下,在R的caret包中是如何进行向前滚动的。

http://topepo.github.io/caret/splitting.html(时间序列的数据分割部分)

该模型将在前1000个样本上进行训练,然后在1001-1300个样本上进行测试。然后转移到300,训练到301-1300,测试到1301-1600,等等,直到训练例子用完。

超级信息。谢谢你!
 
Dr.Trader:

jPrediction现在给出的所有估计对外汇来说是不够的,只能是误导。

它们是未经证实的指控,也就是通常所说的胡扯。为了证明Walk Forward的功效,请提供在jPrediction中得出的模型和在Walk Forward之后得出的模型的比较结果,其方式是可以交叉检查它们的 "合法性"。如果这样的结果证实了你的话,那么用Walk Forward取代目前在jPrediction中实现的测试算法就有意义了。

我曾多次遇到,看似 "显而易见 "的想法,经过实施和经验的检验,却变成了 "空洞"。只有非常小的一部分想法是有效的,而且往往是在用 "文件 "进行额外的编辑后才有效。这是因为缺少思想的细节。而魔鬼就在这些细节中。

Linus Torvald(Linux内核的创造者)总是不厌其烦地重复:"理论迟早会遇到实践。而实践永远是真理的标准。永远!"。

步行前进 "的另一个问题是,我们在每个阶段 都会得到很多模型。在这些模型中,哪一个应该被保留为工作模型,应该按照什么标准来选择?

 
尤里-雷舍托夫

这些都是未经证实的不实之词,也就是通常所说的废话。为了证明 "向前走 "的功效,请提供jPrediction模型和 "向前走 "后的模型的比较研究,以便对它们的 "可靠性 "进行交叉检查。如果这样的结果证实了你的话,那么用Walk Forward取代目前在jPrediction中实现的测试算法就有意义了。

我曾多次遇到这样的情况:看似 "显而易见 "的想法,一旦实施并经过经验的检验,就会变成 "空洞"。只有极小部分的想法是有效的,而且往往是在进一步的 "文件 "修改之后。这是因为缺少思想的细节。而魔鬼就在这些细节中。

Linus Torvald(Linux内核的创造者)总是不厌其烦地重复:"理论迟早会遇到实践。而实践总是被证明是真理的标准。永远!"。

步行前进 "的另一个问题是,我们在每个阶段都会得到很多模型。在这些模型中,哪一个应该被保留为工作模型,应该以什么标准来选择?

没有必要争吵。我们正在研究一个非常复杂的研究课题。有很多的假设。而这些假设会导致过度学习和超额取样。

两个简单的规则:欺骗市场,不要欺骗自己。

向前走当然是一个好方法。但那里的主要参数是学习的深度和测试的长度。同时(!!!)如果这些参数的调整方式使前进位置上的结果变得更好,我们就会过度训练向前走!"。也就是说,在一个大块上,我们反复做步行前进的优化。在另一个不重叠的大块上,我们在 "训练 "中尝试最好的 "向前走 "参数,并再跑一次全狼式前进,但只做一次。如果结果是好的,那么该模型就会拾起依赖关系。如果结果不好,那么我们只是在一个不那么好的模型上重新训练了Walk Forward。

对延迟的样本进行一次性测试也存在同样的问题。我现在正在努力:释放我过度训练的成果。交叉验证的结果应与最终测试的延迟样本相关。说到这里,通过交叉验证选择最佳模型将得到近似的最佳样本外结果。否则--如果没有相关性或负相关性--我们有一个不充分的外汇模型,需要改变。

 
尤里-雷舍托夫

这些都是未经证实的指控,也就是通常所说的狗屁。为了证明Walk Forward的功效,请将jPrediction模型和Walk Forward后的模型的比较研究结果以可交叉检查的形式呈现出来,以证明其 "合理性"。如果这样的结果证实了你的话,那么用Walk Forward取代目前在jPrediction中实现的测试算法就有意义了。

我曾多次遇到这样的情况:看似 "显而易见 "的想法,一旦实施并经过经验的检验,就会变成 "空洞"。只有极小部分的想法是有效的,而且往往是在进一步的 "文件 "修改之后。这是因为缺少思想的细节。而魔鬼就在这些细节中。

Linus Torvald(Linux内核的创建者)总是不厌其烦地重复:"理论迟早会遇到实践。而实践总是被证明是真理的标准。永远!"。

步行前进 "的另一个问题是,我们在每个阶段都会得到很多模型。在这些模型中,哪一个应该被保留为工作模型,应该以什么标准来选择?

Reshetov,我很尊重你,应该由自行车的作者来证明他们在阳光下的地位,包括他们的术语,如 "可概括性"。Dr.Trader 立场的便利之处恰恰在于,所有必要的理论证明和数百万用户对他所表达的观点的实际验证都已经在他之前完成,而且往往是在许多年前。另一方面,他只是给出了具体的使用例子。而正在讨论的帖子的正确性在直觉上和理论上都是显而易见的。
 
阿列克谢-伯纳科夫

这不值得争论。

我同意。但这需要尽量减少线程中未经证实的指责数量。最好的选择是给出比较研究的结果,并有可能进行双重检查。

阿列克谢-伯纳科夫

我们正在进行一项非常复杂的研究。

有些人在工作,有些人在没有证据的情况下扭捏作态(我们不要指责)。

阿列克谢-伯纳 科夫。

这不值得争论。

我同意。

阿列克谢-伯纳科夫

这里有很多的假设。而这些假设导致了过度教育和样本外的暴跌。

你不能把假设放在你的面包上,然后把它们放在你的口袋里。因此,一切都应该根据经验来检查,而不是做未经证实的假设,以免踩到过度训练和样本外暴跌的耙子。


阿列克谢-伯纳科夫

向前走当然是一个好方法。但那里的主要参数是学习深度和测试长度。同时(!!!)如果我们以这样的方式解决这些参数,使前进轨道上的结果变得更好,我们将过度训练 "向前走"!"向前走 "是一个很好的例子。也就是说,在一个大块上,我们反复做步行前进的优化。在另一个不重叠的块上,我们在 "训练 "上尝试最佳的 "前进 "参数,并再运行一次。如果结果是好的,那么模型就会拾起依赖关系。如果结果不好,那么我们只是在一个不那么好的模型上重新训练了Walk Forward。

对延迟的样本进行一次性测试也存在同样的问题。我现在正在努力:释放我过度训练的成果。交叉验证的结果应与最终测试的延迟样本相关。说到这里,通过交叉验证选择最佳模型将得到近似的最佳样本外结果。否则--如果没有相关性或负相关--我们有一个不充分的外汇模型,需要改变。

底线是,所有的方法都有优点和缺点。假设夸大了优点,无视了缺点。

更大的一点是,没有任何方法允许你根据最佳质量标准来选择模型,所有的方法都是根据拒绝原则来选择的--只过滤掉那些明知不合适的模型。ML中没有任何方法可以计算出拒绝后剩下的东西的潜在适合性。

特别是在非稳态环境中。从普遍性的角度看,有可能选择看似最合适的模型,但明天中央银行的某个负责人在会议上放了个屁,所有的模型都会付诸东流。

 
尤里-雷舍托夫


问题是,所有的方法都有优点和缺点。假设夸大了优点,无视了缺点。

更重要的一点是,没有一种方法是按照最佳质量标准来选择模型的,所有的方法都是按照拒绝原则来选择的--只过滤掉已知不适合的东西。ML中没有任何方法可以计算出拒绝后剩下的潜在价值。

在非稳态环境中更是如此。从普适性的角度来看,似乎可以选择最合适的模型,但明天某个中央银行的老板会放个屁,所有的模型都会付诸东流。

因此,它是。只有在实验中。你可以通过应用这个模型来了解一个模型的选择(在训练+测试中)是否更好。你可以对不同的模型这样做。如果在样本中选择一个好的模型,在样本外也能得到一个好的结果--意味着该模型适合于所选择的问题。