Ticarette makine öğrenimi: teori, pratik, ticaret ve daha fazlası - sayfa 3270

 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi üzerine forum

Ticarette Makine Öğrenimi: Teori, Modeller, Uygulama ve Algoritma Ticareti

Maxim Dmitrievsky, 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))

korelasyonlar = residual_products / sum_products

Bu, korelasyon matrisinin kafa kafaya hesaplanması gibi görünüyor.

 
fxsaber #:
Doğru, teşekkürler! Yanlış seçeneğin inCols < 100 ile neden çalıştığını anlamıyorum.

Görünüşe göre

Sens = 1 e-10
çok fazla. Rastgele - oradaki ortalama korelasyon muhtemelen yaklaşık 0'dır.
 
Forester #:

Muhtemelen çok fazla. Rastgele - muhtemelen yaklaşık 0'lık bir ortalama korelasyon vardır.

Burada ölçülen ortalama hata değil, ilgili unsurlar arasındaki maksimum farktır.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi üzerine forum

Ticarette makine öğrenimi: teori, modeller, uygulama ve algo-ticaret

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);
}


Bu yüzden yanlış kodun nasıl

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

bir maç alır.

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 #:
Ve PearsonCorrM2, üçgenle sayarsanız 2 kat hızlandırılabilir.yani sondan gidin. 100. satırı tümüyle sayın, sonra 99'u tümüyle 0-99, 99 ve 100. zaten sayıldı - sadece kopyalayabilirsiniz. ...50. satırı tümüyle 50'ye kadar, vb. Peki, kendisiyle saymayın çünkü =1.
Korkarım bir anlamı yok.
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 
Korkunç fren yine de yavaşlayacaktır. Burada, kesin olarak, kendi yaptığınız araçlar olmadan yapamazsınız.
 
fxsaber #:

Bu yüzden yanlış kodla nasıl yapılacağı belli değil.

bir maç alır.

Anladım, eğer matris hesaplamalarını değiştirirseniz, bir uyumsuzluk elde edersiniz.

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 

Yani, ilk matrisin hesaplanması sırasında bellekteki çöpler yeni matrise girdi ve bir mucize eseri istenen sonuçla çakıştı.

 
fxsaber #:

Sanırım bu korelasyon matrisinin kafa kafaya hesaplanması.

Evet, yeni matrisler üzerinde döngü olmadan μl yaparsak daha hızlı olmaz mı?
 
fxsaber #:
196

500 saniyeye karşı 14 saniye - bu yüzden

PearsonCorrM

algoritma nedeniyle en hızlısı.

Maxim Dmitrievsky #:
Evet, yeni µl matrisler üzerinde yaparsanız daha hızlı olmaz mı?

PearsonCorrM ve PearsonCorrM2'de kullanılan 9 fonksiyonun hepsinin matrislere yeniden yazılabileceğini ve karşılaştırılabileceğini düşünüyorum. Prensip olarak, matris bildirimlerini ve referanslarını yeniden yazmak bir saatlik bir çalışma gerektirecektir. Aynı zamanda matrislerin din. dizilerden daha iyi olup olmadığını öğreneceğiz.

Başlıklar
IsFiniteMatrix(
IsFiniteVector(
AblasInternalSplitLength(
AblasSplitLength(
RMatrixGemmK(
RMatrixGemm(
RMatrixSyrk2(
RMatrixSyrk(
RankX(

 
Forester #:

PearsonCorrM ve PearsonCorrM2'de kullanılan 9 fonksiyonun hepsinin matrislere yeniden yazılabileceğini ve karşılaştırılabileceğini düşünüyorum. Prensip olarak, matris duyurularını ve referanslarını yeniden yazmak bir saatlik bir çalışma alacaktır. Aynı zamanda matrislerin din. dizilerinden daha iyi olup olmadığını öğreneceğiz.

Her şey zaten yapıldı: MQ bunları matrisleri için yeniden yazdı.

Forester #:

500 saniyeye karşı 14 - bu yüzden hatırladım.

algoritma nedeniyle en hızlısıdır.

Oradaki algoritmayı fark etmemiştim. NumPy sadece tekrarlanan hesaplamalar yapmadığı için çok geride kalmıyor.

NumPy, ALglib'den farklı bir algoritmaya sahip gibi görünüyor, çünkü performans çok farklı. Ancak, tüm bu büyük Python topluluğunda, bu konuyu incelemek için yeterli miktarda zaman ayıran çok güçlü bir algoritmacı olduğu açıktır.
 
fxsaber #:

Bu çoktan yapıldı: MQ'lar bunları kendi matrislerine uyacak şekilde yeniden yazdılar.

Ve yavaşladı mı?)

 
Forester #:

Ve yavaşladı mı? ))))

Alglib'in eski sürümüyle karşılaştırın. Yavaşladığına dair elimde bir veri yok.