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

 

1)我是否正确理解了将数据集分为训练、验证和测试的含义:?

a) 我们在训练器上教它
b) 检查验证中的误差,如果它比训练器中的大得多,就回到1,直到误差相同(相同的程度是多少--总误差的5%?例如,教程的15%和验证的20%)
c) 在一个测试中检查,如果误差与前两组相同(多少相同?),那么这个模型是稳定的,可以运行,如果不是,我们可以忘记它。并寻找其他预测因素,改变过滤方式,等等。

2)顺便问一下,训练/验证/测试的错误率要达到多少?15/20/20%或者5/10/15%?或者其他?

3)我不太明白为什么建议混合训练实例?无论如何,我们将处理每个例子。

 
elibrarius

顺便问一下,在培训/验证/测试中要争取达到什么程度的误差?15/20/20%或也许5/10/15%或其他?

以前,是的,类似这样的事情。

至于错误,这取决于具体的情况。如果,比如说,MO或NS决定进入交易,那么50%的误差可能就足够了。例如,在一次成功的交易中,你平均获得2-3便士的利润,而在一次不成功的交易中,则损失1便士。在这种情况下,0.5并不是一个坏的概率。

 
尤里-阿索连科

前面那个,是的,不知怎么的。

至于错误,这取决于具体的情况。如果,比如说,MO或NS决定进入交易,那么50%的误差可能就足够了。例如,在一次成功的交易中,你平均获得2-3便士的利润,而在一次不成功的交易中,则损失1便士。在这种情况下,0.5并不是一个坏的概率。

0.5似乎太小了...在实践中,你应该努力达到什么样的价值(不是其他一些NS问题,而是为了交易)?
因为我想学习到10%,但如果这个数字不切实际,我就会浪费我的时间和我的CPU。比方说--你取得的最好的错误是什么,在什么水平上可以停止,不寻求改进?
 
elibrarius
0.5可能没有那么多...那么我应该为哪些价值而努力呢? 哪些是我在实践中可以真正达到的(不是其他一些NS任务,而是为了交易)?
因为我想学习到10%,但如果这个数字不切实际,我就会浪费我的时间和我的CPU。比方说--你取得的最好的错误是什么,在什么水平上可以停止,不寻求改进?

0.5是不够的?你一定是在跟我开玩笑)。我已经举了这个例子:扑克玩家有1/9-1/6的获胜概率,而好的玩家总是处于黑色。

而我所有的系统都在~0.5的概率下工作,而且总是在加号中。据我所知,许多TS的工作概率接近0.5--特别是在自动交易会议上提到了这一点。

"否则我想训练到10%,但如果这是一个不切实际的数字"--真实还是不切实际取决于具体任务。例如,我为MACs穿越训练了NS--所以它几乎100%可靠))。

 
尤里-阿索连科

0.5是不够的?你一定是在跟我开玩笑)。我已经举了这个例子:扑克玩家有1/9-1/6的获胜概率,而好的玩家总是处于黑色。

而我所有的系统都在~0.5的概率下工作,而且总是在加号中。据我所知,许多TS的工作概率接近0.5--特别是在自动交易会议上提到了这一点。

"否则我想训练到10%,但如果这是一个不切实际的数字"--真实还是不切实际取决于具体任务。例如,我曾教过NS穿越MAs--所以它几乎100%可靠))。

这是真的,你可以做到没有任何预测(50%),你只需要获利多于止损。 事实上,你不能预测任何事情,没有人知道外汇价格会去哪里,只有内部人士,木偶人知道。

 
瓦西里-佩雷佩尔金

事实上,不可能预测任何事情,没有人知道外汇市场的价格将走向何方,只有内部人士、傀儡者知道。

实际上这是可能的。我认为用0.5的预测和外卖高于止损是不可能的,这与50/50和上帝保佑是不一样的)。- 即,没有预测。我们正在翻转一个完全不同的硬币)。
 
elibrarius

1)我是否正确理解了将数据集分为训练、验证和测试的含义:?

a) 在训练器上学习
b) 检查验证阶段的误差,如果它比训练阶段的误差大得多,就转到步骤1,直到误差相同(相同的程度是多少--总误差的5%?例如,教程的15%和验证的20%)
c) 在一个测试中检查,如果误差与前两组相同(多少相同?),那么这个模型是稳定的,可以运行,如果不是,我们可以忘记它。并寻找其他预测因素,改变过滤方式,等等。

2)顺便问一下,训练/验证/测试的错误率要达到多少?15/20/20%或者5/10/15%?或者其他?

3)我不太明白为什么建议混合训练实例?无论如何,我们都要对每个例子进行处理。


1)不是全部,这是根本。

我们采取一个大文件。把它分成两个不相等的部分。

较大的部分是按你描述的那样划分的。我们得到的误差应该是大致相等的。

之后,我们在文件的第二部分检查模型。这一部分的错误又不应该有很大差别。

这是不存在围猎(过度拟合)的最重要证明。


误差的大小?这是一种常数,它来自于可以通过拟合模型的类型而减少的预测因子的集合。


比如说。

如果你的四个误差都在35%左右,那么通过选择一个模型,上帝保佑你把误差降低到30%。


PS。

低于10%的误差是过度训练的明显迹象。如果你有这样的错误,你应该反复检查一百次。

 

我在ALGLIB中发现了一个带有验证部分的早期停止。

使用早期停止的神经网络训练(基本算法--L-BFGS与正则化)。
...
如果验证集的错误增加了很长时间,该算法就会停止。
足够的或步长足够小的(有的任务中
验证集可能永远减少)。在任何情况下,解决方案
返回的数据对应于验证集误差的最小值。

从代码来看,它没有比较训练和验证部分的错误,而是在验证部分寻找最小的错误。如果它在30次迭代后没有找到更好的,或者所有的迭代都过去了,就会停止。

但我不确定这种方法是否比平时更好/更准确...除非训练周期的数量增加数倍...

这就是我们所得到的。

训练的平均误差(80%)=0.535 nLearns=200 NGrad=142782 NHess=0 NCholesky=0 codResp=6
验证的平均误差(20%)部分=0.298 nLearns=200 NGrad=142782 NHess=0 NCholesky=0 codResp=6
全图(训练+验证图)。
平均学习误差=0.497 nLearns=200 NGrad=142782 NHess=0 NCholesky=0 codResp=6
测试的平均误差(20%)部分=0.132 nLearns=200 NGrad=142782 NHess=0 NCholesky=0 codResp=6

感觉有一个适合验证的情节。测试的那个一般来说是成功的,但它不是在训练中,也没有被比较,可能只是一个巧合。
这个f算合奏,而且有2/3的比例,所有的东西都混在两个剧情里,我也会试着做的......
洗牌了。

训练的平均误差(60%)面积=0.477 nLearns=10 NGrad=10814 NHess=0 NCholesky=0 codResp=6
验证的平均误差(40%)部分=0.472 nLearns=10 NGrad=10814 NHess=0 NCholesky=0 codResp=6
全图(训练+验证图)。
平均学习误差=0.475 nLearns=10 NGrad=10814 NHess=0 NCholesky=0 codResp=6
测试的平均误差(20%)部分=0.279 nLearns=10 NGrad=10814 NHess=0 NCholesky=0 codResp=6

由于混合的原因,误差在训练和验证部分被平均化了。

我觉得有些不对劲,因为在真正的交易中棒子会按照自己的顺序走,而不是与一小时前和一天前的棒子混在一起。
而如果市场的 "性质 "发生变化,就意味着我们必须重新学习或寻找新的NS模式。

 
尤里-阿索连科
这实际上是可能的。0.5的预测和获利超过止损,与50/50是不一样的,上帝保佑))- 即,没有预测。我们正在翻转一个完全不同的硬币))。
如果我们随机开仓并采取2倍以上的止损,例如,就这样,我们会有一个统计利润,例如,100次交易有10点利润,100次有5点损失,结果我们有500点利润,我们不需要任何预测。
 
桑桑尼茨-弗门科


1)不是全部,而且是根本。

我们采取一个大文件。把它分成两个不相等的部分。

按照你描述的方式划分更大的部分。我们得到的误差,应该是差不多的。

之后,模型在文件的第二部分被检查。这一部分的错误又不应该有很大差别。

这是没有羽化(过度拟合)的最重要证明。

4个地块变成了?训练/验证/测试1/测试2 ?

你需要做多少个周期的培训/验证?没有在任何地方看到关于它的信息...总共1个周期?- 之后,我们要么批准要么改变预测器组或网络方案中的某些内容?更确切地说,对于N个周期的训练,我们将看到一个最好的。