トレーディングにおける機械学習:理論、モデル、実践、アルゴトレーディング - ページ 3281 1...327432753276327732783279328032813282328332843285328632873288...3399 新しいコメント fxsaber 2023.10.03 21:50 #32801 Maxim Dmitrievsky #:非正規化相互相関 ) 相互共分散。 ピアソンが必要。 Maxim Dmitrievsky 2023.10.03 22:06 #32802 fxsaber #:ピアソンが必要だ。 どうしたらいいのかわからないし、眠いし。 似たようなものだ。 >>> a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> b = np.array([1, 2, 3]) >>> a = (a - np.mean(a)) / (np.std(a)) >>> b = (b - np.mean(b)) / (np.std(b)) >>> np.correlate(a, b, 'full') array([-1.8973666 , -1.42302495, 0.9486833 , 0.9486833 , 0.9486833 , 0.9486833 , 0.9486833 , 0.9486833 , 0.9486833 , -1.42302495, -1.8973666 ]) >>> fxsaber 2023.10.03 22:11 #32803 Maxim Dmitrievsky #:ーどうしたらー、ーどうしたらー似たようなもの うん、それじゃない。 Maxim Dmitrievsky 2023.10.03 22:13 #32804 fxsaber #:その通りだ。 もう少しで何かわかるから調べてみて。 fxsaber 2023.10.04 11:36 #32805 fxsaber #:長い文字列の中から似たような短い文字列を素早く見つけようとする。Alglibを使ったこのような実装では、100万番目の文字列の中から似たような短い文字列(300個)を探すのに6秒以上かかる。 それを高速化した。 #include <fxsaber\Math\Math.mqh> // https://www.mql5.com/ru/code/17982 const vector<double> GetCorr( const double &Array[], const double &Pattern[], const int Step = 1 ) { double Corr[]; MathCorrelationPearson(Array, Pattern, Corr, Step); ArrayRemove(Corr, 0, ArraySize(Pattern) - 1); vector<double> Res; Res.Swap(Corr); return(Res); } #property script_show_inputs input int inRows = 300; // Длина короткой строки input int inCols = 1000000; // Длина длинной строки // Поиск похожей строки в длинной строке. void OnStart() { if (inRows < inCols) { PrintCPU(); // https://www.mql5.com/ru/forum/86386/page3256#comment_49538685 double Array[]; // Длинная строка, где будет искать. double Pattern[]; // Короткая строка, с которой будем сравнивать. CMatrixDouble Matrix; FillData(Array, Pattern, Matrix, inRows, inCols); // https://www.mql5.com/ru/forum/86386/page3278#comment_49725614 Print(TOSTRING(inRows) + TOSTRING(inCols)); vector<double> vPattern; vPattern.Assign(Pattern); ulong StartTime, StartMemory; // https://www.mql5.com/ru/forum/86386/page3256#comment_49538685 BENCH(vector<double> Vector1 = GetCorr(Matrix, vPattern)) // https://www.mql5.com/ru/forum/86386/page3278#comment_4972561 4 BENCH(vector<double> Vector2 = GetCorr(Array, Pattern)) BENCH(vector<double> Vector3 = GetCorr(Array, Pattern, -1)) Print(TOSTRING(IsEqual(Vector1, Vector2))); Print(TOSTRING(IsEqual(Vector3, Vector2))); } } 結果はこうだ。 EX5: 4000 AVX Release. TerminalInfoString(TERMINAL_CPU_NAME) = Intel Core i7-2700 K @ 3.50 GHz TerminalInfoInteger(TERMINAL_CPU_CORES) = 8 TerminalInfoString(TERMINAL_CPU_ARCHITECTURE) = AVX inRows = 300 inCols = 1000000 vector<double> Vector1 = GetCorr(Matrix, vPattern) - 7158396 mcs, 8 MB vector<double> Vector2 = GetCorr(Array, Pattern) - 364131 mcs, 8 MB vector<double> Vector3 = GetCorr(Array, Pattern, -1) - 323935 mcs, 7 MB IsEqual(Vector1, Vector2) = true IsEqual(Vector3, Vector2) = true 今度は300ミリ秒。 fxsaber 2023.10.04 11:41 #32806 fxsaber #:あと300ミリ秒だ。 どんなマトリックスでもできないのに。 inRows = 30000 inCols = 10000000 vector<double> Vector2 = GetCorr(Array, Pattern) - 10567928 mcs, 76 MB vector<double> Vector3 = GetCorr(Array, Pattern, -1) - 3006838 mcs, 77 MB 10Mの文字列から30Kの類似文字列を見つけるのに3秒かかる。 mytarmailS 2023.10.04 11:58 #32807 fxsaber #:どのマトリックスも対応できないとき10Mのストリングから30Kの類似したストリングを見つけるのに3秒かかる。 とてもクールだが、役に立たない。これはfft()の例か? fxsaber 2023.10.04 12:09 #32808 mytarmailS #:これはft()を使った例ですか? 300/1Mはftではなく、30K/10Mがftです。 Aleksey Vyazmikin 2023.10.04 12:27 #32809 fxsaber #:どのマトリックスも対応できないとき10Mの文字列から長さ30Kの類似文字列を見つけるのに3秒かかる。 印象的な結果だ! Aleksey Vyazmikin 2023.10.04 12:48 #32810 2010年から2023年までのサンプル(4万7000行)を取り、時系列で3つのパートに分け、これらのパートを入れ替えたらどうなるか見てみることにした。サブサンプルのサイズは、トレーニング60%、テスト20%、試験20%である。私はこれらの組み合わせを作った(-1) - これは標準的な順序である - 時系列順。各サブサンプルにはそれぞれの色があります。各サンプルのセットに対して異なるSeedで101個のモデルを訓練し、以下の結果を得た。すべての指標は標準的であり、モデルの平均利益(AVR Profit)、およびトレーニングに参加しなかった最後のサンプルで利益が3000ポイントを超えたモデルの割合を決定することは困難であることがわかります。たぶん、トレーニング・サンプル・サイズにおける-1と0のバリアントの相対的な成功率を減らすべきでしょうか?一般的に、Recallはこれに反応するようです。あなたの意見では、私たちの場合、このような組み合わせの結果は互いに比較可能であるべきでしょうか?それとも、データは取り返しがつかないほど古くなっているのでしょうか? 1...327432753276327732783279328032813282328332843285328632873288...3399 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
非正規化相互相関 )
相互共分散。ピアソンが必要。
ピアソンが必要だ。
どうしたらいいのかわからないし、眠いし。
似たようなものだ。
ーどうしたらー、ーどうしたらー
似たようなもの
うん、それじゃない。
その通りだ。
もう少しで何かわかるから調べてみて。
長い文字列の中から似たような短い文字列を素早く見つけようとする。
Alglibを使ったこのような実装では、100万番目の文字列の中から似たような短い文字列(300個)を探すのに6秒以上かかる。
それを高速化した。
結果はこうだ。
今度は300ミリ秒。
あと300ミリ秒だ。
どんなマトリックスでもできないのに。
10Mの文字列から30Kの類似文字列を見つけるのに3秒かかる。
どのマトリックスも対応できないとき
10Mのストリングから30Kの類似したストリングを見つけるのに3秒かかる。
300/1Mはftではなく、30K/10Mがftです。
どのマトリックスも対応できないとき
10Mの文字列から長さ30Kの類似文字列を見つけるのに3秒かかる。
印象的な結果だ!
2010年から2023年までのサンプル(4万7000行)を取り、時系列で3つのパートに分け、これらのパートを入れ替えたらどうなるか見てみることにした。
サブサンプルのサイズは、トレーニング60%、テスト20%、試験20%である。
私はこれらの組み合わせを作った(-1) - これは標準的な順序である - 時系列順。各サブサンプルにはそれぞれの色があります。
各サンプルのセットに対して異なるSeedで101個のモデルを訓練し、以下の結果を得た。
すべての指標は標準的であり、モデルの平均利益(AVR Profit)、およびトレーニングに参加しなかった最後のサンプルで利益が3000ポイントを超えたモデルの割合を決定することは困難であることがわかります。
たぶん、トレーニング・サンプル・サイズにおける-1と0のバリアントの相対的な成功率を減らすべきでしょうか?一般的に、Recallはこれに反応するようです。
あなたの意見では、私たちの場合、このような組み合わせの結果は互いに比較可能であるべきでしょうか?それとも、データは取り返しがつかないほど古くなっているのでしょうか?