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

 
Aleksey Vyazmikin:

请帮助解决一个组合学问题!

有N个不同的不可重复的元素,你需要每次从它们中抽取X个元素,输入值是所有可能元素的组合数。

是否有一个公式或函数来解决这个问题?

输入函数应该得到一个包含元素、组合元素数和组合数的数组,而输出应该是一个包含元素索引的数组。

请帮助我们!

也许从N个中随机搜索出X个更容易?
如果你用数字组合工作,那么你必须从数字内部建立这种组合。

而且可以有大量的组合数字。例如,从100个中选择10个将是数百万或数十亿(某种程度上的东西)。你将如何决定采取哪种组合?1,2, 158451, 或5454554 ?

随机的唯一性更容易找到,只要从N中随机选择1,然后是第二个,以此类推,直到X。
在选择时,如果一个项目已经被选中,你就跳过重复的项目,重新选择。也就是说,会有比X更多的尝试。例如,如果你从100人中抽取90人,会有很多重复的尝试。

为了提高速度,你可以从N个数组中丢弃所选的元素,从剩下的N-1个元素中选择。(将选定的元素与最后一个元素交换,并将数组缩短1。)这样,你将在恰好X次尝试中找到X个随机元素。如果N>3000个元素,你最好使用一个比内置的更复杂的随机发生器。这里的随机性比较。

Как MathRand() генерирует значения?
Как MathRand() генерирует значения?
  • 2010.08.06
  • www.mql5.com
Общее обсуждение: Как MathRand() генерирует значения?
 
Aleksey Nikolayev:

这可能会起作用

或者你可以看看奥库洛夫的《算法编程》教材中的 "组合 "段落

当然,有一个公式可以从指数中获得组合?请你写一下,好吗?

 
Valeriy Yastremskiy:

可优化的参数和平衡下降的增长领域。这个想法不是为了优化,而是为了在平衡中取出重要的特征用于增长区,但科学上说,在有SB的情况下,很难或不可能通过BP的任何特征。很难找到足够准确地描述该系列的数学模型,也不清楚需要多大的BP。

对称的条件对我来说似乎更正确。该系列也可反转。))))

科学可以说很多东西,但你必须尝试和检查潜力,也许它不可能完美,非理想的版本将足以改善一般的性能。

 
elibrarius:

从N个中寻找X个随机的不是更容易吗?
如果你用组合的数字工作,你必须从数字的内部建立这个组合。

而且可以有大量的组合数字。例如,要从100个中选择10个。将有数百万或数十亿(某种程度上的东西)。你将如何决定采取哪种组合?1,2, 158451, 或5454554 ?

随机的唯一性更容易找到,只要从N中随机选择1,然后是第二个,以此类推,直到X。
在选择时,如果一个项目已经被选中,你就跳过重复的项目,重新选择。也就是说,会有比X更多的尝试。例如,如果你从100人中抽取90人,会有很多重复的尝试。

为了提高速度,你可以从N个数组中丢弃所选的项目,并从剩余的N-1个项目中选择。(将选定的元素与最后一个元素交换,并将数组缩短1。)这样,你将在恰好X次尝试中找到X个随机元素。如果N>3000个元素,你最好使用一个比内置的更复杂的随机发生器。点击这里比较随机。

其目的正是为了矫枉过正。在250,000片叶子中,获得了15,000个独特的分割点。据我估计,对于一个目标值来说,一个完整的叶子列举,有3个分体,大约需要250天。我认为应该把分片放在一起,通过选择初始分片,寻找在其区域内激活的分片,然后分别尝试每一组。这种方法将大大减少组合的数量。

 
Aleksey Vyazmikin:

是否有一个公式可以从指数中获得组合?请你写下来,好吗?

这不是一个公式,而是一种算法。通过奥库洛夫看,这并不多,也不复杂。

 
Aleksey Nikolayev:

这不是一个公式,而是一种算法。查一查奥库洛夫,它不多,也不复杂。

我已经下载并查阅了它--谢谢你!

如果你把它评为 "容易",你肯定已经理解了,但我没有--我不懂编程语言,文字描述不清楚,我可以向你询问有关材料的问题吗?

 
Aleksey Vyazmikin:

我已经下载并查看了它--谢谢你!

如果你把它评为 "不复杂",你一定是理解了,但我没有--我不理解那里的编程语言,文字描述不清楚,我可以问你关于材料的问题吗?

如果够了,你可以问。那里的想法很简单--建立一个所有组合的数组(二维),然后按数字取一个行(或列)。你有两个选择--要么存储数组,要么每次重新计算(这样可以节省内存和时间)。

这里有一个R语言的例子。

#  i - номер, n - элементов исходно, k - сколько выбираем из n
i2c <- function (i,n,k) {m <- combn(n,k); m[,i]}

> i2c(3,10,5)
[1] 1 2 3 4 7
 
Aleksey Nikolayev:

如果它是一个措施,那么就设定它。这里的想法很简单--建立一个所有组合的数组(二维),然后按数字取一行(或一列)。你有两个选择--要么存储数组,要么每次重新计算(这样可以节省内存和时间)。

下面是一个R语言的例子。

阵列是通过循环建立的,这是在浪费时间,不是很合适。通过计算寻找价值的变体,没有初步的完整表格,这很有趣。

 
Aleksey Vyazmikin:

阵列是通过循环建立的,这是在浪费时间,不是很合适。通过计算找到一个值,事先没有一个完整的表格,这个选项很有意思。

我不确定是否存在这样的公式。

 
Aleksey Nikolayev:

我不确定是否有这样一个公式。

一定有什么算法,因为事实证明,对于15000个元素的3种组合,我们需要在内存中保留4兆字节的数组!这就是为什么我们需要在内存中保留4兆字节。我计算了一下,如果每1项需要8比特,那就更多了。