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

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

ビーバーは知らないうちに同じダムを作っている。

が、それぞれ頑なに自分が新しいものを発明したと信じている。

ビーバーは勤勉で正しい生き物ですが、勉強熱心なビーバーは 意地悪な生き物で、あちこちからほうきで追い払うか、単に無視するのがよいでしょう。

 
ケシャ・ルートフ

ビーバーは勤勉で正しい生き物、全く別物、騎手見習いは 厄介な生き物、あちこちから箒で追い払うか、いっそのこと無視しちゃいましょう。

「壷の中のアナリスト" :)) 皿洗いのファックオフ

 
アレクセイ・ヴャジミキン

要は、仮に全体の50%が取れたとしても、さらにこの50%から最初のルートスプリットに明確な選択がある(Alglibではそうでないのか?)CatBoostは予測変数のランダムな選択だけでなく、最初の木に対するランダムスプリット(計算の際にランダムに重みが加えられる)も備えています。

私の目標は、モデル全体を推定することではなく、高い確率でサンプルの大部分を記述する葉を得ることです。そして、そのような葉っぱを年ごとに履歴を検証して、組成を作ります。市場全体を表現するものではないかもしれませんが、ほとんどの場合、50%の確率で推測するよりも、知っていることをより正確に答えられる方がいいと思うのです。

プレディクターは600台程度になり、完全にオーバーキルすることは現実的ではなくなりました。

Alglibは残りの50%の予測器をすべて調べ、それぞれを四分位で4分割し、すべての変種の中から最も誤差が少ないものを選びます。

原理的には、ランダムな分割は難しくありません。
個々の木でテスト結果が良いもの(45〜50%)は見たことがないが、それが林立している方が面白い)。


 
見た予測因子の重要性という点では。
xgboost, lightGBMパッケージには、「木モデル」に対する特徴量の重要 度を推定するメソッドが組み込まれていました。

  1. ゲイン
    この指標は、各特徴のモデルへの相対的な寄与度を示すもので、各木を調べ、どの特徴がノード分岐につながるかを調べ、その指標に従ってモデルの不確実性がどれだけ減少したかを計算する(Gini impurity、information gain)。
    各特徴について、その寄与度をすべての木について合計する。
  2. カバー
    各フィーチャーの観測回数を表示します。例えば、4つの機能、3つの木があるとします。fich 1が木のノード1、2、3にそれぞれ10、5、2個のオブザベーションを持っているとすると、このfichの重要度は17 (10 + 5 + 2)となる。
  3. 周波数
    与えられた特徴がツリーノードにどの程度含まれているかを示す。すなわち、各ツリーにおける各特徴の分割ツリーノードの総数がカウントされる。
重要性を正しく分けていないんです。
5本の棒で学習させたフォレストが、100本の棒より良い結果を出すというテストがあります。しかし、100人単位で教える場合、最初の5人は重要視されず、遠くの人が重要視されます。
100でトレーニングした場合、個々の木や森の誤差が小さくなっています。明らかにオーバートレーニングで30-100のバーを重要視していることが原因です。しかし、通常のロジックでは重要ではなく、5小節でのフォレストがより良い結果をもたらすからであることは明らかである。
 
ところで、CoverとFrequencyの違いがよくわからないのですが?具体的には、Coverの機能観察とは何でしょうか?(周波数帯のチップで分解して理解する)。木は、観察されるのではなく、特徴によって分割されるようです。
 
アレクセイ・ヴャジミキン

遺伝的アルゴリズムで 木を作り、エントロピーの向上で世代を選択するRスクリプトがある。そして、何らかの最終選考がある。最終的にすべての木を選び、葉っぱを抜いて、MT5でさらに別個に測定します。スクリプトは公開されていないので、詳細な説明もありません。どうやらそれは森から最高の木を選択するようなものですが、オーバートレーニングを避けるために深さの制限があり、よくプロセスは最後のサンプルにすべてのコアで約2日間かかりますが、すべてのバーではなく、入力する唯一の信号、および3年間のすべてのバーであれば、計算がそこに1.5ヶ月かかります。計算後、ツリーの分割、つまり、最良母集団ツリーのルート予測変数の列を削除して、もう一度やり直すのですが、この手順を40回行っても、非常に良い葉が作られることがあるようです。

このコードにざっと目を通したところ、rpartパッケージからツリーを構築するための機能が遺伝的に選択されていることがわかりました。そこで、それぞれの木に独自の特徴量を学習させるようにしました。遺伝学的に、このような機能セットは完全なブルートフォースよりも高速である。
でも、この木は魔法の木ではなく、rpartが提供する木なんです。そこそこ標準的だと思います。
 
マキシム・ドミトリエフスキー

まず、すべての特徴量に対してモデルを学習させ、その誤差を保存します。

そして、一つずつ、例えば正規分布で予測変数をランダム化し、このランダム化(変更)したものを含むすべての特徴量で再度誤差を確認し、初期のものと比較します。モデルの再トレーニングは必要 ありません。そうして、それぞれの予測因子をチェックする。もしその予測変数が優れていた場合、サンプル全体(他のすべてのオリジナル予測変数を含む)の誤差はオリジナルに比べて劇的に増加します。エラー差分を保存し、それを元に最適なフィッシュをふるいにかける。そして、最後に優秀なものだけをトレーニングして、製品にモデルチェンジします。悪い予測変数はモデルにとってノイズであり、1%もあれば必要ない。良いものは通常5-10個残るが、残りのものの重要性は指数関数的に減少する(Zipfの法則)。

フィルタを教えようとしたが、あまり意味がない、一度にすべてを一つのモデルに入れた方がいい

できれば、ちょうど予測因子VERYの 選択について有能(すでに以前に投げた)

順列についての投稿を見つけました。
面白い変化球ですね。試してみるしかないですね。
100本のバーのモデルに適用して、95本のバーを削除して最初の5本を残そうとすると、結果が50%になるのが怖いですが。結局、その最初の5つはほとんど分割に関与していない(平均して5%のノードしか構築されていない)。
 
エリブラリウス
順列についての投稿を見つけました。
面白い変化球ですね。試してみなければなりませんね。
100本モデルに適用して、95本を削除して最初の5本を残そうとすると、結果が50%になるのが怖いですが。結局、その最初の5つはほとんど分割に関与していない(平均して5%のノードしか構築されていない)。

100本で何をやっているのかわからない、ちゃんと塗れば大丈夫なんだろうけれども

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

100本のバーで何をやっているのかわからない。おそらく、きちんと適用すればうまくいくはずだ

重要でない予測因子を選別するプロセスを自動化したい)

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

まず、すべての特徴量に対してモデルを学習させ、その誤差を保存します。

そして、一つずつ、例えば正規分布で予測変数をランダム化し、このランダム化(変更)したものを含むすべての特徴量で再度誤差を確認し、初期のものと比較します。モデルの再トレーニングは必要 ありません。そうして、それぞれの予測因子をチェックする。もしその予測変数が優れていた場合、サンプル全体(他のすべてのオリジナル予測変数を含む)の誤差はオリジナルに比べて劇的に増加します。エラー差分を保存し、それを元に最適なフィッシュをふるいにかける。そして、最後に優秀なものだけをトレーニングして、製品にモデルチェンジします。 悪い予測変数はモデルにとってノイズであり、1%もあれば必要ない。 良いものは通常5-10個残るが、残りのものの重要性は指数関数的に減少する(Zipfの法則)。

フィルタを教えようとしたが、あまり意味がない、一度にすべてを一つのモデルに入れた方がいい

できれば、ちょうど予測変数の選択についてVERY有能(すでに以前に投げた)

私はこの方法を違った意味で理解していました。
調査対象の予測因子については、正規分布のランダムな値を与えるのではなく、この列の行をシャッフルすればよいのです。

とにかく、記事からの結果が印象的です。実際にやってみないとわからないですね。
理由: