Ticarette makine öğrenimi: teori, pratik, ticaret ve daha fazlası - sayfa 195
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
Evet, gecikmeler yaptım çünkü önceki sürümlerde genelleme yeteneğini artırdılar, şimdi tahminleri sıralamak için algoritmanın geliştirilmesiyle, bunun gerekli olmadığını düşünüyorum, bu yüzden onlarsız çalışmaya çalışıyorum. izliyoruz, izliyoruz. Bugünün sonuçlarını daha sonra paylaşacağım...
Odak başarısız olursa, yani. gecikme olmadan genelleme yeteneği artmayacak, o zaman büyük olasılıkla 13. ve 14. versiyonlar, dar bir görev yelpazesi için keskinleştirilmiş bir tür evrensel olmayan yön mü?
Bu durumda, jPrediction'ı farklı, daha evrensel bir şekilde taşımak için GIT'i geri almanız gerekecektir.
İkinci bir hipotez olmasına rağmen: Örnekte gecikmelerin varlığı, önceki sürümlerin keskinleştirildiği dar ve evrensel olmayan bir yön müdür?
Odak başarısız olursa, yani. gecikme olmadan genelleme yeteneği artmayacak, o zaman büyük olasılıkla 13. ve 14. versiyonlar, dar bir görev yelpazesi için keskinleştirilmiş bir tür evrensel olmayan yön mü?
Bu durumda, jPrediction'ı farklı, daha evrensel bir şekilde taşımak için GIT'i geri almanız gerekecektir.
İkinci bir hipotez olmasına rağmen: Örnekte gecikmelerin varlığı, önceki sürümlerin keskinleştirildiği dar ve evrensel olmayan bir yön müdür?
O zaman buradan cevap vereyim.
dat <- data.frame(cluster1=c( 24 , 2 , 13 , 23 , 6 ), cluster2=c( 5 , 15 , 13 , 28 , 12 ), cluster3=c( 18 , 12 , 16 , 22 , 20 ), cluster4=c( 21 , 7 , 29 , 10 , 25 ), cluster5=c( 16 , 22 , 24 , 4 , 11 ), target.label=c( 1 , 1 , 0 , 1 , 0 ))
dat <- rbind(dat, dat[ 1 ,], dat[ 1 ,])
#результат последней строки поменян на 0 для эксперимента
dat[ 7 , "target.label" ]= 0
library (sqldf)
#для sqldf точек в названиях колонок быть не должно
colnames(dat)[ 6 ] <- "target"
dat1 <- sqldf( "select cluster1, cluster2, cluster3, cluster4, cluster5, avg(target) as target_avg, count(target) as target_count from dat group by cluster1, cluster2, cluster3, cluster4, cluster5" )
dat1
dat1[ dat1$target_count>= 10 & dat1$target_avg> 0.63 , ]
dat1[ dat1$target_count>= 10 & ( dat1$target_avg< 0.37 | dat1$target_avg> 0.63 ), ] #на случай если оба "0" или "1" встречаются чаще 70 %
Teşekkürler, çok kompakt bir çözüm!!
Lütfen satırdaki bir nüansa daha yardım edin
dat1 <- sqldf( "select cluster1, cluster2, cluster3, cluster4, cluster5 , avg(target) as target_avg, count(target) as target_count from dat group by cluster1, cluster2, cluster3, cluster4, cluster5" )
kümelerin ayırt edici adlarını bir değişkenle nasıl değiştirebilirim, diyelim
gerçek hayatta 500 hatta belki 1000 küme olacağı için her küme adını manuel olarak yazmak gerçekçi olmayacaktır ve çözüm alında çalışmaz
Bakalım ne ve nasıl ... antrenman yapar yapmaz abonelikten çıkacağım ...
Sonuç olarak, 13. versiyondan önce, örneğin başlangıcına daha yakın olan tahmin ediciler daha yüksek bir olasılıkla işlendi. Ve örneğin sonunda (hedef değişkene daha yakın) olanlar ve daha küçük olanı. Onlar. En anlamlı tahmin ediciler örneklemde önceden sola ve en az anlamlı olanlar sağa yerleştirilirse, o zaman iyi bir genelleme yeteneği elde ederiz. Ve bunun tersi olursa, o zaman kötü. Sorun şu ki, bunun için hangi tahmin edicilerin en önemli olduğunu önceden bilmek gerekiyordu, yani. önemlerine göre örneklemde öncelik sırasına koyunuz. Ancak bu durumda, tahmin edici seçim algoritmasının kendisi çok etkili olmadı.
14. versiyonda, tüm tahmin ediciler için işleme olasılığı yaklaşık olarak aynıdır. Ama bu başka bir sorun yaratır. Sonuçta, tahmin edici seçim algoritması, gradyan arama yöntemine göre çalışır ve her seferinde genelleme yeteneğini artırmaya doğru bir adım kayar. Aynı zamanda, diğer gradyan yöntemleri gibi, yerel bir ekstremumda "sıkışıp kalma" gibi sıfır olmayan bir riske sahiptir. 12. versiyondan önce, bu risk, numunedeki tahmin edicilerin önceden sıralanmasıyla azaltıldı.
Genel olarak algoritmanın hem birinci hem de ikinci versiyonunda sorunlar var ve bunları ortadan kaldırmak için bir şekilde analiz etmek gerekiyor. Örneğin, "dağ geçitleri" üzerinden "atlamak" için mevcut durumdan farklı yönlerde birkaç adım için algoritmaya bazı rastgele atlamalar eklemek.
> clusternames
[1] "cluster1,cluster2,cluster3,cluster4,cluster5"
> sql_query < - paste0("select ", clusternames, ", avg(target) as target_avg, count(target) as target_count from dat group by ", clusternames)
> sql_query
[1] "select cluster1,cluster2,cluster3,cluster4,cluster5, avg(target) as target_avg, count(target) as target_count from dat group by cluster1,cluster2,cluster3,cluster4,cluster5"
> dat1 < - sqldf( sql_query )
> dat1
"dağ geçidi" üzerinden "zıplamak" için.
Bazen L-BFGS optimizasyonu nöronlara yerleştirilmiştir, vadilerden çıkmanıza izin verir. Örneğin nnet nöron paketi.
Orada çok fazla matematik var, nasıl çalıştığını bilmiyorum, ama sonuçta gradyanı aşağı inmek değil, gradyandan gradyanı aşağı (türevin türevi) var.
1) İlkel bir örneği de doğru anladım (ağları veya başkalarını alacak hiçbir yer yoksa, o zaman "icat etmeye" başlar)))
2) Sadece 100 mona bulup kullanabildiğiniz zaman %70'i nasıl arayabilirsiniz (fiyat için değil elbette).
1) peki, evet, peki, evet, böyle bir günahları var)) Bunu "benim" yaklaşımının avantajlarıyla ilgili paragraflarda anlattım
2) Ters dönüşler için kombinasyonlar arayacağım, bunlar sadece mumun yönü veya rengi değil, aynı zamanda - tersine dönüş, tersine dönüş, geri dönüş değil
Başlangıçta ihtiyacım olan çok daha az gözlemim olacak, ancak her şey yolunda giderse, mutlu olacağım ve tetikleyicilerin% 40'ı, hatta% 70'i gerekli değil, çünkü böyle bir hedef riskle kar 1'den 5'e kadar olacak
Çok teşekkür ederim yavaş yavaş verileri hazırlayacağım sonra küme,sonra örüntülere bakacağım,sonuçlar hakkında sizi bilgilendireceğim
Bazen L-BFGS optimizasyonu nöronlara yerleştirilmiştir, vadilerden çıkmanıza izin verir. Örneğin nnet nöron paketi.
BFGS ve L-BFGS gibi türevleri, jPrediction'ın zaten çözdüğü sorunu çözmek, yani yerel ekstremumu bulmak için tasarlanmıştır. Onlar. bu algoritmalar, alternatif ekstremum aramak için vadilerin üzerinden "atlamanıza" değil, en yakın ekstrema yönünde "dağ geçitlerinden" "tırmanmanıza" izin verir.
Algoritmalar "atlayıcılar" gereklidir. Ve rastgele değil, potansiyel olarak umut verici bir yönde "zıplamaları" arzu edilir. Teorik olarak, bu tür "sıçrayışların" mutasyonlar yoluyla gerçekleştirildiği genetik yoluyla gerçekleştirilebilir. Ancak genetik algoritmalar çok yavaştır ve potansiyel torunların minimum zaman maliyetiyle bitler için test edilebileceği görevler için daha uygundur. Bir nöronu genelleme yeteneğini hesaplamak için eğitmek çok zaman alır çünkü buradaki genetik çok engelleyici olacaktır.
Tamam, daha iyi bir seçenek olmadığı için şu anda rastgele "atlamalar" içeren bir varyantı test ediyorum.
R ile ilgili başka bir kitap. Onu buraya ekleyeceğim, çünkü başka nerede yapabileceğin belli değil. Bırak olsun
S.E. Mastitsky, V.K. Shitikov
R İLE İSTATİSTİKSEL ANALİZ VE VERİ GÖRSELLEŞTİRME
Çubuklarla kayan bir pencere ile mytarmailS gibi kalıplar ararsanız, her kalıp, her bir çubukta değerlerin bulunabileceği aralık hakkında bilgi taşıyacaktır. Ne kadar çok kalıp olursa, her bir çubuk için aralık o kadar kısa olur.
Kabaca söylemek gerekirse, yeni veriler içeren belirli bir pencerenin önceden bulunan bir kalıba girmesi için, her örüntüde bulunan bu tür dikey sınırlayıcılara düşmesi gerekir.
1000 desen alır ve bulursanız, her biri için "kanal" genişliği küçük olacaktır. Ve yeni veriler her zaman eğitim verilerinden biraz farklı olduğu için bu kadar dar bir kanala girmek zor olacak, bu da hatalara yol açacaktır.
Occam'ın tıraşı bana rehberlik ederdi - desen sayısını azaltabilir ve bozulma olmadan aynı sonucu elde edebilirseniz, azaltmak daha iyidir.