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

 
Dr.Tüccar :

Değerlendirme sekmesindeki "CSV dosyası" ve "R veri kümesi", veri kaynağını belirtmenin yalnızca farklı yollarıdır. Aynı verileri gönderirlerse, modeli test ederken sonuç aynı olacaktır.

Eğer, çıngırağı başlatmadan önce, yürütün

, o zaman bu aynı dataset_validate artık değerlendirme sekmesinde R veri seti olarak mevcut olacaktır. Ancak, model doğrulamanın sonucu, csv dosyası seçeneğini seçmeniz ve C:/dummy_set_validation.csv dosyasını belirtmeniz ile aynı olacaktır, her iki durumda da test verileri aynı olacaktır.

Eğitimin kendisi farklı bir dosyadaydı, dummy_set_features.csv, bu nedenle burada geleceğe bakmak imkansızdır, çünkü her iki dosyadaki veriler farklıdır ve zamana bağlı değildir (ancak formüle). Bence nöron mükemmel bir iş çıkardı ve sonucu belirleyen 6 girdi buldu, kalan girdilerin etkisini azalttı ve istenen formülü sinirsel mantığının bir kısmı ile açıkladı.

Her ihtimale karşı, yinelenen satırları bulmak için her iki dosyayı da kontrol ettim, hala var olup olmadıklarını asla bilemezsiniz. İşte R kodu:

Bu, çıngırak başlatılmadan önce yapılırsa, hem dataset_train hem de dataset_validate tabloları eğitim ve model doğrulama için kullanılabilir olacak, bunlarda tekrar olmayacak. Zafer R.

Model doğrulama dosyası, eğitim setinden 23 tekrar içeriyordu, ancak buna ek olarak, içinde 3000 benzersiz satır daha var, bu nedenle bu, modelin değerlendirmesini önemli ölçüde etkileyemedi.

Görünüşe göre ne istediğimi açıklayamıyorum.

1. Her iki dosya için de başlangıç ve bitiş tarihleri verebilir misiniz?

2. Dataset_validate dosyasından hiçbir şey kaldırılamaz, çünkü bu dosya bar geldikten sonra barı taklit eder.

 

Sabahtan beri bunu düşünüyorum, aslında o kadar basit değil.

Formülünüze göre, kullanılan toplam 2^6 = 64 giriş kombinasyonu vardır. Öğrenme algoritması bir şekilde bu 6 girdinin önemini belirlerse, 64 kombinasyonun hepsini de hatırlayabilir. Ve doğrulama setindeki tüm girdilerin kombinasyonunun benzersiz olması artık önemli değil, model sadece bu 6 önemli girdiyi alacak ve zaten bildiği cevabı belirleyecektir. Bir nöronla başıma gelen buydu. Şimdi eğitim dosyasından birkaç 1,3,5,7,9,11 giriş kombinasyonunu kaldırdım, ancak benzer kombinasyonları doğrulama dosyasında bıraktım. Eğitim sırasındaki hata %0'dan önceki gibi kaldı, ancak doğrulama sırasında bu yeni kombinasyonlarda %50'ye yükseldi. Ve bu kötü, Forex'te spread depozitoyu negatife çekecekti. SanSanych haklı, her şey yeniden eğitimle ilgili, yanıldığımı kabul ediyorum.

Görünüşe göre, bu yüzden birçok model Forex'te çalışmıyor, sadece belirli kombinasyonları hatırlıyorlar, ancak yenileriyle baş edemiyorlar.

 
San Sanych Fomenko :

Görünüşe göre ne istediğimi açıklayamıyorum.

1. Her iki dosya için de başlangıç ve bitiş tarihleri verebilir misiniz?

2. Dataset_validate dosyasından hiçbir şey kaldırılamaz, çünkü bu dosya bar geldikten sonra barı taklit eder.

Hayır, doğru, anladım. Söyledikleriniz forex için geçerli ve ben buna katılıyorum. Ama ben Alexey'den gelen dosyalardan bahsediyordum ve modeli onlar üzerinde eğitiyordum.

https://c.mql5.com/3/96/dummy_set_features.zip - eğitim

https://c.mql5.com/3/96/dummy_set_validation.zip - doğrulama

dosyalardaki sonuç "1-mod(sum(input_1; input_3 ; input_5 ; input_7 ; input_9 ; input_11);2)" formülüyle belirlenir.

Lütfen bahsettiğiniz dosyaların linkini verin, onlara bir nöron yetiştirmeye çalışacağım.

 
Çocuklar,

Önemli özelliklerin altını çizmeme rağmen, ormanın tüm veriler üzerinde yeniden eğitildiği fikrini doğru bir şekilde kavradım. Onun için verileri temizlemeniz ve tekrar eğitmeniz gerekiyor.

NN, veri temizlemeden normal şekilde öğrendi mi?

teşekkürler
 
Dr.Tüccar :

Hayır, doğru, anladım. Söyledikleriniz forex için geçerli ve ben buna katılıyorum. Ama ben Alexey'den gelen dosyalardan bahsediyordum ve modeli onlar üzerinde eğitiyordum.

https://c.mql5.com/3/96/dummy_set_features.zip - eğitim

https://c.mql5.com/3/96/dummy_set_validation.zip - doğrulama

dosyalardaki sonuç "1-mod(sum(input_1; input_3 ; input_5 ; input_7 ; input_9 ; input_11);2)" formülüyle belirlenir.

Lütfen bahsettiğiniz dosyaların linkini verin, onlara bir nöron yetiştirmeye çalışacağım.

Arşivde saklayın.

Bu Rdata. Açık R, yük çıngırağı ve veri çerçeveleri ondan temin edilebilir

"R1.F1" "R1.F3" "R1.F4" "R1.F5" "R1.F6" - bu öğrenme içindir, Fi harfi ile gösterilen farklı hedef değişkenlere sahiptir

"R2.F1" "R2.F3" "R2.F4" "R2.F5" "R2.F6" kontrol içindir

"Rat_DF1" "Rat_DF2" "Rat_DF3" tüm hedef değişkenleri içeren dosyadır

Dosyalar:
ALL_cod.zip  3281 kb
 
Alexey Burnakov :
Çocuklar,

Önemli özelliklerin altını çizmeme rağmen, ormanın tüm veriler üzerinde yeniden eğitildiği fikrini doğru bir şekilde kavradım. Onun için verileri temizlemeniz ve tekrar eğitmeniz gerekiyor.

NN, veri temizlemeden normal şekilde öğrendi mi?

teşekkürler
Evet, ilk gönderiden bu görev için her şey böyle. Ancak Forex için NN kullanırsanız, çöp üzerindeki NN de yeniden eğitilecek ve yeni veriler üzerinde daha kötü çalışacaktır, bu nedenle girdi verilerinin seçimi burada da önemlidir.
 
Dr.Tüccar :
Evet, ilk gönderiden bu görev için her şey böyle. Ancak Forex için NN kullanırsanız, çöp üzerindeki NN de yeniden eğitilecek ve yeni veriler üzerinde daha kötü çalışacaktır, bu nedenle girdi verilerinin seçimi burada da önemlidir.

d Test verileri temiz. Yani her alanda bir kalıp var. Gerçek verilerde, eğitim örneğini birkaç parçaya bölmeden ve modeli eğitirken, bir alt örnek veya birkaç alt örnek üzerindeki kontrol göstergeleri olmadan yapılamaz. Bu doğrudan kuraldır.

Ancak rastgele ormanlar gibi kullanıma hazır modellerin yeniden eğitilebilirliğini kontrol etmek için, aptalca gürültü öğrendiklerini görmek faydalı oldu - doğrulama konusunda tam bir saçmalık. Her ne kadar aynı zamanda doğru bir şekilde önemli öngörücüler tanımlanmıştır.

Ancak, 14 tahmin edicinin tamamen gürültü (bağlantı ve çıktısı olmayan rastgele girilen sayılar) olduğu saf verilerde bile, orman bunları eğitim için kullanmaya başladı. ve bu benim daha önce karşılaştığım şey.

Ve bir yön daha, çok önemli. Test durumu, karşılıklı olarak bağımsız gözlemler içerir. Her satır diğerine bağlı değildir. Gerçekte, zaman serilerinde komşu gözlemler bağımlı olacaktır. Örneğin, iki bitişik onay değeri yüksek oranda ilişkili olacaktır. Ve bu nedenle, herhangi bir - vurguluyorum, HERHANGİ BİR - yöntem ham gerçek verilerde başarısız olacaktır. İdeal olarak, gerçek verileri eğitim için hazırlamanın doğru yolu, onları komşu gözlemlerin fiziksel olarak birbirine bağlı olmayacağı şekilde seçmektir. Zaman serileri için bu, 20 pencereli göstergeler alırsanız, eğitim örneğindeki bitişik gözlemlerin en az 20 adımlık bir farkla alınması gerektiği anlamına gelir. Yani aralarında bir ilişki olmasın. Daha sonra istatistikler çalışmaya başlar ve benzer verilerin rastgele kümeleri değil, kalıpların gerçek öğrenilmesi başlar. Umarım beni anlıyorsun.

Bir iş gezisinden döndüğümde, gerçek Forex verileri üzerinde halka açık bir deney de yapacağım. Ve belki pratik olarak kalıplardan kazanç sağlamak amacıyla birlikte yaparız.

Alexey

 
Dr.Tüccar :

Fakat NN bir kara kutu gibi olduğu için çözümün mantığı bilinemez. Ağırlıklara bakabilir, her girdi için ortalama mutlak değeri belirleyebilir ve bir grafik çizebilirsiniz. Ve 1, 3, 5, 7, 9, 11'in diğerlerinden daha önemli olduğunu öğrenin. Ancak aynı zamanda, girdilerin geri kalanı da bir nedenden dolayı kullanılır, hiçbir yerde sıfır ağırlık yoktur. Yani tam tersi çıkıyor, önce eğitimden geçiyor, sonra önemli girdileri belirleyebiliyoruz.

Bazı NN kontrast algoritmasını deneyin. Algoritma, hem girdileri ("manuel" olarak bakarak seçmeniz gerekmez) hem de bağlantıları (ve elbette gizli katman nöronlarını) bağımsız olarak inceleyebilir. Çıktıda, çalışma mantığının kısa bir açıklamasını alın.
 
San Sanych Fomenko :

Arşivde saklayın.

Bu Rdata. Açık R, yük çıngırağı ve veri çerçeveleri ondan temin edilebilir

"R1.F1" "R1.F3" "R1.F4" "R1.F5" "R1.F6" - bu öğrenme içindir, Fi harfi ile gösterilen farklı hedef değişkenlere sahiptir

"R2.F1" "R2.F3" "R2.F4" "R2.F5" "R2.F6" kontrol içindir

"Rat_DF1" "Rat_DF2" "Rat_DF3" tüm hedef değişkenleri içeren dosyadır

Teşekkürler, denedim. Tahmin edicileri seçmek için çok şey yaptığınız görülebilir, çünkü nöron onlardan kolayca öğrendi ve sonucu test veri setine de kaydetti.

Aşağıdaki sonuçlar, R1.F3 ile ilgili eğitime ilişkindir.

1) Rattle'dan komik bir sonuç çıktı. Standart konfigürasyonlu HH, eğitim/doğrulama/test hataları gösterdi - %30/29/%33. R2.F3'te hata - %35. Ancak tüm bunlar sadece iyi bir durum, aslında, farklı bir konfigürasyonda, kolayca eksik veya fazla eğitilmiş olabilir, burada sadece şanslı.

2) Sonra kontrolsüz öğrenme, 200 gizli nöron ile basit bir kaba yaklaşım benimsedim, ağ, sonuç gelişmeyi durdurana kadar eğitildi. Eğitme/doğrulama/test etme/R2.F3 hataları - %2/%30/%27/%45. Bu anlaşılabilir, ağ yeniden eğitildi.

3) Kontrollü öğrenme. Bu, ağaçlardan farklıdır, ancak bir nöronla, onu yeniden eğitmemek için bunu her zaman yapmalısınız. Buradaki nokta, bazen eğitimi duraklatmak ve tren/doğrulama/test sonuçlarını kontrol etmektir. Sonuçları kontrol etmek için altın kuralı bilmiyorum, ancak tamamen normal bir yaklaşım, tren veri kümesi üzerinde eğitim almak, ardından doğrulama ve test veri kümelerindeki hatalara bakmak, doğrulama/test hataları azalmayı bıraktığında eğitimi durdurmaktır. Bu, yeniden eğitime karşı bir tür garanti verir. Tüm bu süreç boyunca R2.F3 kullanılamaz olarak kabul edilir ve üzerindeki test ancak eğitimin bitiminden sonra yapılır. Bu durumda tren/doğrulama/test etme/R2.F3 hataları %27/30/31/37'dir. Burada yine aşırı antrenman gözlemleniyor, ancak küçük. Eğitim sürecini daha önce durdurmak mümkündü, tren hatası belirgin şekilde daha az doğrulama / test hatası haline geldikten sonra, ancak bu zaten tahmin ediyor ... yardımcı olabilir, ancak yapamadı.

"R1.F1" üç değere sahip bir hedef değişkene sahip, Rattle bunu bir nöronla yapamaz ve R'de kendi kodunuzu yazmanız gerekiyor, bu veri setini kaçırdım.

"R1.F4" "R1.F5" "R1.F6", Rattle'daki nöronda 4 hatanın tümü için yaklaşık olarak aynı sonuçları verdi, bana öyle geliyor ki bir nöronla yeterli bir yaklaşım da yaklaşık olarak aynı sonuçları verecektir, ben onlarla daha fazla çalışmadı.

 

Öğretim yöntemleri hakkında.

Burada genellikle uygulanabilir ve iyi bir sonuç veren standart yolu anlattım: https://www.mql5.com/ru/blogs/post/661499

Kısaca açıklamama izin verin: tüm verileri 2 bölüme ayırıyoruz - eğitim ve doğrulama. Doğrulama, uygun gördüğünüz kadar büyük olmalıdır. öyle yaptım. 15 yıllık dakika alıntıları alıyorum. Girişleri ve çıkışları hesaplarım, verileri gözlemler fiziksel olarak farklı olacak şekilde inceltirim (bunları n'nin göstergede kullanılan en büyük pencereden ve geleceğe bakmanın en uzak gecikmesinden daha az olmadığı n çubuklardan alırım) ). Bunun neden doğru olduğunu düşünün. Veriler karşılıklı olarak bağımsız hale gelir.

Ardından, eğitim bölümünü (en büyük) alıyorum - geçmişte en uzak 10 yıl. Çapraz doğrulama için satır dizinleri oluşturuyorum. Yani verileri tarihe göre katı bir şekilde ayırarak 5 eşit parçaya bölüyorum. Çapraz doğrulamada model, derinlik, yineleme sayısı vb. gibi eğitim parametreleri üzerinde yinelenir, dört nokta eğitim bölümünde öğrenme ve beşinci eğitim bölümünde hatayı ölçer. Bunu her seferinde beş parçadan farklı bir test parçası seçerek 5 kez yapar. Bu, beş hata metriği ile sonuçlanır (bir dizi eğitim parametresi için). Ortalamaları alınır ve eğitime dahil olmayan verilerdeki hatanın test değeri olarak beslenirler.

Ayrıca, model bu işi n * m * s * r kez yapar, burada n, m, s, r eğitim parametreleridir. Bu bir ızgara taramasıdır. Yüzlerce yinelemeye ulaşabilir. Rastgele arama veya genetik arama yapabilirsiniz. Ez yuyu bakın.

Ardından, bir dizi eğitim parametresine karşılık gelen çapraz doğrulama için bir hata ölçümleri tablosu elde edilir. Aptalca en iyi sonucu ve bu parametreleri almak gerekir. Ardından TÜM eğitim setini bu parametreler üzerinde eğitin. NN için, yeniden eğitimin gerçekleşmemesi için yineleme sayısı için bir sınır da belirtilecektir.

Ve sonunda, örnek dışı performansı değerlendirmek için modeli 5 yıllık teklifler için doğrularız.

Genel olarak çapraz doğrulama, etkili model eğitimi için açık ara en iyi seçimdir. denemenizi tavsiye ederim.

R'deki paket şapkadır.

İletişime kadar.

Alexey

СОПРОВОЖДЕНИЕ ЭКСПЕРИМЕНТА ПО АНАЛИЗУ ДАННЫХ ФОРЕКСА: первое серьезное обучение модели и результаты
СОПРОВОЖДЕНИЕ ЭКСПЕРИМЕНТА ПО АНАЛИЗУ ДАННЫХ ФОРЕКСА: первое серьезное обучение модели и результаты
  • 2016.02.27
  • Alexey Burnakov
  • www.mql5.com
Начало по ссылкам: https://www.mql5.com/ru/blogs/post/659572 https://www.mql5.com/ru/blogs/post/659929 https://www.mql5.com/ru/blogs/post/660386 https://www.mql5.com/ru/blogs/post/661062