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

 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

トレーディングにおける機械学習:理論、モデル、実践とアルゴリズム取引

マキシム・ドミトリエフスキー, 2023.10.01 10:55 AM

residuals_a= a_mat- a_mat. column_means residuals_b= b_mat- b_mat. column_means a_residual_sums= residuals_a. column_sums b_residual_sums= residuals_b. column_sums residual_products= dot_product( residuals_a. transpose, residuals_b)

sum_products= sqrt( dot_product( a_residual_sums, b_residual_sums))

相関= 残差積/ 総和積

これは相関行列を真正面から計算したものと思われる。

 
fxsaber #:
そうか、ありがとう!なぜinCols < 100で間違ったオプションが機能したのか理解できません。

Sens = 1 e-10
度合いが度が度が度が度が度が度が度が度が度が度が度が度が度がーランダム - そこでの平均相関は、おそらく約0です。
 
Forester #:

おそらく多すぎる。ー平均的 な度合いでは度合い0.だろう。

そこで測定されるのは平均誤差ではなく、対応する要素間の最大差です。

ー取引、ー自動売買システムー取引戦略のーに関するーに関するーに関するーに関するーに関するーフォーラム

ー トレーディングにおけるー理論、ー、ーモデル、ー実践ー

fxsaber, 2023.10.01 09:38 pm

bool IsEqual( matrix<double> &Matrix1, const matrix<double> &Matrix2, const double Sens = 1 e-10 )
{
  Matrix1 -= Matrix2;  
  
  const bool Res = (MathMax(MathAbs(Matrix1.Max()), MathAbs(Matrix1.Min())) < Sens);
  
  Matrix1 += Matrix2;
  
  return(Res);
}


ー.ー.ー.ー.ー.ー.ー.ー.ー.ー.

  for (int i = 0; i < (int)Matrix.Rows(); i++)

は一致を取得します。

inRows = 5 inCols = 50 
matrix<double> Matrix1 = CorrMatrix(Matrix) - 242 mcs, 0 MB
matrix<double> Matrix4 = CorrMatrix2(Matrix) - 117 mcs, 0 MB
IsEqual(Matrix1, Matrix4) = true 
 
Forester #:
そして、PearsonCorrM2は、三角形でカウントすれば、2倍のスピードアップが 可能である。100行をすべてで数え、次に99行をすべて0-99で数え、99番目と100番目はすでに数えてあるので、コピーすればよい。 50行をすべてで数え、50番目まで数える。Well, do not count with itself because =1.
ー「ーではー。
inRows = 100 inCols = 15000 
matrix<double> Matrix1 = CorrMatrix(Matrix) - 14196778 mcs, 1717 MB
matrix<double> Matrix4 = CorrMatrix2(Matrix) - 538256223 mcs, 1717 MB
IsEqual(Matrix1, Matrix4) = true 
恐ろしいブレーキはまだ遅くなります。、フランクスのフルトはフランクフルトはフルトののフルトのフルト、フルトのフルトとフルトのフルトとフルトのフルトのフルトと ←ここ重要
 
fxsaber #:

だから、間違ったコードでは、どうすればいいのかわからない。

が一致する。

行列の計算を入れ替えると、ミスマッチが発生する。

inRows = 5 inCols = 50 
matrix<double> Matrix4 = CorrMatrix2(Matrix) - 113 mcs, 0 MB
matrix<double> Matrix1 = CorrMatrix(Matrix) - 214 mcs, 0 MB
IsEqual(Matrix1, Matrix4) = false 

つまり、最初の行列の計算中にメモリにあったゴミが新しい行列に入り込み、奇跡的に目的の結果と一致したのだ。

削除済み  
fxsaber #:

相関行列の真正面からの計算だと思います。

そうですね、新しい行列でサイクルなしでμlを作れば速くなるのでは?
 
fxsaber #:
196

500秒対14秒。

PearsonCorrM

最速だったと記憶しています。

Maxim Dmitrievsky#:
そうですね、新しいμl行列で作れば速くなるのでは?

PearsonCorrM と PearsonCorrM2 で使われている 9 つの関数はすべて行列に書き換えて比較できると思います。原理的には、行列の宣言と参照を書き直すのに1時間かかるでしょう。同時に、行列がdin.配列より優れているかどうかも分かるだろう。

タイトル
IsFiniteMatrix(
IsFiniteVector(
AblasInternalSplitLength(
AblasSplitLength(
RMatrixGemmK(
RMatrixGemm(
RMatrixSyrk2(
RMatrixSyrk(
RankX(

 
Forester #:

PearsonCorrM と PearsonCorrM2 で使用されている 9 つの関数は、すべて行列に書き換えて比較できると思います。原則的には、行列の発表と参照を書き換えるのに1時間かかるでしょう。同時に、行列がディン配列より優れているかどうかもわかるだろう。

MQはマトリックスに書き換えている。

フォレスター#:

500秒 vs 14 - そういえばそうだった。

アルゴリズムが最速だった。

そのアルゴリズムには気づかなかった。NumPyが大きく遅れをとっていないのは、繰り返し計算を行わないからに他ならない。

NumPyはALglibとは異なるアルゴリズムを持っているようだ。しかし、巨大なPythonコミュニティの中に、この問題の研究にそれなりの時間を費やした非常に強力なアルゴリズム研究者がいたことは明らかです。
 
fxsaber #:

MQが自分たちのマトリックスに合うように書き換えたのだ。

それで遅くなったのか?)

 
Forester #:

さらに遅くなった?)

旧バージョンのAlglibと比較してください。遅くなったというデータはありません。