Ticarette makine öğrenimi: teori, pratik, ticaret ve daha fazlası - sayfa 254
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Zor görünüyor ve sonuçta kesinlik yok, geçiyorum.
R, GMDH paketine sahiptir (İngilizce'de "MGUA").
Zor çünkü açıklanan her türden çok sayıda algoritma var ve kafanın karışması kolay
bir paket var ama "çürümüş"
Daha basit ve daha kısa yapmaya çalışacağım...
Bu, fiziksel olarak kendi kendini organize eden bir kombinatoryal model değildir.
bu, tüm olası örnek öğe kombinasyonlarının (öngörücüler) aptalca bir numaralandırmasıdır ve polinomlar veya harmonikler öngörücü olarak hareket ettiğinden, bu numaralandırmanın her yinelemesini OOS'ta kontrol eder, o zaman bu tür kombinasyonlar yeni bir düzeye geçerek ve zaten kombinasyonlar yaparak karmaşık hale gelebilir. kombinasyonlar ve tekrar OOS'ta kontrol ve tekrar yeni bir seviyeye vb. OOS'ta yanlışlıkla minimum bulunana kadar, bu kendi kendine örgütlenmenin özüdür (eğer orada her şeyi doğru anladıysam)
Ne önereyim....
Herhangi bir fonksiyonun Şekil 2'deki gibi bir Fourier serisine genişletilebileceğini hepimiz biliyoruz.
Bunun tersi de doğrudur, gerekli harmonik kombinasyonlarının yardımıyla ihtiyacımız olan herhangi bir işlevi elde edebilirsiniz .
şimdi belirli bir fonksiyon (krivulka) veya bir vektör olduğunu hayal edin, buna ne derseniz deyin .. piyasa enstrümanını tamamen tanımlayan ve aynı zamanda onun da önünde olan … bir fonksiyonda ifade edilen bir tür zor mevsimsellik olabilir. veya diğer araçlara bir tür bağımlılık veya ay döngüleri)) bu kesinlikle önemli değil ve biz ölümlüler bunun farkında değiliz ANCAK bu bağımlılığı nerede arayacağımızı bilmeden bile bulabiliriz... buna bağımlılık diyelim - ki piyasayı yönlendirir - süper bağımlılık daha fazla KB
tek gereken
1) yeterli harmonik aralığını alın
2) bir hedef oluşturun
3) harmonikler arasındaki her türlü kombinasyonu sıralamaya başlayın ve OOS'u izleyin
Anlıyor musun?? ne kadar basit ve ne kadar derin, nereye bakacağımızı bilmiyoruz SZ , ancak sentetik olarak kendimiz üretebiliriz !! ve bunun SZ olduğunu OOS aracılığıyla öğreneceğiz.
Yani, basit bir numaralandırma algoritması gibi görünüyor ve arkasında ne kadar güçlü bir anlam olduğunu fark ettiğimde sadece şaşırdım ...
Ama büyük bir AMA var! , trilyonlarca kombinasyon olacak, bunu bir şekilde aşmanız gerekiyor ve bu konuda yardımınıza ihtiyaç var.
genetik bir şekilde iyi kombinasyonlar arayabilir mi?
Fikir ve uygulaması hakkındaki düşünceleriniz nelerdir?
SÖYLEYİN!!! ......
Tanımladığınız şey, sonucu "OOS'ta iyi" olarak ayarlamaktır. İlk olarak, örnek üzerinde iyi bir sonuç olacak şekilde model parametrelerini (harmonik kombinasyonları) seçeceksiniz. Sonra onlardan oos'ta iyi olan parametreleri seçersiniz. Bu, iyi bir sonuç için çifte uygunluktur ve model, büyük olasılıkla yeni ticaret verilerinde işe yaramaz.
Harmonik kombinasyonlarının yardımıyla fiyat hareketini tanımlayabilirsiniz, ancak aynısı bir nöron veya bir orman ile de elde edilebilir. Sanırım bunu bir nöronla yüzlerce kez yaptınız ve işe yaramadı, neden MGUA'nın sonucunun olumlu olacağını düşünüyorsunuz? Forex'te makine öğrenimi, normal görevlerde olduğu kadar basit bir şekilde kullanılamaz, fiyat davranışı zamanla değişir ve bulduğunuz ve kullandığınız bağımlılıkların çoğu çok hızlı bir şekilde ortadan kalkar. Ve tüm bu modeller zamanla değişmeyen sürekli bağımlılıklar için tasarlanmıştır ve bu nedenle böyle bir görevde kâr getirmezler.
Zor çünkü açıklanan her türden çok sayıda algoritma var ve kafanın karışması kolay
bir paket var ama "çürümüş"
Daha basit ve daha kısa yapmaya çalışacağım...
Bu, fiziksel olarak kendi kendini organize eden bir kombinatoryal model değildir.
bu, tüm olası örnek öğe kombinasyonlarının (öngörücüler) aptalca bir numaralandırmasıdır ve polinomlar veya harmonikler öngörücü olarak hareket ettiğinden, bu numaralandırmanın her yinelemesini OOS'ta kontrol eder, o zaman bu tür kombinasyonlar yeni bir düzeye geçerek ve zaten kombinasyonlar yaparak karmaşık hale gelebilir. kombinasyonlar ve tekrar OOS'ta kontrol ve tekrar yeni bir seviyeye vb. OOS'ta yanlışlıkla minimum bulunana kadar, bu kendi kendine örgütlenmenin özüdür (eğer orada her şeyi doğru anladıysam)
Ne önereyim....
Herhangi bir fonksiyonun Şekil 2'deki gibi bir Fourier serisine genişletilebileceğini hepimiz biliyoruz.
Bunun tersi de doğrudur, gerekli harmonik kombinasyonlarının yardımıyla ihtiyacımız olan herhangi bir işlevi elde edebilirsiniz .
şimdi belirli bir fonksiyon (krivulka) veya bir vektör olduğunu hayal edin, buna ne derseniz deyin .. piyasa enstrümanını tamamen tanımlayan ve aynı zamanda onun da önünde olan … bir fonksiyonda ifade edilen bir tür zor mevsimsellik olabilir. veya diğer araçlara bir tür bağımlılık veya ay döngüleri)) kesinlikle önemli değil ve biz ölümlüler bunun farkında değiliz AMA bu bağımlılığı nerede arayacağımızı bilmeden bile bulabiliriz... buna bağımlılık diyelim - ki piyasayı yönlendirir - süper bağımlılık daha fazla KB
tek gereken
1) yeterli harmonik aralığını alın
2) bir hedef oluşturun
3) harmonikler arasındaki her türlü kombinasyonu sıralamaya başlayın ve OOS'u izleyin
Anlıyor musun?? ne kadar basit ve ne kadar derin, nereye bakacağımızı bilmiyoruz SZ , ancak sentetik olarak kendimiz üretebiliriz !! ve bunun SZ olduğunu OOS aracılığıyla öğreneceğiz.
Yani, basit bir numaralandırma algoritması gibi görünüyor ve arkasında ne kadar güçlü bir anlam olduğunu fark ettiğimde sadece şaşırdım ...
Ama büyük bir AMA var! , trilyonlarca kombinasyon olacak, bunu bir şekilde aşmanız gerekiyor ve bu konuda yardımınıza ihtiyaç var.
genetik bir şekilde iyi kombinasyonlar arayabilir mi?
Fikir ve uygulaması hakkındaki düşünceleriniz nelerdir?
Tanımladığınız şey, sonucu "OOS'ta iyi" olarak ayarlamaktır. İlk olarak, örnek üzerinde iyi bir sonuç olacak şekilde model parametrelerini (harmonik kombinasyonları) seçeceksiniz. Sonra onlardan oos'ta iyi olan parametreleri seçersiniz. Bu, iyi bir sonuç için çifte uygunluktur ve model, büyük olasılıkla yeni ticaret verilerinde işe yaramaz.
Bu fikrin düşüncesiyle uyudum ve kendim için bunun saçmalık olduğunu fark ettim, sadece bir uyum ...
Ama soru şu ki, neden diğer her şeye uymuyor? Sonuçta, OOS kontrolü olan herhangi bir eğitimin OOS için bir ayarlama olduğu ortaya çıktı, değil mi? doğru değilse neden?
MGUA sonucunun neden olumlu olacağını düşünüyorsunuz?
Bunu henüz gerçekten anlamıyorum ve asla çözemeyebilirim.
Sadece Nikolai beni kişisel yazışmalarda tavsiye etti - diyorlar ki, mantıklı bir şey inşa etmeye başlamak istiyorsanız, MGUA ile tanışın ve spektral analizi inceleyin
Bununla kendisinin başladığını ve ilk çalışan robotu yarattığında, biri Ivakhnenka "MGUA" diğeri Marple "spectrum. anal" olmak üzere sadece iki kitap kullandığını söyledi.
kitapların başlıklarının çevirisi doğru değil, ne olduğu anlaşılsın diye özetledim sadece
Nikolay kimdir? Mütevazı ve çok akıllı bir insan olmanın yanı sıra
Bu, yapay zeka alanında doktora yapıyor, yaklaşık 20 yıldır robot yapıyor, son robotları şöyle görünüyor:
Yani bir insan bu ağları istediği gibi döndürdü 30 yıl önce, “sinir ağı” gibi kelimeleri henüz bilmediğimiz bir dönemde.....
Ve şimdi bu kişi sadece Fourier ve Mgua'yı öneriyor, sağduyu dinlemeye değer olduğunu söylüyor .. Bunun işe yaraması için nedenlerim burada))
Göstergede yaklaşık olarak aynı anlamı uyguladım. Çok kaynak yoğun. 1000 barlık bir geçmişe göre ayarlayabilirsiniz, 10.000'lik bir geçmişe göre ayarlayabilirsiniz Sonuç şudur: bazen mükemmel çalışır, bir pip fiyatı tahmin eder. Ama diğer zamanlarda yanına bile yaklaşmıyor. Bunun nedeni, tüm bu dönemlerin, yerleşim noktasından sonra piyasada dalgalanmaya başlamasıdır. Muhtemelen mevcut değerlerden - + düzeltmeleri girebilirsiniz, ancak başarılı olamadım.
soru
bir "x" vektörü ve bir "y" matrisi var
"x" ile "y" matrisinin her satırı arasındaki Öklid mesafesini hızlı bir şekilde hesaplamanız gerekir.
Kendim yazarak "dist()" standart işlevini aştım
штатная
system.time( for (i in 1 :nrow(m)) {dist.ve[i] <- dist(rbind(x,m[i,]))})
user system elapsed
4.38 0.00 4.39
самописная
system.time( for (i in 1 :nrow(m)) {dist.ve[i] <- euc.dist(x,m[i,])})user system elapsed
0.65 0.00 0.67
ama bu yeterli değil, ikinci sıfıra kadar hızlandırmak istiyorum 0.0....
başka ne düşünebilirsiniz?
kod:
m <- matrix(data = rnorm( 1000000 ),ncol = 10 )
euc.dist <- function(x1, x2) sqrt(sum((x1 - x2) ^ 2 ))
dist.ve <- rep( 0 ,nrow(m)) # distance vector
system.time( for (i in 1 :nrow(m)) {dist.ve[i] <- dist(rbind(x,m[i,]))})
system.time( for (i in 1 :nrow(m)) {dist.ve[i] <- euc.dist(x,m[i,])})
Ama soru şu ki, neden diğer her şeye uymuyor? Sonuçta, OOS kontrolü olan herhangi bir eğitimin OOS için bir ayarlama olduğu ortaya çıktı, değil mi? doğru değilse neden?
Sabit veriler üzerinde (sabit bağımlılıklara sahip) çapraz doğrulama ve oos testi yararlıdır. Durağan olmayan - işe yaramaz.
Örneğin, aynı algoritmayı kullanarak ancak farklı zamanlardaki veriler üzerinde bir grup modeli eğitebilirsiniz; her model için örnek ve oos üzerindeki karı bulun ve bu iki kar için korelasyonu bulun. İyi bilinen forex modelleri için böyle bir korelasyon genellikle yoktur, yani. numune üzerindeki kar hiçbir şeyi garanti etmez, bu durumda yeni veriler üzerinde sonucu iyileştirmeye çalışmak için çapraz doğrulama yapmak işe yaramaz.
Öte yandan, korelasyon büyük ve pozitifse, modelin bir potansiyeli vardır ve model parametrelerini seçmek ve sonucu iyileştirmek için güvenli bir şekilde çapraz doğrulama yapabilirsiniz.
İşte bir önceki gönderi için bir örnek. Birkaç aylık eurusd açılış fiyatları alınır, model (randomForest) bunlar üzerinde eğitilir ve kısa bir süre içinde yeni verileri tahmin etmek için kullanılır. Hedef değer - bir sonraki çubuk için fiyat artışı (iki sınıf 0 ve 1). Bunların hepsi farklı zaman periyotları için 1000 kez tekrarlanır, ardından korelasyon bulunur.
Sonunda, eğitimdeki ve yeni verilerdeki sonuçların korelasyonunu görebilirsiniz, bu durumda yaklaşık 0.1 olduğu ortaya çıktı, yani. eğitimde bir şeyi değiştirmeniz gerekiyor, bu yaklaşım kar getirmeyecek. Eğitim verileri üzerinde iyi bir sonuç, gelecekte iyi bir sonucu garanti etmez.
TrainModel işlevinde, modellerinizin eğitimini değiştirebilir, çapraz doğrulama yapabilir, genetik tarafından parametre seçimini vb. yapabilirsiniz.
İşte bir önceki gönderi için bir örnek. Birkaç aylık eurusd açılış fiyatları alınır, model (randomForest) bunlar üzerinde eğitilir ve kısa bir süre içinde yeni verileri tahmin etmek için kullanılır. Hedef değer - bir sonraki çubuk için fiyat artışı (iki sınıf 0 ve 1). Bunların hepsi farklı zaman dilimleri için 1000 kez tekrarlanır, ardından korelasyon bulunur.
Sonunda, eğitimdeki ve yeni verilerdeki sonuçların korelasyonunu görebilirsiniz, bu durumda yaklaşık 0.1 olduğu ortaya çıktı, yani. eğitimde bir şeyi değiştirmeniz gerekiyor, bu yaklaşım kar getirmeyecek. Eğitim verileri üzerinde iyi bir sonuç, gelecekte iyi bir sonucu garanti etmez.
TrainModel işlevinde, modellerinizin eğitimini değiştirebilir, çapraz doğrulama yapabilir, genetik tarafından parametre seçimini vb. yapabilirsiniz.
1. neden manuel olarak normalleştiriyorsunuz? ölçek var()
2. Korelasyon açısından -1 ve 1 neden iyidir? sadece 1 iyiyse -1 çok kötü, eğer fikri doğru anlarsam, -1 aynı ters korelasyondur
3. Eğitilen modelin hatasını kayan bir pencerede izlemeyi denediniz mi ve size uymuyorsa modeli yeniden eğitin ve ne olduğunu görün.
4. ve küresel fikir neden her şeyin bu kadar kötü çalıştığı, piyasa durağan değil, özelliklerin oluşumu için başka bir konsept geliştirmeniz gerekiyor, tamamen mantıksal kurallar paradigmasına geçebilir, bana öyle geliyor ki, sayılardan neredeyse tamamen uzaklaşın veya spektral analizi inceleyin)))))
Dün bir fikri bitirmek için doğru şeyi aramak için paketleri karıştırdım, doğru olanı bulamadım ama ilginç bir tane buldum ...
paketin adı - "trend"
https://cran.r-project.org/web/packages/trend/trend.pdf
paket, trendlik ve diğer her türlü şey için çeşitli testler uygular
ör. işlev
mk.test() - trendin özelliklerini verir, peki, yukarı veya aşağı var, başka bir şey var...
pettitt.test() - anladığım kadarıyla, trendin başladığı vektörde bir nokta bulur
sens.slope() - bu fonksiyonla trendin eğim açılarını hesaplayabilirsiniz
ve daha bir sürü güzellik var
Eğilime bir şekilde bilimsel olarak bakabilirseniz, o zaman kontrol etmeniz gerektiğini düşünüyorum) 200 değerlik kayan bir pencerede mk.test() $Zg hesapladım, kapanışa göre gösterge gibi bir şey çıktı
sıfırın üstünde yukarı trend, sıfırın altında aşağı trend
Ve ne? trendleri yakalar ve fiyat yönünü karıştırmaz, macds ve stokastik gibi her türlü vardır.... Genel olarak etkileyici olan şey, trend yönündeki pozisyonun her zaman açık olmasıdır...
bazı dönemlerde kötü para bile kazandırmaz,
ama bu her şey için uygun, ancak M5'i değil de saati alırsanız, o zaman yapabiliriz ve mantıklı bir şey olacaktır.
Karoch, güçlü bir bilgisayarı olan ve zamanı olan, tüm bu testleri trendlik, eğim, açı vb. işlemeye başladı, dört gün içinde saymayı bitirecek ve şu anda oturduğum dizüstü bilgisayarda sadece siteleri izleyebilirsiniz)