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

 
Maxim Dmitrievsky #:
Küçük TF'lerde bellek taşması. Bellek 16 osu ve takas dosyası (mac'te takas) 30gig ile taşar. Örneğin, 50k x 50k korelasyon matrisi var.

Görünüşe göre, Python'un bazı özellikleri, çünkü algoritma MQL'de aynı.

  1. Pos-değişkeninin 1d-dizisi üzerinde çalıştırın.
  2. [Pos-n, Pos] - başka bir kalıp.
  3. Bu kalıba ve 1d-dizisine benzer bir şey uyguladık.
  4. MathAbs(corr[i]) > 0.9 olduğu durumlar bulduk.
  5. Bu yerlerde fiyat davranışının önündeki m çubuklarına baktık ve ortalamasını aldık.
  6. Çok fazla yer bulduk ve bunların ortalamasını güzelce aldık mı? - desen verilerini kaydettik (adım 2'deki değerler).
  7. Pos++ ve s.2'de.

Bu bir ön varyanttır. Bir elek ile daha da hızlıdır.


Bir milyon çubuk olduğunu varsayalım. Dizinin uzunluğu 10'dur. O zaman 10 milyon çift değer için 1d-dizi 80 Mb. nokta 3. - Peki, bellek tüketimi açısından 500 Mb olsun. Neyi hesaba katmadım?

 
fxsaber #:

Python'un bazı özellikleri olmalı, çünkü algoritma MQL'de de aynı.

  1. Pos-değişkenlerinin 1d-dizisinden geçiyoruz.
  2. [Pos-n, Pos] - başka bir kalıp.
  3. Bu kalıba ve 1d-dizisine benzer bir şey uyguladık.
  4. MathAbs(corr[i]) > 0.9 olduğu durumlar bulduk.
  5. Bu yerlerde fiyat davranışının önündeki m çubuklarına baktık ve ortalamasını aldık.
  6. Çok fazla yer bulduk ve bunların ortalamasını güzelce aldık mı? - desen verilerini kaydettik (adım 2'deki değerler).
  7. Pos++ ve s.2'de.

Bu önden bir varyant. Elek daha da hızlı.


Bir milyon çubuk olduğunu varsayalım. Dizinin uzunluğu 10'dur. O zaman 10 milyon çift değer için 1d-dizi 80 Mb. s.3. - Peki, bellek tüketimi açısından 500 Mb olsun. Neyi hesaba katmadım?

Tüm satırların matrisinin tüm satırlarla korelasyonu, döngülerden (her diğer satıra 1 satır) veya hatta bir döngüden (tüm satırlara 1 satır) çok daha hızlı kabul edilir. Algoritma nedeniyle orada bir tür hızlanma var. Korelasyon hesaplamasının alglib sürümünde kontrol ettim.
 
Forester #:
Tüm satırların matrisinin tüm satırlarla korelasyonu, döngülerden (her diğer satıra 1 satır) ve hatta döngüden (tüm satırlara 1 satır) birçok kez daha hızlı kabul edilir. Algoritma nedeniyle orada bir tür hızlanma var. Korelasyon hesaplamasının alglib versiyonunda kontrol ettim.

Bana kodu ver, kontrol edelim.

 
fxsaber #:


  1. MathAbs(corr[i]) > 0,9 olduğu durumlar bulduk.

MathAbs () bana gereksiz görünüyor

 
fxsaber #:

Python'un bazı özellikleri olmalı, çünkü algoritma MQL'de de aynı.

  1. Pos-değişkenlerinin 1d-dizisinden geçiyoruz.
  2. [Pos-n, Pos] - başka bir kalıp.
  3. Bu kalıba ve 1d-dizisine benzer bir şey uyguladık.
  4. MathAbs(corr[i]) > 0.9 olduğu durumlar bulduk.
  5. Bu yerlerde fiyat davranışının önündeki m çubuklarına baktık ve ortalamasını aldık.
  6. Çok fazla yer bulduk ve bunların ortalamasını güzelce aldık mı? - desen verilerini kaydettik (adım 2'deki değerler).
  7. Pos++ ve s.2'de.

Bu önden bir varyant. Elek daha da hızlı.


Bir milyon çubuk olduğunu varsayalım. Dizinin uzunluğu 10'dur. O zaman 10 milyon çift değer için 1d-dizi 80 Mb. s.3. - Peki, bellek tüketimi açısından 500 Mb olsun. Neyi hesaba katmadım?

Python'daki hiçbir kütüphanenin bunu hesaplayamaması beni şaşırttı, bu yüzden kafam karıştı.

Pandas RAM'i taşırır, ek yük devasa boyuttadır.

Nampai sadece çöküyor ve yorumlayıcı oturumunu öldürüyor :) herhangi bir hata göstermeden.

Bir elek yapabilirsiniz, ancak tüm kodu yeniden yazmanız gerekir.
 
fxsaber #:

Bana kodu ver, kontrol edelim.

in statistics.mqh.

functions
PearsonCorrM - Tüm satırların tüm satırlarla korelasyonu en hızlısıdır.

//+------------------------------------------------------------------+
//| Pearson product-moment correlation matrix                        |
//| INPUT PARAMETERS:                                                |
//|     X   -   array[N,M], sample matrix:                           |
//|             * J-th column corresponds to J-th variable           |
//|             * I-th row corresponds to I-th observation           |
//|     N   -   N>=0, number of observations:                        |
//|             * if given, only leading N rows of X are used        |
//|             * if not given, automatically determined from input  |
//|               size                                               |
//|     M   -   M>0, number of variables:                            |
//|             * if given, only leading M columns of X are used     |
//|             * if not given, automatically determined from input  |
//|               size                                               |
//| OUTPUT PARAMETERS:                                               |
//|     C   -   array[M,M], correlation matrix (zero if N=0 or N=1)  |
//+------------------------------------------------------------------+
static bool CBaseStat::PearsonCorrM(const CMatrixDouble &cx,const int n,
                                    const int m,CMatrixDouble &c)

PearsonCorr2 - Satırdan satıra korelasyon. Tam bir matris için: 1. satır 1'den sonraki tüm satırlarla, 2. satır 2'den sonraki tüm satırlarla vb. kontrol edilir.

//+------------------------------------------------------------------+
//| Pearson product-moment correlation coefficient                   |
//| Input parameters:                                                |
//|     X       -   sample 1 (array indexes: [0..N-1])               |
//|     Y       -   sample 2 (array indexes: [0..N-1])               |
//|     N       -   N>=0, sample size:                               |
//|                 * if given, only N leading elements of X/Y are   |
//|                   processed                                      |
//|                 * if not given, automatically determined from    |
//|                   input sizes                                    |
//| Result:                                                          |
//|     Pearson product-moment correlation coefficient               |
//|     (zero for N=0 or N=1)                                        |
//+------------------------------------------------------------------+
static double CBaseStat::PearsonCorr2(const double &cx[],const double &cy[],
                                      const int n)



Ve PearsonCorrM2 aracılığıyla tüm matrisi 1 matrise ve kontrol edilecek başka bir satıra yazabilirsiniz. Böylece 1 satırı tüm satırlara aynı anda kontrol edebilirsiniz. 10. satır için 10'un üzerindeki satırlarla korelasyon zaten hesaplandığından gereksiz bir iş olduğu açıktır.

static bool CBaseStat::PearsonCorrM2(const CMatrixDouble &cx,const CMatrixDouble &cy,
                                     const int n,const int m1,const int m2,
                                     CMatrixDouble &c)


Yaklaşık 5k*20k'lık bir matrisi kontrol edin. 100*100 ise hızlı olacaktır.
 
Numpy 20k*20k matris 2gb ağırlığında
 
Maxim Dmitrievsky #:
20k*20k Numpy matrisi 2gb ağırlığındadır.

400 milyon çift sayı 3 gigabayt ağırlığındadır.

 
mytarmailS #:

MathAbs () bana gereksiz görünüyor.

İşaretleri ayrıca da kontrol edebilirsiniz. Konu bu değil.

 
fxsaber #:

400 milyon çift sayı 3 gigabayt ağırlığındadır.

Bu anlaşılabilir bir durum, tüm bu sevinç için yeterli hafıza yok.