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

 
mytarmailS :

1) Evet haklı olabilirsin ama bu ağ kendi kendine karar vermeyi öğrenebilir, bunlar öğretmensiz sıradan sınıflandırmalar değil, yani uzun zamandır bahsettiğim kavramı onun içinde uygulayabilirsin. zaman - ona by-sat-by veya 00011101011 biçiminde standart bir hedef değil ve daha soyut olarak, örneğin aptalca şu koşullar koyabilirsiniz: Ağ! Orada nasıl ticaret yapacağınız umrumda değil, ancak günlük kazancınızın en az %1 düşüş %0,5 olmasını istiyorum ve kendisi bu sorunu çözmek için kurallar, kombinasyonlar arayacaktır. Burada bir yerde yanılıyorsam ve saçma sapan şeyler söylediysem, beni kendi iyiliğim için düzeltin)

Aynen öyle düşünmedim haklısın O zaman, sinir ağına keskinlik oranını (veya kurtarma faktörünü) en üst düzeye çıkarmak için bir koşul vermek ve evrimi değerlendirmek için modeli test etmek için R'de gerçek alıntılar üzerinde basit bir forex test cihazı gibi bir şey yapmak daha iyidir. Ancak mucize kendiliğinden olmayacak, yeniden eğitim sorunu devam edecek, yine de verileri eğitim ve test setlerine bölmeniz, evrim sırasında modelin son değerlendirmesi için çapraz doğrulama yapmanız gerekiyor. Çapraz doğrulama sırasında keskinlik oranıyla çalışmanın hızlı bir yolunu düşünemedim, bence test örneğindeki rastgele çubukları kaldırmak mümkün olmayacak çünkü önemli olan her bir çubuktaki doğruluk değil, ancak her yeni anlaşmadan elde edilen tüm dezavantajlar, spreadler ve komisyonlar ile sürekli ticaretin kendisi.

Alexey Burnakov :

Orada R için bir paket hazırlıyor gibiler. Not almalıyız.

Paket zaten orada ama ne kadar hazır bilmiyorum, şimdilik github'da. İşte daha basit bir örnek, makalenin devamı. Ağa kökü çıkarmayı öğretin.

http://gekkoquant.com/2016/07/17/rneat-square-root-neural-net-trained-using-augmenting-topologies-simple-example/

Daha sonra eklendi:

Süsen sınıflandırmasını örneğe, ekteki koda göre yaptım (model sınıflandıramadı, regresyon için tüm sınıfları sayılarla değiştirdim ve sonuçları en yakın sayısal seviyelere yuvarladım. Muhtemelen bu bir şekilde daha kolay yapılabilirdi. ).
Verilerin sadece %50'sini eğitim için, %95'ini doğrulama için aldım, oldukça iyi. Grafiğe bakılırsa, model ilk tahmin ediciyi bile kaldırdı.

Forex süsenlerden daha karmaşıktır :), sonuç orada çok daha kötü olacaktır.

Ayrıca makalenin 3. ve 4. bölümlerinde modeli eğitmek için farklı işlevlerin kullanıldığını fark ettim.
Herhangi bir dinamik işlemi modellemek için Bölüm 3, örneğin, model forex grafiğini izleyebilir ve işlemleri gerçek zamanlı olarak açabilir / kapatabilir.
Bölüm 4 - sadece modeli hazır örnekler üzerinde eğitin ve sonucu tahmin edin

Dosyalar:
 
Dr.Tüccar :

1) Aynen, bunun hakkında düşünmedim, her şey doğru. O zaman sinir ağına keskinlik oranını (veya kurtarma faktörünü) en üst düzeye çıkarmak için bir koşul vermek ve R'deki gerçek alıntılar üzerinde basit bir forex test cihazı gibi bir şey yapmak daha iyidir.

2) Ayrıca makalenin 3. ve 4. bölümlerinde modeli eğitmek için farklı fonksiyonların kullanıldığını fark ettim.
Herhangi bir dinamik işlemi modellemek için Bölüm 3, örneğin, model forex grafiğini izleyebilir ve işlemleri gerçek zamanlı olarak açabilir / kapatabilir.
Bölüm 4 - sadece modeli hazır örnekler üzerinde eğitin ve sonucu tahmin edin

1) Kesinlikle doğru! kastettiğim tam olarak buydu, kar/düşüş sadece bir örnek için, bir kurtarma faktörü almayı düşündüm, ancak keskinlik, prensipte, daha kötü değil

2) Makale 4'te yazarın zaten bir paket gibi bir şey yarattığını ve tüm "R" standartlarına göre, "tahmin" tahmini aracılığıyla modele mümkün olduğunca basit bir şekilde sahip olduklarını doğru bir şekilde kaydettiniz - bir hedef vektör var - - ama bu özel yaklaşım bize uymayacak çünkü her şey fonksiyonlar zaten pakette gizli ... Kaynak koduyla ilgilenmeniz ve her şeyi kendiniz yazmanız gerekiyor, bu yüzden çözmeme yardım et dedim, çünkü her şey Burada, "bunun için örnekler içeren hazır paket"ten çok daha karmaşık. Bana öyle geliyor ki, 3. bölümdeki işlevler bile ihtiyacımız olan şey için yeterli olmayacak. Yani hepimiz bu konuya dahil olursak harika olur.

 
mytarmailS :

1) Kesinlikle doğru! kastettiğim tam olarak buydu, kar/düşüş sadece bir örnek için, bir kurtarma faktörü almayı düşündüm, ancak keskinlik, prensipte, daha kötü değil

2) Makale 4'te yazarın zaten bir paket gibi bir şey yarattığını ve tüm "R" standartlarına göre, "tahmin" tahmini aracılığıyla modele mümkün olduğunca basit bir şekilde sahip olduklarını doğru bir şekilde kaydettiniz - bir hedef vektör var - - ama bu özel yaklaşım bize uymayacak çünkü her şey fonksiyonlar zaten pakette gizli ... Kaynak koduyla ilgilenmeniz ve her şeyi kendiniz yazmanız gerekiyor, bu yüzden çözmeme yardım et dedim, çünkü her şey Burada, "bunun için örnekler içeren hazır paket"ten çok daha karmaşık. Bana öyle geliyor ki, 3. bölümdeki işlevler bile ihtiyacımız olan şey için yeterli olmayacak. Yani hepimiz bu konuya dahil olursak harika olur.

Ve sana kendinden başka kim öğretecek? Burada kaynak kodunu alırsınız. Çalışmak. Ve aynı zamanda fonksiyonun türevlenebilirliği hakkında. Bazı düzgün işlevler ağa beslenmelidir. Ve bize söyleyin) ve biz tavsiyede bulunacağız.
 
Alexey Burnakov :
Bazı düzgün işlevler ağa beslenmelidir. Ve bize söyleyin) ve biz tavsiyede bulunacağız.

Müdahale ettiğim için beni bağışlayın, ancak sadece pürüzsüz değil, aynı zamanda normalleştirilmiş.

Böylece Ulusal Meclis, bildiği alanların ötesine asla geçmez.

Bunun gibi bir şey.

 

Bu ağların neye tutunduğunu anlayamıyorum?

Ne de olsa, yoksul paketlerin ötesine geçerek R! Yani hayır, eski günahlar çeker ve çeker...

Örneğin caret'i ele alalım. Sadece bir buçuk yüz model değil, aynı zamanda bir dizi faydalı ön işleme işlevi, tahmin var ...

Yani hayır, ağlar ve ağlar ...

 
San Sanych Fomenko :

Bu ağlara neden tutunduklarını anlayamıyorum?

Ne de olsa, yoksul paketlerin ötesine geçerek R! Yani hayır, eski günahlar çeker ve çeker...

Örneğin caret'i ele alalım. Sadece bir buçuk yüz model değil, aynı zamanda bir dizi faydalı ön işleme işlevi, tahmin var ...

Yani hayır, ağlar ve ağlar ...

Öyleyse şapkanızı ve bir buçuk yüz modeli mümkün olan en kısa sürede hareket halinde gösterin! :)

 
Vadim Şişkin :

Öyleyse şapkanızı ve bir buçuk yüz modeli mümkün olan en kısa sürede hareket halinde gösterin! :)

Bu arada, ben kendim caret kullanıyorum ve forexte tatmin edici sonuçlar alıyorum.

Deneylerimden örnek kod:

####
##########
############## start experiment
##########
####

library(caret)
library(gbm)
library(doParallel)

        
# tuning GBM - перебор параметров обучения по сетке
gbmGrid <- expand.grid(interaction.depth = seq( from = 3 , to = 9 , by = 2 )
                  , n.trees = seq( from = 600 , to = 1200 , by = 300 )
                  , shrinkage = seq( from = 0.01 , to = 0.02 , by = 0.005 )
                  , n.minobsinnode = seq( from = 30 , to = 60 , by = 30 ))

######################
# start training cycle - ввод основных переменных и массива для результатов

validating_arr <- data.frame()
max_best_models <- 1
counter <- 1
max_inputs <- 15
max_cv_folds <- 5
max_bag_fract <- 1
distributions <- c( 'gaussian' , 'laplace' )
start <- Sys.time()
        
for (best_inp_num in seq( from = 3 , to = max_inputs, by = 3 )){
        
         for (cv_folds in 2 :max_cv_folds){
                
                 for (bag_frac in seq( from = 0.2 , to = max_bag_fract, by = 0.2 )){

#########################
# prepare training scheme - параметры caret
                                        gbmControl <- trainControl(method = 'cv'
                                                                      , number = cv_folds
                                                                      , verboseIter = F
                                                                      , returnData = F
                                                                      , returnResamp = 'all'
                                                                      , savePredictions = 'none'
                                                                      , summaryFunction = mymetrics
                                                                      , search = 'grid'
                                                                      , allowParallel = T)

########################
# initiate paralleling
                        cores <- 4 #detectCores()
                        cl <- makePSOCKcluster(cores)
                        registerDoParallel(cl)
                        
                        # train the model - обучение моделей с кроссвалидацией. Используется GBM.
                        best_models <- train(training[, ncol(training)] ~.
                                                , data = training[, 1 :(ncol(training) - 1 )]
                                                , method = 'gbm'
                                                , distribution = distributions[ 2 ]
                                                , bag.fraction = bag_frac
                                                , metric = 'mae_improve'
                                                , maximize = T
                                                , trControl = gbmControl
                                                , tuneGrid = gbmGrid)
                        
                        # stop paralleling
                        stopCluster(cl)
                        
                        # summarize the model - сохранение n лучших моделей
                        best_models_arr <- as .data.frame(cbind(best_models[[ 4 ]][ 1 ]
                                                                    , best_models[[ 4 ]][ 2 ]
                                                                    , best_models[[ 4 ]][ 3 ]
                                                                    , best_models[[ 4 ]][ 4 ]
                                                                    , best_models[[ 4 ]][ 5 ]
                                                                    , best_models[[ 4 ]][ 6 ]
                                                                    , best_models[[ 4 ]][ 7 ]
                                                                    , best_models[[ 4 ]][ 8 ]))
                        
                        rm(best_models)
                        
                        best_models_arr_ordered <- best_models_arr[order(best_models_arr$mae_improve, decreasing = T), ]

# далее - обучение лучших моделей и их валидация


 
Teşekkür ederim. :)
 
San Sanych Fomenko :

Bu ağlara neden tutunduklarını anlayamıyorum?

Ne de olsa, yoksul paketlerin ötesine geçerek R! Yani hayır, eski günahlar çeker ve çeker...

Örneğin caret'i ele alalım. Sadece bir buçuk yüz model değil, aynı zamanda bir dizi faydalı ön işleme işlevi, tahmin var ...

Yani hayır, ağlar ve ağlar ...

Genellikle bir kitaplık ya çok ama vasat olabilir ya da bir şey ve yüksek kalitede olabilir. Caret ilk durumdur, onunla pratikte düzinelerce modeli kontrol etmek ve sonuçları karşılaştırmak kolaydır, ancak göreviniz için bir şeyler geliştirmek zordur. Kurallarıma göre tahmin edicileri seçerken büyük zorluklarla karşılaştım - caret onları (ve genetiği) numaralandırmak için tavlamayı simüle edebilir, ancak uygunluk fonksiyonumu değerlendirme için alamaz. Caret için eğitim, doğrulama ve uygunluk fonksiyonları ile yeni bir model oluşturmak gerekiyor; ancak caret kendi çapraz doğrulamaları ile eğitim ve test veri setlerini kendi kurallarına göre kontrol etmeye devam edecektir.
Tahmin edicileri sıralamak için bir GA veya GenSA paketi almak ve ihtiyacım olan kurallara göre hem model oluşturma hem de çapraz doğrulama olacak tek bir uygunluk işlevi yazmak benim için daha kolay.

Neuronka ormandan daha kötü değil, onunla veya en kötü durumda, mevduatı boşaltmadan hala olumlu sonuçlar alıyorum. Farklı algoritmalar nedeniyle, nöron orman dışındaki diğer tahmin edicileri tercih edecektir, ancak tahmin edicileri seçmenin tüm kuralları ormandaki ile tamamen aynıdır.

Bir nöronu bir mt5 EA'ya aktarmak birkaç dakika meselesidir (ağırlıkları R'den csv'ye kaydedin, EA'da okuyun). Ormanı mt5'e aktarmak çok daha zor olacak, bu yüzden nöronu tercih ediyorum.

 

RNeat ile biraz daha deney yaptım, bununla sıradan sinir ağlarıyla aynı şekilde çalışamayacağınız sonucuna vardım.

1) Geleneksel modellerin aksine, RNeat eğitimi ham veri kullanmaz. Model rastgele oluşturulur, geliştirilir ve yalnızca sonunda orijinal veriler üzerinde test edilir. Genellikle modeller ilk verileri kullanır, mantıklarını üzerlerine kurar ve ardından doğrulama setinde modelin mantığının doğru olup olmadığını veya sadece orijinal örnekleri ezberleyip hatırlamadığını öğrenebilirsiniz. Diğerlerinden farklı olarak, RNeat orijinal verileri hiç hatırlayamıyor çünkü onları bilmiyor, tüm model gerekli sonuçları ve onlara ne kadar yakın olduğunu biliyor.

2) çapraz doğrulama, ön testin sonuçlarını iyileştirmeye yardımcı olmaz. Sıradan bir modeli eğitmenin, birkaç çapraz doğrulama yürütmenin ve modelin son uygunluk değerlendirmesi için tüm örneklerdeki hataları bir şekilde ele almanın mümkün olduğu konusunda hepimiz hemfikiriz. RNeat orijinal veriyi bilmediğinden, verinin hangi örneklemde olduğu veya eğitimde olduğu önemli değil, her durumda mantığını istenen sonuca göre ayarlayacaktır. Teorik olarak, uygunluk fonksiyonunda kullanılan tüm örneklerde "öğrenecek" (daha doğrusu mutasyona uğrayacak :)). Mümkün olan tek şey, modeli gerekli doğrulukta eğitmek ve forex için oldukça riskli bir yaklaşım olan aşırı zorlamamasını ummaktır. Çapraz doğrulama, ön testteki olası sonucun nihai değerlendirmesi olarak yalnızca eğitimden sonra kullanılabilir ve bu doğrulama seti hiçbir durumda uygunluk fonksiyonu içinde kullanılmamalıdır.

Neden: