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

 
Maksim Dmitrievski :

Evet, sadece benim dönüşüm fonksiyonum, bir çekirdek değil, cos ve rastgele derece ile

RDF, dosya ise kendi yapısını kaydeder, bu nedenle çok fazla örnek veya özellik varsa - dosyalar çok büyük olabilir, milyon ajandan emin değilim :) Ama farklı özelliklerle ajan sayısını artırarak sınıflandırma hatasını azaltabilir ve model kararlılığını artırabilirsiniz

Bir sonraki an - deneyimime göre, daha büyük veri != yeni verilerde daha iyi doğruluk. Tahminciler kötüyse, sonuç aynı kötü olacaktır.

ayrıca gdmh son derece küçük veri kümeleriyle çalışabilir ve gelecekteki veriler için iyi tahmin edebilir

Ama.. lojistik regresyon + gdmh (RDF yerine) gibi basit bir model uygulayabiliriz, bu nedenle öğrenme süreci çok hızlı olacak, ancak doğruluğunu bilmiyorum

GMDH ile ilgili olarak, GMDH'den ilk bahsettiğinizde size tam olarak bunu bildirmiştim. GMDH'nin kendisi bir Sinir ağı olarak hareket ettiğinden ve dolayısıyla burada RDF kullanımı yoktur.

 
Maksim Dmitrievski :

evet farklılıklar var. RDF ile karar vermek için tüm düğümlerden ve yapraklardan geçmesi gerekir. Dolayısıyla, ATY yapısı büyükse - her karar için daha fazla zaman alacaktır.

Bunun için hızlı yanıt veren son derece hızlı modeller (hızlı öğrenilen NN) kullanmak daha iyidir. Veya GPU dahil daha iyi donanım

Bir sorun daha - RDF, verilerdeki gürültüye karşı hassastır, bu nedenle neredeyse her zaman gereğinden fazla takılır. Gürültünün bu etkisini azaltmak için, algoritmaya LDA veya PCA katmanını yerleştirmek iyidir

yani bu ilk bakışta göründüğü kadar önemsiz bir iş değil

Mevcut RDF uygulamanız ile önceki RDF sürümünüzün tamamen farklı olduğunu mu söylüyorsunuz? Bu RDF sürümü politika veya başka bir şey kullanıyor mu? ".rl" dosyalarından emin değilim. Bunların önceki sürümünüzün "Mtrees" dosyalarına benzer olduğunu düşündüm.

Bakalım eğitim ve testlerde neler oluyor. Modellerin ve aracıların çok büyük değerlerde düzgün çalışmadığını fark ettim. Örneğin, aracıları 100'e ve modelleri 100'e ayarladım. Aracılar çalıştı, ancak modeller her aracı için 50'de çalışmayı durdurdu. Hangi sebeple bilmiyorum.

Bu arada, temel kodu zaten uyguladığınız için algomu RDF ile test ediyorum, çünkü önceki sürümünüzde binlerce ve binlerce farklı optimizasyon ve test kombinasyonu yaptım ve bu nedenle, önceki sürümünüzü tam olarak anlıyorum. RDF'nin sürümü. Aksi takdirde, "ALPHA ZERO" da kullanılan "Monte carlo" algo'nun tam kodunu algoma entegre etmek için yazmak zorundayım ki bu da uzman bir programcı olmadığım için benim için biraz zaman alabilir.

 
Maksim Dmitrievski :

Merhaba, başlangıç için şu kodu bulmaya çalışın:

Burada her 1 özellik (1 giriş) ile RDF'yi öğreniyoruz ve en iyi özellik numaralarını sıralanmış bir dizide (modeller) kaydediyoruz. Sonra en iyi birkaçını seçebiliriz

Sonraki adım - en iyi tahmin edicileri diğerleriyle birleştirmeli ve bir hatayı tekrar kontrol etmeli ve sonucu kaydetmeliyiz. Bu adımda bazı polinom denklemlerini uygulayabiliriz.

Tamam, şimdi bu kodla GMDH'nin nasıl uygulanacağını göreyim.

Kodu ne kadar çok açıklayabilirsen, o kadar hızlı bir köprü bulabilirim. Aslında benim sorunum, sınıf, nesneler, diziler vb. gibi bazı temel C++ kavramlarının sözdiziminde biraz zayıfım ve bu nedenle, bu kavramların uygulanmasını anlamak için daha fazla zaman harcıyorum, aksi takdirde, doğrudan GMDH'nin sınıf dosyasını yazardım ve verilen sana.

neyse bakayım..

Lütfen bu 3 satırı bana doğru bir şekilde açıklayın. Bence GMDH'yi uygulamamız gereken şey şu:

        m[i].Set( 0 ,RDFpolicyMatrix[i][bf]); 
        m[i].Set( 1 ,RDFpolicyMatrix[i][bf+ 1 ]);
        m[i].Set( 2 ,RDFpolicyMatrix[i][bf+ 2 ]);

Yani lütfen bu 3 satırı yorumlayın

Sanırım önceki kodumda döngüde küçük bir hata yaptım. Bu yüzden, RDF hakkında tam olarak ne yazdığınızı biliyorsanız, burada sağlanan köprü olduğunu düşünüyorum :))...çünkü matris uygulaması hakkında fazla bir şey bilmiyorum...

 ///---Remaining values of Y starting from Y_1
   for ( int i= 1 ;i< 3 ;i++)
  m[i]=CalculateNeuron(a); ///---Calculate individual value of Y_1,Y_2,Y_3,...to feed to RDF inputs
 
 
Maksim Dmitrievski :

bu 2d dizi (matris), "alglib" kitaplık formatıdır, onu sadece tahmin edici (bf) (matris 0 dizini) ile dolduruyoruz, sonraki (1,2) çıktı değerleri .. burada hata :) ayarlamanız gerekiyor "özellikler" ve "özellikler-1" indeksli değerler

m - 1 özellik ve 2 çıkış içeren mevcut matrisimiz, ancak RDFpolicyMatrix tüm özellikleri + çıkışları içerir

sabit

buradan okuyabilirsiniz http://www.alglib.net/dataanalysis/generalprinciples.php#header0

Tamam, bazı yanlış anlaşılmalar var...bunu GMDH'ye nasıl bağlayacağımı öğrenmek için kodu tekrar kontrol edeyim...

Fikriniz varsa, beni güncelleyin ki düşünerek zaman kaybetmek zorunda kalmayayım :))

RDF ve GMDH'nin benzer olduğunu düşünüyorum ve bu nedenle birbirleriyle entegre olmaları zorlaşıyor...

Bir daha düşüneyim....

 
Maksim Dmitrievski :

hayır, entegrasyonu kolay .. gdmh ile sadece girdi vektörlerini değiştiriyoruz, sadece bazı dönüşümler

bir sonraki adımda, tahmin edici gruplarını kontrol edeceğiz, hangisiyle birleştireceğiz (önceki seçimden sadece birkaçı)

Ardından, bu döngü, bahsettiğiniz özellik dönüşümü için hepsini yapabilir:

Ardından, Neuron'u hesaplama işlevi budur:

Ardından, Y_Final=Y_All+Y_0;

Şimdi girdileri 3 parçaya böldük ve gerekirse herhangi bir sayıya genişletebiliriz..

Burada girdiler özellikler veya tahmin edicidir ve ağırlıklar rastgele ağırlıklardır ... bunları başlangıçta rastgele işlevden alabiliriz ve daha sonra bunlar eğitimden sonra RDF'de saklanacaktır.

 
Maksim Dmitrievski :

şimdi matrix için yeniden yapmayı deneyin))

ama.. burada bir toplama ihtiyacımız yok, her adımda ayrı öngörücülere ihtiyacımız var, sadece matrisimizi ek özellikler için genişletin ve ekleyin ve hataları tekrar kontrol edin

tamam, biraz zaman ver ve yakında hazır ol

Tamam, burada sorun yok, ayrı tahminciler için "+" işaretini kaldırmanız yeterlidir; bireysel tahminciler alırsınız:

 /// --- Remaining values ​​of Y starting from Y_1 
   for ( int a = 1 ; a < 3 ; a ++) 
  Y_All [a]=CalculateNeuron (a); /// --- Calculate the individual value of Y_1, Y_2, Y_3, ... to feed to RDF inputs...Here feature transformation done

Ama eğer daha iyi yöntemleriniz varsa bu da harika :)).

Bu kodu sadece bir saatte yazdım ve bu kodu hiç sevmiyorum :))

Matrix beynime girmiyor :)))))))))))))))))))))))))))))))
 
Maksim Dmitrievski :

hehe.. 2d matrisi sıralamaya ne dersiniz? :)

Ayrıca, EA'nın son versiyonunda en az birkaç çeşit tahmin edici daha uygulamanızı rica edeceğim:

1.Bazı osilatör göstergeleri

2.Bazı eğilim göstergeleri

3. Bazı ses seviyesi göstergesi

4. Daha yüksek zaman dilimlerinden bazı göstergeler (Gürültülü sinyaller için iyi filtre)

5.Bazı doğrudan kapanış fiyatları

Yoksa bir şeyler eklemem gerektiğinde size sormaya devam etmek zorundayım :)))...

Eğer piyasa değişimine göre her mumdan bir sistemden diğerine anında geçiş yapabiliyorsa gerçekten harika olur!!..Aslında bu sürümden spline, özellik dönüşümlerinden bahsettiğinizde asıl amaç buydu aslında benim de asıl amacım buydu. ve çekirdek hilesi vb... Çekirdek hilesi, büyük veriler için normal bir sunucuda bile hesaplamayı çok daha hızlı hale getirmeye yardımcı olabilirdi.

Bu arada, son 2 günlük ileriye dönük testten sonra, RDF'nin bu sürümünün önceki RDF sürümüne kıyasla biraz daha kararlı ve güvenilir göründüğünü söylemeliyim.. İleriye dönük test, geriye dönük test ile biraz eşleşiyor. çoğunlukla optimizasyon verileriyle aşırı uyumlu

 
Maksim Dmitrievski :

önceki versiyon sadece temel fikirlere sahip bir konseptti

Fiyatları kapatmak yerine gösterge(ler)in kendisini ekleyebilirsiniz

Hayır, tek bir gösterge değil.. "ag1.agent" dizi döngüsünde aynı anda birden fazla gösterge uyguladığımda kafam karıştı.

Toplam 100 Özellik kullandığımda, ancak yakın için 50 ve yüksek için 50 kullandığımda " ArraySize ( ag1.agent )" yerine ne kullanmalıyım

 for ( int i= 0 ;i< ArraySize (ag1.agent);i++)///---here
     {   
       CopyClose ( _Symbol , 0 , 0 ,50,ag1.agent[i].inpVector);
      normalizeArrays(ag1.agent[i].inpVector);
     }
for ( int i= 0 ;i< ArraySize (ag1.agent);i++)///---here
     {   
       CopyHigh ( _Symbol , 0 , 0 ,50,ag1.agent[i].inpVector);
      normalizeArrays(ag1.agent[i].inpVector);
     }

Peki, yukarıdaki kod aşağıdaki gibi bir ajan beyanı için doğru mu?

CRLAgents *ag1= new CRLAgents( "RlExp1iter" , 5 , 100 , 50 ,regularize,learn); ///----Here

İngilizce forumunuza yorum yapan ilk kişi bendim :)))....o günden itibaren tüm sunucularımda ve her türlü ayar kombinasyonunda en az 20.000'den fazla farklı test ve optimizasyon çalıştırdım ve bu nedenle, Genel konsepti daha iyi anlıyorum ... ama asıl sorunum bazen basit kodla bile sıkışıp kalıyorum ....

Ve size söz verebilirim ki, bu algoritma zamanla bir şekilde yakınsamaya başlasa bile, o zaman kodu, yayınlayacağınızdan en az 2 ila 3 kat daha iyi performans gösterecek şekilde optimize edebilirim :))..hepsi sadece deneyimlerime ve gözlemler :)))).

Yoksa aşağıdaki kod doğru mu?

Or

for ( int i= 0 ;i< 50 ;i++) ///---here
     {   
       CopyClose ( _Symbol , 0 , 0 , 50 ,ag1.agent[i].inpVector);
      normalizeArrays(ag1.agent[i].inpVector);
     }
for ( int i= 50 ;i< 100 ;i++) ///---here
     {   
       CopyHigh ( _Symbol , 0 , 0 , 50 ,ag1.agent[i].inpVector);
      normalizeArrays(ag1.agent[i].inpVector);
     }
 
Maksim Dmitrievski :

Çok teşekkür ederim... Artık daha fazla gösterge yapabilirim sanırım :)))))))

 
Maksim Dmitrievski :

Veya buradaki gibi, daha basit

Evet, bunu beğendim..Bu benim tipim :))

Önceki örnek çok şartlı ve daha fazla yordayıcıyı artıramaz ....

Bu arada, bu yöntemi rastgele mum simülasyonları için kullandım...ama ticarete giriş ve çıkış fiyatlarını eğitim için de değiştirmem gerekiyor ve bu yüzden kafam karıştı...

Şimdilik bu gösterge yöntemlerini deneyeceğim..ve test edeceğim ve daha sonra mum simülasyon yöntemini deneyeceğim.çünkü başarılı olursa, o zaman bu, forex piyasasında şimdiye kadar oluşturulmuş herhangi bir makine öğrenimi EA'nın son versiyonu olacak :) )))