Статья посвящена новому и очень перспективному направлению в машинном обучении — так называемому "глубокому обучению" и конкретней "глубоким нейросетям". Сделан краткий обзор нейросетей 2 поколения, их архитектуры связей и основных видов, методов и правил обучения и их основных недостатков. Далее рассмотрена история появления и развития нейросетей 3 поколения, их основные виды, особенности и методы обучения. Проведены практические эксперименты по построению и обучению на реальных данных глубокой нейросети, инициируемой весами накапливающего автоэнкодера. Рассмотрены все этапы от выбора исходных данных до получения метрик. В последней части статьи приведена программная реализация глубокой нейросети в виде индикатора-эксперта на MQL4/R.
我处理的都是非常具体的事情,所以我不想讨论任何 "一般性 "的东西。
那么,更具体地说。
Caret shell 中有大约 140 个机器学习软件包--我在工作中使用了两个随机树森林软件包和一个支持向量机(SVM)软件包。正如你所看到的,对 R 中可用的机器学习工具进行任何概括都不是我所能做到的。
此外。
这是一个使用非常有限的 Rattle shell 的分支,我在本文中只使用了其中的 randomforest 软件包。
此外。
我在本文中只使用了上述软件包中的部分函数。
此外,我将仅使用这些限制对您的文章进行评论,但我可以将程序代码及其使用结果置于我的文字之下。
那么
1."所有金融序列都是所谓的时间序列,其中数值的顺序非常重要"。- 没有人否认这一点,即使是时间序列,这种顺序也不会被打破。您在对价格 P1、P2、P3......Pn 进行模型训练后,在样本外测试或实际使用时并没有改变它们的顺序。
这与指定的软件包完全不符。在其他软件包中也可以实现您的注释,但代码会复杂得多。文章中使用的代码(这是机器学习算法中最常见的方法)如下:
初始样本(数据集)被分成三部分:训练(70%)、测试(15%)、验证(15%)。分割算法如下:例如,在训练时, 随机 选取原始数据集中 70% 的行,而不是按顺序选取。从剩余的 30% 中,再次随机抽取 15%。很明显,剩下的 15%也是随机的行序列。不存在任何遵守条形序列的问题。
但这还不是全部。
对训练集的训练只使用了部分数据(约 66%)。剩下的部分数据是样本外(OOS)估计值。也就是说,计算 OOV 的条形图是不同的,但它们与进行训练的条形图混合在一起。论文给出了这个估计值,它总是能给出最好的结果。
然后,在 rattle 中,您可以在另外两个数据集上获得训练模型的估计值。通过比较三个估计值,可以得出结论。
再次强调,在时间序列上训练模型需要特别的努力。如果要使用 rattle,目标变量和相应的预测因子应允许在训练和测试中对条形图进行随机排序。
2.有一点我同意:如果输入是 100% 的垃圾预测因子,那么输出就是 100% 的垃圾。这是显而易见的,没有人会反驳。我想说的是,有些算法对数据的剔除并不重要,因为它们在 "样本缺失"(Out Of Samples)情况下,无论有多少垃圾数据,只要 不是 100%,都能得到很好的结果, 因为事实上并没有使用垃圾数据。同样重要的是,要区分对降低数据维度至关重要的算法(如主成分分析或自动编码器)和对数据维度不敏感的算法。
它们并非如此。Randomforest 有一种用于确定预测因子重要性的内置算法。如果预测因子中存在垃圾,这种算法就完全没用了。随机森林软件包本身有一个额外的功能,可以预先筛选出垃圾预测因子,但 rattle 中没有这个功能。
"在股票市场上,关于经济原因和运动方向之间关系的研究很常见,但这些都不适用于日内区间"。- 确实适用,而且确实适用于盘中时间间隔,例如非农就业数据的发布。
我不知道,我不知道有这种资源。但我很了解经济。我可以自信地断言,俄罗斯天然气工业股份公司的每小时数据并不依赖于其他公司的任何经济数据。没有关于本月业绩的问题。
3. 当然,我理解您的意思,每个人都会根据自己的能力赚钱,但您自己实施过任何机器学习算法吗?我深信,为了了解算法的工作原理,你需要自己从头开始编写。相信我,在这种情况下,你会发现书本上没有记载的东西。即使是以前看似简单的元素,其工作原理实际上也与你想象的不同。)
制作雇佣兵和驾驶雇佣兵是一回事。我更喜欢驾驶,但每个人都有自己的选择。
PS.
我已经写了一本书,对您提出的问题有更深入的回答。
PSPS
我个人的经验表明,70% 的主要时间 都花在了选择预测因子上,这是一项枯燥乏味的工作。为了销售这本书,一些人组成了一个集体--没有人能够快速有效地选择预测因子,从而避免生成过度训练的模型。而大多数读者已经超越了这本书的范畴,开始使用更好的工具来完成这项工作。
感谢您对本主题的关注。
感谢您的详细答复。
但我想请您澄清一些地方。
首先,您在上面写道,我的程序处理医疗数据的例子是 "说明性的",并提到时间序列 有严格的顺序这一事实。
"所有金融序列都是所谓的时间序列,其中数值的顺序非常重要"。
然后你又写道,在你使用的随机森林中:"不存在任何遵守条形序列的问题"。
让我问一下:如果算法最初使用随机子空间方法,并对这些时间序列进行洗牌,那么随机森林如何在时间序列上工作?
"再次强调,在时间序列上学习模型需要特别的努力"。- 那么我们又回到了起点。那么,如果在时间序列上使用这些算法需要特别的努力,为什么还要浪费时间呢?我们不是从大学研究的学术角度来讨论这个问题,在大学研究中,这样的工作是受到鼓励的,而是从实用的角度来讨论这个问题。
"我可以肯定地说,俄罗斯天然气工业股份公司的情绪与其他公司的经济数据无关"。- 这是否意味着俄罗斯天然气工业股份公司的股票在盘中不受包括俄罗斯天然气工业股份公司和其他公司在内的 RTS 指数的任何影响?
"制造一辆奔驰是一回事,驾驶它又是另一回事。我更喜欢驾驶,但每个人都有自己的选择。 "--在诡辩术中,这被称为偏离原论点:)我说的是算法及其实现,而你不知不觉地提出了一个关于汽车的论点,它与最初的论点表面上有联系,但并不完全相同。我认为算法和汽车之间存在着 "微小 "的差距。别介意,我只是喜欢注意到这种特殊性:)
总结一下:你所写的关于 Rattle 和随机森林的内容很可能与现实相关,而且你对此很有研究。
但有一个问题仍未解决:为什么一个人在两种质量相同的算法中(前者无需特殊努力和技能就能很好地处理时间序列,而后者需要特殊努力和技能),要选择后者?在这种情况下选择后者是否最优?
这句话我怎么也想不通。谢谢
但有一个问题仍悬而未决:为什么一个人在两种分类质量相当的算法中做出选择(第一种算法无需特殊努力和技能就能很好地处理时间序列,而第二种算法则需要特殊努力和技能)时,会选择后者?在这种情况下,选择后者是否最优?
不同的工具能解决不同的问题,而这又取决于可用的材料。
拨浪鼓是快速测试想法的好工具。但要用它建立一个工作模型则相当困难。
你可以更深入地研究 Rattle,并从中调出随机森林软件包中的访问日志。举例来说,如果你的目标变量是预测资产增量而不是趋势,而且你已经找到了这方面的预测因子,那么随机森林就会非常有用。如果要预测趋势,就必须手动将样本分成几块,并保留序列,这在 rattle 中很困难(尽管有可能),而在 randomforest 软件包中可以直接操作,因为它对输入样本形成的算法没有任何限制。有一套相当广泛的样本生成测试工具。这些都是单独的软件包。
等等。总的结论是,没有 "最佳 "工具。
每个软件包都有许多微妙之处,可以解决原始数据中的某些问题。总的来说,这个过程并不简单。
PS.当我写到 Gazprom 时,我指的是报价和利润类型值之间的关系。而指数是算术,同样的火鸡.....。但这是另一个问题...虽然机器学习在股票市场的应用比在外汇市场更有前景。在我看来
不同的工具能解决不同的问题,而这又取决于可用的材料。
拨浪鼓是快速测试想法的好工具。但很难用它建立一个工作模型。
你可以更深入地研究 Rattle,并从中调出随机森林软件包中的随时访问日志。举例来说,如果你的目标变量是预测资产增量而不是趋势,而且你已经找到了这方面的预测因子,那么随机森林就会非常有用。如果要预测趋势,就必须手动将样本分成几块,并保留序列,这在 rattle 中很困难(尽管有可能),而在 randomforest 软件包中可以直接操作,因为它对输入样本形成的算法没有任何限制。有一套相当广泛的样本生成测试工具。这些都是单独的软件包。
等等。总的结论是,没有 "最佳 "工具。
每个软件包都有许多微妙之处,可以解决原始数据中的某些问题。总的来说,这个过程并不简单。
PS.当我写到 Gazprom 时,我指的是报价和利润类型值之间的关系。而指数是算术,同样的火鸡.....。但这是另一个问题...虽然机器学习在股票市场的应用比在外汇市场更有前景。在我看来是这样的。
有趣的文章,谢谢。我第一次听说 R,它看起来非常有用。很久以来,我就想做一个能根据历史数据进行交易的神经网络,我将尝试从 mt5 中卸载历史数据(ohlc、点差、成交量),并将其传递给 Rattle,看看会发生什么。
Rattle 有六个模型,其中一个是 NS。我建议将 NS 的结果与随机森林、ada 和 SVM 进行比较。我想结果一定会让你大吃一惊。
有趣的文章,谢谢。我第一次听说 R,它看起来非常有用。很久以来,我就想做一个能根据历史数据进行交易的神经网络,我将尝试从 mt5 中卸载历史数据(ohlc、点差、交易量),并将其传递给 rattle,看看会发生什么。
这正是 rattle 无法实现的。您需要直接在 R 中工作。下面是这种解决方案的一个变体https://www.mql5.com/zh/articles/1103。
祝你好运