記事"強化学習におけるランダム決定フォレスト"についてのディスカッション - ページ 6

 
mov:

こんにちは、

いくつかの実験結果(ファジーロジックを使わない純粋なツリーで得られたもので、新しい記事に添付しようと思いましたが、報酬関数の議論が続いているので、考察と議論のための情報として掲載します)を掲載します。

1.SELLのとき、ランダム値が全区間0...1に設定されるのは、ちょっとおかしいと思った。

範囲を反対の不確かな値に限定することで、学習のスピードは何倍にもなる。2-3回の実行で(ランダム・データでのパスがあると思います)、4-6年前のようなトレーニングの質が得られます(多くの追加要因があるため、ばらつきは大きいですが、効率は数十パーセントも向上していません)。

2.2.初期実装では、ランダムに得られた 値が強化因子であることに違和感を覚えた。このため、強いトレンドの方が報酬が低いという状況が生まれやすい。

これを回避するための最初の試み

アイデア:100ピップス以上で利食い-1、それ以下なら-均等に増加(この場合は0.61から)。販売のためのプリパーpdl、他のレベルと同様の購入のため。理論的には、より強いトレンドの場合 - より高い報酬。結果は改善されましたが、統計誤差よりもわずかに。同時に、同じ条件のためのツリーとファイルのサイズが大幅に減少している。どうやら、このような特異な結果の並べ替えによって、ルールをよりシンプルに記述できるようになったようだ。

ツリーのアンサンブルをテストするために、私は1つのツリーの推定をロードすることにした。

をロードし、習慣的にトレーニングを実行した。驚いたことに、報酬関数を粗くして同様のトレーニングを行ったところ、大幅な改善が見られたのです。学習したプロットでは、他のすべての条件が同じであるにもかかわらず、4ヶ月間の利益が旧バリアントの6ヶ月間の利益を上回ったのです(具体的な数値は、トレーニング条件、ペア、コーダーのハンドルの曲率によって大きく異なるため、比較で操作しています)。評価関数をロードすることで、予測が改善されたのだ!おそらくプロ統計学者にとっては、ここに目新しいことは何もなく、そうであるべきであることを数式で証明できるだろう。このことは、予測関数のさらなる選択と評価の問題を提起している。

私がテストに費やした時間が、少なくとも誰かの検索時間の短縮に役立つことを願っている(あるいは、新たな失敗をする機会を与え、それが私たちと共有されることを)。

興味深い結果をありがとう。1つ目のポイントは、そう、学習スピードが上がるということだ。実際、私が今取り組んでいるクラスは、すでに1回の反復で効果的に学習している。つまり、学習速度という点では超効率的なアルゴリズムなのですが、モデルが過学習にならないように内部の前処理はまだ整理する価値があります。

ハイライトされた部分がよくわからないのですが、1本の木の推定値をロードするというのはどういうことでしょうか?クラスラベルとして0と1だけを与えるということですか?その場合、モデル内の値の分散が減少し、結果として品質が向上したと考えることができます。というのも、このアルゴリズムはもともと多くの反復を想定して設計されているのですが、実際にはその必要はなく、そのような負荷のかけ方が正しい可能性があることがわかったからです。

 
Igor Makanu:

そして、記事の著者のご好意により提供されたこのコードを、3~5小節の最も単純なパターンに教えることが、どれほど現実的なことなのだろうか?

SZY:うーん、お酒の席でも、Aliexpressで中国のセラーに書いているようなものだよ。)

3-5小節のパターンを入力する。

 
Maxim Dmitrievsky:

3~5小節のパターンを入力する。

手短に言うと......。どうやって?

 
Igor Makanu:

手短に言うと......。どうやって?

手で )

 
Maxim Dmitrievsky:

単一のツリーの評価を読み込むという意味がわかりません。クラスラベルとして0と1だけを与えるということですか?

はい、テストは1本の木とラベル0と1で行われました(同様の木のアンサンブルでは、結果はさらに高くなります)。
 
mov:
そう、テストは1本の木とラベル0と1で行った(同じような木のアンサンブルでは、結果はさらに高くなる)。
すみません、当然ながら1本の木(常に森という意味で、日常レベルでは木と言っています。)
 
mov:
ごめんなさい、当然、森は1本(常に森という意味であり、国内レベルでは木と言っている。)

はい、わかりました。でも、森は1本の木にすることもできるし、建設機能を抜くこともできる。なぜそれが必要なのかわからない。

 

最初は木の本数を500本、1000本と増やしてみた。しかし、木の本数を増やしても結果が改善されないことに気づきました。しかし、500本を超えると、最適化がクラッシュし続け、Mtreesのテキストファイルが作成されないのです。

また、50から100まで増やしてテストしたところ、最良の結果は20から25の反復で、それ以上は意味がないことに気づきました。

しかし、RSIピリオドが異なる組み合わせで結果を出すことには同意せざるを得ない。

hnd1 = iRSI (_Symbol, 0,8, PRICE_CLOSE);

hnd2 = iRSI (_Symbol, 0,16, PRICE_CLOSE);

hnd3 = iRSI (_Symbol, 0,24, PRICE_CLOSE);


そこで、将来のためにMTreesにもう1つ追加しようと考えた。しかし後で、EAが最後の反復の値を保存していることに気づいた。もしそうなら、期間を変更することができる。つまり、EAは損失が発生した場合、すぐに別のRSI期間に切り替えることができるはずです。

また、私はファジーロジックに 精通していません。そこで、どなたかファジーロジックを除いた完全なソースコードを投稿していただけないかと思ったのですが、もしファジーロジックを除いたRDFの正しいコードと1つのインジケータの例が見つからなかったら、教えていただけるとありがたいです。

エージェントに20から30の指標値を入力として与え、エージェントに自動的に学習させた場合、結果がどうなるのか興味があります。

 
FxTrader562:

最初は木の本数を500本、1000本と増やしてみた。しかし、木の本数を増やしても結果が改善されないことに気づきました。しかし、500本を超えると、最適化がクラッシュし続け、Mtreesのテキストファイルが作成されないのです。

また、数を50から100に増やしてテストしたところ、最良の結果は20から25の反復であり、それ以上は意味がないことに気づきました。


ただ、20から30の指標値をエージェントに入力として与え、エージェントに自動学習させた場合、結果がどうなるのか興味があります。

ウェブ上に実験結果がありますが、100本の木が最高の認識で、予測が必要なら20~50本です。

状況が変化したときに、森がトレーニング中に最適なものを選択することを期待して、入力に15-19の指標を試してみました。すでに10以上では結果が伸びなくなっている。各ツリーのフォレストを構築する際、(このフォレストの実装では)入力の半分しか使用されていないことに注意してください。理論的には(半分ではなく)入力数のルートが分類タスクに適している(と言われている)ようだが、私自身は試していない。

 
mov :

このネットワークは実験結果を持っており、100本の木-最高の認識、20-50本-予測が必要な場合、100本で試したが、予測性が悪くなっている。

状況が変われば森が最適なものを選ぶという計算で、入り口で15-19の指標を試してみた。すでに10以上では結果が伸びなくなっている。フォレストを構築するとき、各ツリーには入力の半分しか使用されないことに注意してください。理論的には、(彼らが言うように)分類の問題では、入力の数のルート(半分ではなく)が良いようですが、彼は試していませんでした。

ご回答ありがとうございました。

しかし、一度にすべての指標(15から20の指標)を知ることができ、エージェントに少数の指標だけを使用するのではなく、すべての指標を使用するとどうなるかを知りたいのです。そして、エージェントを過去1年間訓練し、エージェントがすべての指標を使用して最適な方針を策定できるようにします。つまり、より多くの指標値を使って、ローソク足の終値ごとにエージェントの現在の状態を判断する必要があります。

今まで私が気づいたことは、適切なエグジット条件がないために、1回の損失が一連の小さな利益を帳消しにしているということです。ですから、エントリーとエグジットの両方の条件を微調整する必要があります。

ファジーロジックを 使用しないインジケータのコード例と、現在のコードの実装でインジケータをどこに置くかを教えてください。

OnTick()関数の中にインジケータを追加しようとしましたが、あまり役に立ちませんでした。ファジーロジックなしのEAの現在のバージョンの完全なサンプルコードを探しています。