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

 
アレクセイ・テレンテフ
私のソリューションは、当初はOpenNN(C++)をベースにしていました。
今はいろいろと勉強して、Keras(Python)に乗り換えました。

主に分類問題予測のディープラーニングを扱っています。

つまり、同じ領域のMOを扱っているわけです。Kerasは、特にRに移植されているので、良いパッケージだと思います。

ただ、「何が?

グッドラック

 
ウラジミール・ペレヴェンコ

つまり、同じ領域のMOを扱っているわけです。Kerasは、特にRに移植されているので、良いパッケージだと思います。

ただ、「何が?

グッドラック

議論に参加することにしたところです。=)
 
マキシム・ドミトリエフスキー


これは興味深いことです...つまり、追加のテストを行う必要があるということで、このRNは以前考えられていたほど意味がないのかもしれません。

唯一の利点は、オプティマイザで他のシステムパラメータと同時に重みを選択することです

現在は、既知のデータの範囲内でどの程度計算できるかを試しているところです。例えば掛け算の表。

更新しました。

Expert Advisorを変更した後の追加実験では、通常のMLP3-5-1と比較して、以下のような結果が得られています。

テストには異なる処方を使用しました。

//double func(double d1,double d2,double d3 ){return d1*d2;} //乗算は数式につきものなので、誤差は0〜2%です。2%が得られるのは、遺伝的最適化装置が必ずしも理想的な解で停止しないためである。しかし、誤差が0になる絶対厳密解も存在する。
//double func(double d1,double d2,double d3 ){return d1*d2*d3;}// error 0-2% multiplication is in the formula, on MLP 1%
//double func(double d1,double d2, double d3 ){return MathSin(d1).D1(double d1).D2(double d3);}// error 0-2% multiplication is in the formulas, on MLP 1% }// error 2-6%, on MLP 0,1%
//double func(double d1,double d2,double d3 ){return MathSin(d1)*MathSin(d2)*MathSin(d3).}// error 2%, on MLP 1%
//double func(double d1,double d2,double d3 ){return MathSin(d1)*MathSin(d2)*MathSqrt(d3);}// 3-4% error, on MLP 1%
//double func(double d1,double d2,double d3 ){return MathSin(d1)*MathPow(d2,.d3)}/ //MathSin(d1)*MathSin(d2);}// 3-4% error, on MLP 1% 33)*MathSqrt(d3);}// error 8-4%, at MLP 1.5%
//double func(double d1,double d2,double d3 ){return MathPow(d1,2)*MathPow(d2,0.33)*MathSqrt(d3);}// error 8-4%, at MLP 1.5%

結論は、通常のMLPはReshetovのRNPに比べて2〜3倍誤差が少ないということです。おそらく、このエラーの一部は、MT5ターミナルの遺伝的最適化装置が理想的な解で停止しないことに起因しています。
 
エリブラリウス

現在は、既知のデータの範囲内でどの程度カウントできるかを試しているところです。例えば掛け算の表。

更新しました。

EAを変更した後の追加実験では、通常のMLP3-5-1と比較して、以下のような結果が得られました。

テストには異なる処方を使用しました。

//double func(double d1,double d2,double d3 ){return d1*d2;} //乗算は数式につきものなので、誤差は0〜2%です。2%が得られるのは、遺伝的最適化装置が必ずしも理想的な解で停止しないためである。しかし、誤差が0になる絶対厳密解も存在する。
//double func(double d1,double d2,double d3 ){return d1*d2*d3;}// error 0~2%の乗算は数式につきもの,MLPでは1%になります.
//double func(double d1,double d2,double d3 ){return MathSin(d1;}// error 2-6%, MLPでは0,1%。
//double func(double d1,double d2,double d3 ){return MathSin(d1)*MathSin(d2)*MathSin(d3);}// エラー2%、MLPでは1%になります。
//double func(double d1,double d2,double d3 ){return MathSin(d1)*MathSin(d2)*MathSqrt(d3);}// 3-4% エラー,MLP 1% のとき.
//double func(double d1,double d2,double d3 ){return MathSin(d1)*MathPow(d2,.33)*MathSqrt(d3);}// エラー 8-4%, MLP では 1.5%.
//double func(double d1,double d2,double d3 ){return MathPow(d1,2)*MathPow(d2,.33)*MathSqrt(d3);}// エラー 8-4%, MLP では 1.5%.

まとめると、通常のMLPはReshetovのRNNに比べて2〜3倍誤差が少ないと結論付けられる。おそらく、このエラーの一部は、MT5ターミナルの遺伝的最適化装置が理想的な解で停止しないことに起因しています。

そうですね、興味深い結果です。おそらく、完全な列挙の方がより正確でしょう。
 
マキシム・ドミトリエフスキー

そうですね、興味深い結果です。おそらく、フルオーバーシュートの方がより正確でしょう。
というのが正確なところですが、数週間後、数カ月後には8個のフィッティング係数を1%ステップで1008=10000000000回繰り返し、端末自体はこの数で、ジェネリックに切り替わる。
 
エリブラリウス
そうだろうけど、数週間後、数ヶ月後には...。1%ステップ1008=1000000000000回の繰り返しで8つの選択可能な係数があり、端末自体がその数だけ、ジェネリックに切り替わります。

alglibからMLPを分類するには、少なくとも2つの出力が必要だと理解していますが、これをどのように扱うか教えてください。 ヘルプや説明はどこにもありません... すずき )
 
マキシム・ドミトリエフスキー

alglibのMLPの分類は、少なくとも2つの出力が必要だと理解しているのですが、どのように作業すればよいのでしょうか?)

はい2、ヘルプからhttp://alglib.sources.ru/dataanalysis/neuralnetworks.php

特殊なケースとして、線形出力層と出力のSOFTMAX-normalizationを持つニューラルネットワークがあります。これは、ネットワークの出力が非負であり、その和が厳密に1に等しくなければならない分類問題で、入力ベクトルをクラスのいずれかに割り当てる確率として用いることができる(限定的には、学習したネットワークの出力はこれらの確率に収束する)。このようなネットワークの出力数は、常に2 以上でなければならない(初等論理による制限)。

リニアで実験中なので、まだ扱っていない。
 
エリブラリウス

はい、http://alglib.sources.ru/dataanalysis/neuralnetworks.php より参照

特殊なケースとして、線形出力層と出力のSOFTMAX-normalizationを持つニューラルネットワークがあります。これは、ネットワークの出力が非負であり、その和が厳密に1に等しくなければならない分類問題で、入力ベクトルをクラスのいずれかに割り当てる確率として用いることができる(限定的には、学習したネットワークの出力はこれらの確率に収束する)。このようなネットワークの出力数は、常に少なくとも2で ある(初等論理による制限)。


ああ、そうですか。つまり、ある結果の確率、例えば買う確率は0.9、売る確率は0.1というように、ある配列は買う確率のバッファとして、別の配列は売る確率として、これらの値を入れて、学習後に買う確率と売る確率を別々に捨てるのに使うのですか、そうですか。
 
マキシム・ドミトリエフスキー

例えば、「買い」の確率は0.9、「売り」の確率は0.1というように、どちらか一方の確率を与えて、一方の配列は「買い」、もう一方は「売り」の確率のバッファとして、学習後に確率を個別に破棄するということですね?

そして、読んだ限りでは--私も同じ意見です。

出口が1つなので、確率的には買いが0(または-1)、売りが1くらいになるのですが。(トレーニングの仕方によってはその逆もあり)。

出力が3つ以上ある場合、役に立つのでしょうか?やはり、1出力では使いにくいのでしょうか...。3または4タスクの場合(ただし、0、0.5、1をクラスBuy、Wait、Sellとして使用することも可能)。

 
エリブラリウス

そして、読んだ限りでは--私も同じ意見です。

出口が1つなので、確率も買いが約0(または-1)、売りが約1になります。(トレーニングの仕方によっては、その逆もありえます)。

出力が3つ以上あると便利なのでしょうか?そうすると、1出力は使いにくいのですが......。3または4タスクの場合(ただし、0、0.5、1をクラスBuy、Wait、Sellとして使用することも可能)。


そうですね、おそらく2つ以上のクラスを持てるようにしたのでしょう。そうすれば、よりクラスタリングが進み、k-meansのような他の手法も使えるようになるはずです :)
理由: