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

 
Rorschach:

对于一个森林,有一个选项可以查看重要性和集群。在catbust中,它可能是plot_tree。

我将准备好数据并公布。

做了一个6列的测试版本,花了11GB。Notepad++无法打开它,说文件太大。用于SQLite的BD浏览器已经挂起了大约20分钟。

展示一张树丛的图片,我还不知道你的意思。

为什么要打开它?:)我只是做了一个结构相似的迷你拷贝,用于调试。

 
elibrarius:

我想知道他们是如何训练树而不把所有的数据带入内存的。如果表是6千兆字节,那么就应该使用大约6千兆字节的内存。树需要将每一列作为一个整体来排序。如果我们不把所有东西放进内存,而是每次都从磁盘上读取数据,那就太慢了。
唯一的变体是将内存中的数据保持为浮点类型而不是双倍,但这将降低精确度。对我们来说,5位数的精度可能不算太差,但catbust是一个通用软件,我认为物理和数学问题应该用双精度来解决。

我没有研究过这段代码,但如果你从逻辑上考虑,CatBoost可能会转换样本数据表并准确地存储转换后的变体,这有利于快速压缩。

变换发生在每个预测器的量化网格上(有6种算法),例如,从一个变量的1000个不同的值中留下32个变体(落入量化网格的范围),这样的数据矢量很容易被压缩,除了数字已经只有整数(根据网格大小的限制判断--数据类型 ushort--数字上的2个字节),量化表只是位于内存中,在代码中创建模型时已经使用。现在我们已经缩小了规模,而且还可以通过不选择所有的预测器进行评估,而是选择它们的一部分来缩小规模,建议在大样本时进行,这样,随机器的算法允许在其他树中使用那些预测器,它们没有立即进入 "袋子",由于这样,训练也会更快,但模型中会有更多树。当然还有其他技巧,但主要的是量化。

量化应该单独考虑,理想情况下,每个预测器应该与自己的网格相匹配,数据应该与网格一起提交训练,它允许算法这样做。

因此,样本可以被自我量化,而且会被很好地压缩。

 
Aleksey Vyazmikin:

我没有研究过这段代码,但如果你从逻辑上考虑,CatBoost可能会对样本数据表进行转换,并准确地存储转换后的变体,这对快速压缩是有利的。

变换发生在每个预测器的量化网格上(有6种算法),例如,从一个变量的1000个不同的值中留下32个变体(落入量化网格的范围),这样的数据矢量很容易被压缩,除了数字已经只有整数(根据网格大小的限制判断--数据类型 ushort--数字上的2个字节),量化表只是位于内存中,在代码中创建模型时已经使用。现在我们已经缩小了规模,而且还可以通过不选择所有的预测器进行评估,而是选择它们的一部分来缩小规模,建议在大样本时进行,这样,随机器的算法允许在其他树中使用那些预测器,它们没有立即进入 "袋子",由于这样,训练也会更快,但模型中会有更多树。当然还有其他技巧,但主要的是量化。

量化应该单独考虑,理想情况下,每个预测器应该与自己的网格相匹配,数据应该与网格一起提交训练,它允许算法这样做。

这就是为什么样本可以被自己量化,而且会被很好地压缩。

对了,我记得,我想有一个默认的1024个分割变体的网格。如果你把所有的数据都换成拆分的数字,你可以用ushort格式存储,也就是2个字节而不是8个字节,压缩4倍。这可能就是为什么你用2GB而不是6GB。
现在我明白这个网格是用来做什么的了,原来是用来压缩的。而且排序也比较快。
Документация по MQL5: Основы языка / Типы данных / Целые типы / Типы char, short, int и long
Документация по MQL5: Основы языка / Типы данных / Целые типы / Типы char, short, int и long
  • www.mql5.com
Целый тип char занимает в памяти 1 байт (8 бит) и позволяет выразить в двоичной системе счисления 2^8 значений=256. Тип char может содержать как положительные, так и отрицательные значения. Диапазон изменения значений составляет от -128 до 127. uchar # Целый тип uchar также занимает в памяти 1 байт, как и тип char, но в отличие от него, uchar...
 
elibrarius:
对了,我记得,它似乎有一个1024个分割变体的默认网格。如果你把所有的数据都换成拆分的数字,你可以用ushort格式存储,也就是2个字节而不是8个字节,压缩4倍。这可能就是为什么你有2GB而不是6GB并使用它。

默认是254,但我不记得我当时设置了多少。大概只消耗了不到2GB的内存--我记得当时非常惊讶,居然这么少。

总之,这种方法可以大幅压缩数据,甚至是采样本身。你不能用神经网络做到这一点

elibrarius:
现在我明白这个网格是用来做什么的了,原来是用来压缩。而且整理起来也更快。
网格也允许较少的拟合,因为使用的是一个数值范围。但这并不总是好事--要抓住理论上的水平,我想你必须自己切割网格。
 
Aleksey Vyazmikin:

默认是254,但我不记得我当时设置了多少。大概只消耗了不到2GB的内存--我记得当时非常惊讶于它是如此之小。

那么你可以使用Uchar ,它是1个字节。

Aleksey Vyazmikin:
网格允许装得更少,因为使用的是数值范围。但这并不总是好的,对于捕捉理论上的水平,你必须自己切割网格。


ushort中的最大值是6.5万--如果你设置了这样的网格,你可以不用手动操作。

 
Maxim Dmitrievsky:

https://www.mql5.com/ru/articles/8385

这不是一个事实,它是一个好的实现 )

我将放弃俄罗斯的那份。

我读过那本书))它充满了计算错误,而且网络给出的答案相当随机。

 
elibrarius:

那么你可以使用Uchar ,它是1个字节。


在ushort中,最大值是65k--如果你设置了这样的网格,你就不必担心手动操作了。

它们的最大尺寸是65535,但我不能影响代码中的变量

至于最大尺寸--不,它不能保证结果,因为它可以根据数据条调整,跳过那些接近它的数据。

一般来说,有一个学习算法是很好的,它总是检查关闭分割的合理性(A>10 && A<=15),但通常它是随机发生的 - 没有这样的强制性条件,尽管它有时被复制。

 
Alexander Alexeyevich:

我读过这个)))在计算中存在很多错误,网络给出的答案相当随机。

你想自己写网络吗?

Vod在这里是一个最小的单词和最大的代码的python,但也是英语。

https://datascience-enthusiast.com/DL/Building_a_Recurrent_Neural_Network-Step_by_Step_v1.html

Building a Recurrent Neural Network - Step by Step - v1
  • datascience-enthusiast.com
Building your Recurrent Neural Network - Step by Step
 
Maxim Dmitrievsky:

你想自己写网络吗?

在Python中,有一个最小的单词和最大的代码,但也有英语。

https://datascience-enthusiast.com/DL/Building_a_Recurrent_Neural_Network-Step_by_Step_v1.html

是的,我想自己做),因为所有的文章和例子都没有正确计算激活函数,例如,sigmoid函数总是被认为是1/1+exp(-x)。我需要1.0/1.0+exp(-x)。看起来是一样的,但终端给出的计算结果不同)看看你的计算结果是否相同)因此出现了错误。
 
亚历山大-阿列克谢耶维奇
是的,我想自己做)因为在所有的文章中,例子激活函数的计算是错误的)例如sigmoid在任何地方都被计算为1/1+exp(-x)。我需要1.0/1.0+exp(-x)。看起来是一样的,但终端给出的计算结果不同)看看你的计算结果是否相同)因此出现了错误。
在终端编写神经网络根本不是一个选项。你可以在那里使用任何功能,但它突然间可能不按你期望的方式工作。使用经过测试的现成的
原因: