トレーディングにおける機械学習:理論、モデル、実践、アルゴトレーディング - ページ 1800

 
Aleksey Vyazmikin:

組合せ問題の解答をお願いします!

N種類の繰り返し不可能な要素があり、そこから一度にX個の要素(複数可)を取り出す必要がある。入力値は、すべての可能な要素のうち、組み合わせの数である。

そのための計算式や関数はあるのでしょうか?

入力関数は、要素、組み合わせの要素数、組み合わせ番号を持つ配列を取得し、出力は要素のインデックスを持つ配列である必要があります。

助けてください!

N個の中からX個のランダムなものを検索するのが簡単なのかも?
もし組み合わせの数で仕事をするなら、その組み合わせを数から内部で構築しなければならない。

そして、膨大な数の組み合わせの数字があり得るのです。例えば、100のうち10を選ぶとなると、何百万、何千億という数字になります(ある程度は仕方がない)。どのような組み合わせにするかは、どのように決めるのでしょうか?1,2, 158451, or 5454554 ?

ランダムユニークは、Nから1をランダムに選択し、次にXまで選択すればよいので簡単です。
既に選択されている項目を選択する場合は、重複をスキップして再選択します。すなわち、Xより多くの試行が行われることになる。例えば、100人中90人取ったら、重複する試みが多くなります。

高速化のために、N個の配列から選択した要素をドロップし、残りのN-1個の要素から選択することができます。(選択した要素と最後の要素を入れ替え、配列を1つ短くする。) このようにして、ちょうどX回の試行でX個のランダムな要素を見つけることができます。N > 3000 要素の場合、内蔵のランダムジェネレータよりも複雑なランダムジェネレータを使用した方がよいでしょう。ランダムの比較はこちら

Как MathRand() генерирует значения?
Как MathRand() генерирует значения?
  • 2010.08.06
  • www.mql5.com
Общее обсуждение: Как MathRand() генерирует значения?
 
アレクセイ・ニコラエフ

それならいけるかも しれない。

あるいは、Okulovの "Programming in Algorithms "の教科書の "Combinations "のパラグラフを見てください。

確かに、インデックスから組み合わせを求める公式がありますね。書いてもらえますか?

 
Valeriy Yastremskiy:

最適化可能なパラメータとバランス低下成長領域。アイデアは、最適化ではなく、バランスで秋の成長ゾーンのための重要な特性を取り出すことですが、科学はそれがSBの存在下でBPの任意の特性を通じて困難または不可能であると言うことです。十分な精度で系列を記述した数理モデルを見つけることは困難であり、どの程度の大きさのBPが必要かは不明である。

シンメトリーな条件の方が正しいように思います。また、シリーズが逆になっている場合もあります。 ))))

科学はいろいろなことが言えますが、ポテンシャルを確認してみないと、もしかしたら完璧にはできないかもしれないし、一般的にパフォーマンスを上げるには理想的でないバージョンで十分なのでしょう。

 
elibrarius:

N個の中からX個のランダムなものを探す方が簡単ではないか?
組み合わせの数で作業する場合、その組み合わせは数から内部で構築する必要があります。

そして、膨大な数の組み合わせの数字があり得るのです。例えば、100のうち10を選択する場合。何百万、何十億(ある程度は何か)となるでしょう。どのような組み合わせにするかは、どのように決めるのでしょうか?1,2, 158451, or 5454554 ?

ランダムユニークは、Nから1をランダムに選択し、次にXまで選択すればよいので簡単です。
既に選択されている項目を選択する場合は、重複をスキップして再選択します。すなわち、Xより多くの試行が行われることになる。例えば、100人中90人取ったら、重複する試みが多くなります。

高速化のために、N個の配列から選択した項目を捨て、残りのN-1個の項目から選択することができます。(選択した要素と最後の要素を入れ替え、配列を1つ短くします。) このようにして、ちょうどX回の試行でX個のランダムな要素を見つけることができます。N > 3000 要素の場合、内蔵のランダムジェネレータよりも複雑なランダムジェネレータを使用した方がよいでしょう。ランダムの比較はこちら

狙いは、まさにオーバーキル。25万枚の葉のうち、15,000枚のユニークな分け目を得ることができました。3分割の完全な葉っぱの列挙は、1つの目標値に対して、私の試算では約250日かかると思われます。スプリットは、初期スプリットを選択し、その領域で起動するスプリットを探して、各グループを別々に試すというように、グループ分けをするべきだと思います。この方法により、組み合わせの数を大幅に減らすことができます。

 
Aleksey Vyazmikin:

インデックスから組み合わせを得るための計算式はありますか?書いてもらえますか?

数式ではなく、アルゴリズムなんです。オクロフに目を通すと、たいしたことないし、複雑でもない。

 
アレクセイ・ニコラエフ

数式ではなく、アルゴリズムなんです。オクロフについて調べてみてください、たいしたことないし、複雑でもないです。

ダウンロードして調べました~ありがとうございます。

簡単」と評価された方は、理解されたのでしょうが、「プログラミング言語がわからない」「テキストの説明が不明」「教材について質問してもいい?

 
Aleksey Vyazmikin:

ダウンロードして見ましたよ~ありがとうございます。

複雑でない」と評価された方は、理解されたのでしょうが、私は理解できませんでした。「そこのプログラミング言語がわからない、テキストの説明が不明確、教材について質問してもいいですか?

十分であれば、お願いしてもよいでしょう。そこでの考え方は簡単で、すべての組み合わせの配列(2次元)を作り、番号で行(または列)を取るというものです。配列を保存するか、毎回再計算するか(メモリと時間の節約になります)、2つの選択肢があります。

以下は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
 
アレクセイ・ニコラエフ

メジャーであれば、設定する。考え方は簡単で、すべての組み合わせの配列(2次元)を作り、番号で行(または列)を取るのです。配列を保存するか、毎回再計算するか(メモリと時間の節約になります)、2つの選択肢があります。

以下はRでの例です。

配列はループで構築されるため、無駄が多く、あまり適さない。フルテーブルを用意しなくても、計算で値を求めるというバリエーションが面白い。

 
Aleksey Vyazmikin:

配列はループを介して構築されますが、これはあまり適さない無駄な作業です。あらかじめ完全なテーブルがなくても、計算で値を求めるという選択肢は面白い。

そんな数式は存在しないのでは?

 
アレクセイ・ニコラエフ

そんな公式はないだろうと思っています。

というのも、3つの組み合わせで1万5千の要素がある場合、4テラバイトのメモリに配列を保持する必要があることがわかったのです! 何かアルゴリズムがあるのでしょう。1項目あたり8ビットかかると計算すると、さらに多くなります。

理由: