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

 
Dr. tüccar :

tabloları rbind() işleviyle birleştirebilirsiniz
MLP1 <- rbind(Eğitim1, Test)

Test(Tren2) nedir? Ve neden eğitim ve test tablolarını birleştirelim? Üzerinde önceden hazırlanmış eğitimli modeli kontrol etmek için test ayrı olmalıdır.

Her şey istediğiniz kadar kolay ve hızlı olmayacak. Basitçe Reshetov modeline veri alıp gönderebilirsiniz ve modelin kendisi tahmin edicileri taramak, ağırlıkları belirlemek, nöron sayısını ve diğer şeyleri belirlemekle meşgul olacaktır. Ancak sıradan bir nöronla bu mümkün değildir, örneğin bugün burada yazdığım örnekte veya Vladimir Perervenko'nun makalelerinde olduğu gibi nöronun parametreleri çapraz doğrulama ile seçilmelidir.


Orada yazdıklarıma tekrar bakın - https://www.mql5.com/ru/forum/86386/page753#comment_6821981
sadece verilerinizi bu koddaki açıklamaya göre değiştirin ve çalıştırın. Tahminciler arka arkaya alınır ve ortadan kaldırılmazsa, ilk seferde muhtemelen her şey kötü sonuçlanacaktır. Kodu çalıştırdıktan sonra, ayrıca max(gaResult@fitness) komutunu da çalıştırın, bu R2'ye genetik tarafından bulunan en iyi modelin puanını gösterecektir. Skor 1'e yakın veya biraz daha az ise iyi, 0'a yakın veya hatta negatif ise kötüdür.

Ardından, PREDICTOR_COLUMNS içinde, iyi olarak tanımladığınız belirli sütun numaralarını belirtin ve kodu yeniden çalıştırın, model yalnızca bu öngörücüler üzerinde öğrenecektir. İdeal olarak, bulunan genetik tarafından en iyi modelin puanı 1'e yakın olmalı ve eğitim ve test plakasındaki doğruluk 1.00 olmalıdır.

Test tablosu - bu model zaten piyasada işlem görüyormuş gibi, eğitim verilerinden sonra kesinlikle zamanında olmalıdır.

Bu kodla iyi bir şey olmazsa ( KFOLDS=10 ile bile) - o zaman bu kader değildir. İşe yararsa, Reshetov modeline iyi bir alternatif var ve bu kodla daha fazla ilgilenip modeli mql'ye aktarabilirsiniz.

Aslında, Train1 ve Test1 olmak üzere yalnızca iki bölüm vardır.

A Ağı, Train1'de öğrenir ve Test1'de seçilir

Test1 için SetB çalışmaları ve Train1 için seçilir

İki bölümü katladığımızda. NetworkA Test1 için NetworkB Train1 için tüm eğitim bölümü boyunca eğitim sonuçlarını alacağız, ancak bu bölüm bir test bölümü olacaktır. Reshetov'un anlamı budur. Nasıl kontrol etmemi önerdin bilmiyorum ..... kFold bir şekilde bölümlere ayırıyor .... net değil .....

 

Reshetov'un sonucunu tekrarlamak istemiyorum, AI'yı onunki gibi organize etmek istiyorum. Komiteye koçluk yapma şekli. Eğitimin kendisinin zaten mevcut araçlar olacağı açıktır, ancak organizasyon önemli bir rol oynayabilir....

Komut dosyanızı verilerim üzerinde çalıştırmayı deneyeceğim, bakalım ne olacak...

 

Anladım, hemen hemen aynı. Reshetov'da hatlar bir üzerinden alınır (çift üzerinde eğitim, tek üzerinde test) ve benim örneğimde hatlar arka arkaya gruplara ayrılır (1-100 satırlarında eğitim, 101-200 satırlarında test). Forex için bu şekilde, en azından bir tür modelin bilinmeyen farklı bir zaman aralığında çalışıp çalışmadığını kontrol etmek daha iyidir.

Reshetov tarzı bölme de yapılabilir, ardından elemnn_kfold işlevinde silme

split2 <- function(x,n) split(x, cut(seq_along(x), n, labels = FALSE )) #функция которая поделит строки таблицы на число кусков согласно KFOLDS
folds <- split2( 1 :nrow(x), KFOLDS) #номера строк для обучения в каждом фолде

ve yerine koy

folds <- list()
folds[[ 1 ]] <- c(which(y== 1 )[c(T,F)], which(y== 0 )[c(T,F)])
folds[[ 2 ]] <- c(which(y== 1 )[c(F,T)], which(y== 0 )[c(F,T)])

ve kodun başındaki kat sayısını 2 olarak değiştirdiğinizden emin olun - KFOLDS=2, aksi takdirde bazı hatalar görünecektir

 

Sadece çapraz doğrulama cfold içindeki "eğitim" ve "test" in iç içe geçmiş kontroller olduğunu anlamanız gerekir. Birkaç parçaya bölünmüş bir tren tablosu var ve bu parçalar ya eğitim ya da test olacak ve döngüdeki modeller bir parçadan öğreniyor ve diğerlerini tahmin ederek bu parametrelerle modelin öğrenebildiğinden ve öğrenebildiğinden emin olmak için diğerlerini tahmin ediyor. veri için yeni bir şey tahmin edin.

Ve artık bu çapraz doğrulamaya katılmayan ayrı bir test tablosu var. Gerçek ticareti simüle eden ileriye doğru yapılan bir test gibi, model onu test etmek için tamamen eğitilene kadar bekler.
Ve ileri sarma, eğitim ve test pencereleri zaman içinde kaydırıldığında her testte normal bir sonuç verirse, en son eğitilen model artık ayrı bir test plakasında test edilmez, ancak terminalde işlem görür.

 
Bu doğru, CAB'nin bir grafiği olabilecek kontrol örneği. Eğitimli, test edilmiş. Ticaret için durdu. şahsi fikrim şudur....
 
Michael Marchukajtes :
Bu doğru, CAB'nin bir grafiği olabilecek kontrol örneği. Eğitimli, test edilmiş. Ticaret için durdu. şahsi fikrim şudur....

Ama işte soru geliyor. Kontrol grafiği olmayan bir model nasıl seçilir. Eğittik, cross-validation sonuçlarını aldık, kazanacak model bu dediler, gerçek üzerine koy !!!!!

Kural olarak, 1 gün içinde bir kontrol bölümü yapıyorum, bunlar 3-4 sinyal ..... iki hafta çalışması gerektiği göz önüne alındığında, kayıp büyük değil ......

 
Komut dosyanızı belirtilen değişikliklerle başlattı. Hata vermez ve hatta orada bir şeyler eğitir, ancak öğrenme sürecinde herhangi bir grafik göstermez. Her nasılsa sonucu bir hata olarak görüyorum. Modellerimi yeniden yapacağım, sonra bu senaryoya döneceğim. Antrenman setleri oluşur oluşmaz oradan devam edeceğiz....
 

Kime: Dr. tüccar.

Senaryoyu detaylı analiz etmedim çok "çirkin" yazıyorsunuz. Eh, herkesin kendi tarzı vardır. Ama birkaç önemli not var. ELM bir dizi uygulama özelliğine sahiptir:

  • Eğitim sırasında ELM'ye ne kadar çok örnek verirseniz, gürültüye karşı o kadar az duyarlı olur (en az 2000 deneyiminden)
  • ELM sinir ağları topluluğunda aklı başında bir sonuç için 100'den fazla olması gerekir (deneyimlere göre bir marjla almak ve sonra ayıklamak daha iyidir)
  • basit oylama ile kullandığınız kombinasyon, ortalamadan daha kötü bir sonuç verir. Bu geliştiricinin takdirinde olmasına rağmen.
  • Seet.seed, hiperparametreleri optimize ederken istenen tekrarlanabilirliği ve çeşitliliği sağlamaz. Makaledeki yoruma bakın. Orada elibrarius bu fikri deneyle test etti. Sinir ağının her başlatılmasında yalnızca RNG'yi kontrollü bir duruma zorlamak, optimizasyonda geçerli bir sonuç verecektir. Bence Bayes optimizasyonunu kullanmak daha iyidir. İyi bir hiperparametre seçimi sunar.
İyi şanlar

 

Yorumlar için teşekkürler, aklımda bulunduracağım.

ElmNN ile daha ciddi ilgilenmek isteyenler metnin sonuna son makalenize bir bağlantı ekledim - makaleyi hemen okumak için bırakmak daha iyidir.


Vladimir Perervenko :

basit oylama ile kullandığınız kombinasyon, ortalamadan daha kötü bir sonuç verir. Bu geliştiricinin takdirinde olmasına rağmen.

aslında topluluk tahmininin iki yolu vardır:

1) elemnn_kfold_predict() işlevi - her modelin regresyon sonuçlarının aritmetik ortalaması hesaplanır

2) elemnn_kfold_predict_reshetovstyle() işlevi - Bunu Mikhail için deneyleri için ekledim, topluluğun sonuçlarını birleştirmenin bu yöntemi Reshetov nöronunda kullanılıyor. Sadece sınıflandırma. Orada, tüm modellerin sonuçları karşılaştırılır ve yalnızca tüm modeller aynı tahmini verdiyse belirli bir sınıfla bir yanıt verilir. En az bir model diğerlerinden farklı bir tahmin verdiyse, fonksiyon "Bilmiyorum" tahminini döndürür.

 
Peki, sonuç ne zaten? Danışman nerede?