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

 
マキシム・ドミトリエフスキー

すべてのファイルを選択してダウンロードすると、zip圧縮されます。

の場合、その部分は、異なるサンプル長になります。

ありがとうございます!そうなんです、アーカイブとしてダウンロードできるんです!これはいいですね。

しかし、サンプリングの長さが違うのはまずいので、小さな偏差が許容される最もランダムな列を選択しようと考えていました。

この方法をサンプルに適用する必要はないと思います。そうでなければ、実生活でどのように使えばよいのでしょうか。

トレーニング用に走らせているのですが、どうなることやら。

 
Aleksey Vyazmikin:

ありがとうございます!そうなんです、アーカイブをダウンロードできるんです!これは嬉しいですね。

しかし、サンプルの長さが違うのはまずいので、小さな偏差が許容される、最もランダムな列を強調しようと考えました。

この方法をサンプルに適用する必要はないと思います。そうでなければ、実生活でどのように使えばよいのでしょうか。

トレーニング用に走らせているのですが、どうなることやら。

受験には必要ないが、重宝するかもしれない。

 
elibrarius:

変換するのが面倒くさい)
説明します。

1) 列をソートする
2) 量子の平均要素数を数える 例:10000要素 / 255量子 = 39,21
3) ループ内で、各ステップで39,21要素ずつ移動し、ソートした配列から量子 の値の配列に値を追加する。例:配列の値0=値0量子、39番目の値=1量子、78番目の値=2量子、など。

値がすでに配列にある場合、つまり重複が多い領域に入った場合は、重複をスキップして追加しない。

各ステップで、ちょうど39.21を足し、合計を切り上げて、等しくなるように、配列の要素を選択するのです。例えば、195(39*5 = 195)の代わりに、196(39,21 * 5 = (int) 196,05)を取ることができます。

一様 分布の場合は明確です。私ならユニークな値の配列を作り、それを切断に使用します。

しかし、グリッドを分割する方法は他にもあります。

    THolder<IBinarizer> MakeBinarizer(const EBorderSelectionType type) {
        switch (type) {
            case EBorderSelectionType::UniformAndQuantiles:
                return MakeHolder<TMedianPlusUniformBinarizer>();
            case EBorderSelectionType::GreedyLogSum:
                return MakeHolder<TGreedyBinarizer<EPenaltyType::MaxSumLog>>();
            case EBorderSelectionType::GreedyMinEntropy:
                return MakeHolder<TGreedyBinarizer<EPenaltyType::MinEntropy>>();
            case EBorderSelectionType::MaxLogSum:
                return MakeHolder<TExactBinarizer<EPenaltyType::MaxSumLog>>();
            case EBorderSelectionType::MinEntropy:
                return MakeHolder<TExactBinarizer<EPenaltyType::MinEntropy>>();
            case EBorderSelectionType::Median:
                return MakeHolder<TMedianBinarizer>();
            case EBorderSelectionType::Uniform:
                return MakeHolder<TUniformBinarizer>();
        }
 
Aleksey Vyazmikin:

一様分布ならなるほど-まずユニークな値の配列を作り、それを使ってカットします。

しかし、グリッドを分割する方法は他にもあります。

サンプル数が多くないと、モデルは何も学習しない

 
マキシム・ドミトリエフスキー

サンプル数が多くないと、モデルは何も学習しません。

これらはCatBoostの サンプリング量子化法であり、その後に行われる列挙・学習の境界線となる。

私の実験では、グリッドは予測変数ごとに別々に選ぶべきで、そうすれば品質の向上が見られるのですが、CatBoostではそれができず、グリッドを構築してcsvにアップロードし、その中でターゲットの振る舞いを推定するために、グリッドを反復する必要があります。非常に有望なツールだと思いますが、コードをMQLに翻訳する必要があります。

 
Aleksey Vyazmikin:

これらはCatBoostのサンプリング量子化法であり、この境界線によって列挙・学習が進められる。

私の実験では、グリッドは各予測子に対して個別に選択されるべきで、そうすれば品質向上が見られるのですが、CatBoostではそれができず、グリッドを構築してcsvにアップロードし、それを繰り返してその中のターゲット動作を評価しなければならないのです。非常に期待できる機能だと思うのですが、MQLにコードを翻訳する必要があります。

モデル自体の設定(パラメータ)にあるのでしょうか。

設定にない場合は、でたらめです。

 
マキシム・ドミトリエフスキー

モデル自体の設定(パラメータ)にあるのでしょうか? よくわからないのですが

設定にないものはデタラメです。

少なくともコマンドラインについては、設定にあります

--feature-border-type

数値特徴の量子化モード

可能な値。
  • 中央値
  • ユニフォーム
  • ユニフォームアンドクアンタイルズ
  • MaxLogSum
  • MinEntropy
  • グレイディーログサム
Quantization - CatBoost. Documentation
  • catboost.ai
Mode How splits are chosen Combine the splits obtained in the following modes, after first halving the quantization size provided by the starting parameters for each of them: Maximize the value of the following expression inside each bucket: Minimize the value of the following expression inside each bucket: Maximize the greedy approximation of...
 
Aleksey Vyazmikin:

少なくともコマンドラインについては、設定にあります

--feature-border-type

数値特徴の量子化モード

可能な値。
  • 中央値
  • ユニフォーム
  • ユニフォームアンドクアンタイルズ
  • MaxLogSum
  • MinEntropy
  • グレイディーログサム

大きな差はない?

 
Aleksey Vyazmikin:

一様分布ならなるほど-まずユニークな値の配列を作り、それを使ってカットします。

しかし、グリッドを分割する方法は他にもあります。

ユニークバリューがあると、ごちゃごちゃになります。例えば、100個の文字列があり、そのうち10個がユニークで、2個が45個、8個が1個であるとします。5量子で割ると、1による5だけが選ばれ、最も代表的な(45による)2がスキップされる可能性があるのです。
 
マキシム・ドミトリエフスキー

そして、それは大きな違いなのでしょうか?

適切なブレイクダウンの選択が結果に大きく影響する。

これはリコールに関する例ですが、最大で50%のばらつきがあり、私にとっては重要なことです。

16から512まで16刻みで境界を増やすと、ヒストグラム上では順不同ですが、私のタイトルは少し邪魔になります。


メッシュの選択についてはまだ実験中ですが、ロジックを観察するため、そして調整するだけでなく、異なるメッシュが必要とされる異なるプレディクターが存在することはすでに明らかです。

理由: