ネイティブの方が遅いというのは不思議だ。It is unlikely that Alglibe has some unique accelerated algorithm under licence.
Have you tried the other 2 variants from Alglib? If you count in loops every row to every row or every row to all rows, memory will be more economical (2 rows or 1 row + matrix).しかし、正確には覚えていませんが、組み込み関数よりも時間がかかると思います。
in statistics.mqh.
functions
PearsonCorrM - すべての行のすべての行に対する相関が最も速い。
どこか間違っているのだろうか。
しかし、次の文字列では動作する。
const matrix<double> matrix1 = {{2, 2, 3}, {3, 2, 3}, {1, 2, 1}};
[0,0,0]
[0.8660254037844387,0,1]]
どうやら、ある列のデータがすべて同じであれば、計算はスキップされるようだ。
列目のデータはすべて2のままにしておいたので、行列の2行目は0のままだった。対角線を1で埋めるのが正しいのだろうが。
追記最初はAlglibのバグだと思った。
古いコードでは要素の値は
m[row].Set(col, val);
そして現在は
m.Set(row,col, val)で設定されていました;
後方互換性がないのは残念だ。まあ、私には関係ないことだ。私は今Alglibを使って仕事をしているわけではない。
一番悲しいのは、古いバージョンの
m[row].Set(col, val);
がエラーメッセージを書かず、ただ何もしないことだ。人々はただ置き換えないだけで、コードを変更する必要があることに気づかない。しかし、行列は変更されません。
どうやら、ある列のデータがすべて同じ場合、計算はスキップされるようだ。
ピアソンは行間ではなく列間で計算するのか?
そのようだ。 1つの行列が得られます。ピアソンは行間ではなく列間で計算するのですか?
ZY そのようです。単位行列ができます。Alglibは良いライブラリで、MOに必要なものはすべて揃っている。初期のバージョンではそうだった。
in statistics.mqh.
PearsonCorrM - すべての行に対するすべての行の相関が最も速い。
これに基づいて相関行列を計算した。
性能を測定した。
結果は
Alglibは標準的な行列法よりも高速に行列を計算することがよくわかる。
しかし、パターン検索の場合、相関行列の計算はRAM消費の点で非常識だ。
上の例と同じサイズの元行列をPythonが読み込むのにどれくらい時間がかかるだろうか?
しかし、パターンを見つけるために相関行列を読み込むのは、RAMを消費する狂気の沙汰だ。
私のi7-6700では、内蔵の方が速く動作した。
ネイティブの方が遅いというのは不思議だ。It is unlikely that Alglibe has some unique accelerated algorithm under licence.
Have you tried the other 2 variants from Alglib?
If you count in loops every row to every row or every row to all rows, memory will be more economical (2 rows or 1 row + matrix).しかし、正確には覚えていませんが、組み込み関数よりも時間がかかると思います。
しかし、パターンを見つけるために相関行列を読み込むのは、RAMを消費する狂気の沙汰だ。
起動前
そして、Alglibov PearsonCorrMの作業中、メモリはどんどん増えていく。
標準のMatrix.CorrCoefの実行中も、メモリが増え続けている。
どうやら、標準のものはメモリ使用量が最小になるように最適化されており、Alglibovのものは速度が速くなるように最適化されているようだ。
i7-6700で、内蔵の方が速く動くようになった。
そして、AlglibのPearsonCorrMを実行している間、メモリは増え続け、5ggが表示され、4,6が画面に表示された。
取引、自動取引システム、取引戦略のテストに関するフォーラム
トレーディングにおける機械学習:理論、モデル、実践とアルゴ-トレーディング
fxsaber, 2023.09.25 18:01
これはCMatrixDoubleから matrix<double>への 移行に過ぎません。メモリの関係で、この行列の比較までしなければならなかった。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
トレーディングにおける機械学習:理論、モデル、実践、アルゴトレーディング
fxsaber, 2023.09.25 18:01