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

 

Dizi boyutu X

> dim(X1)
[ 1 ] 7000      8
X <- array( c(X1,X2), dim=c( 7000 , 8 , 2 ) )

Senin durumunda olacak

X <- array( c(X1,...X100), dim=c( 7000 , 8 , 100 ) )
#или, что равнозначно
X <- array( c(X1,...X100), dim=c(dim(X1), 100 ) )

Doğal olarak, örnek sayısı 7000 ise ve dönüşümün uzunluğu 8 ise.

 

Bu "rnn" paketi, kullanılacak bir üründen çok bir programlama alıştırmasıdır. Daha iyi "RSNNS" paketine bakın.

Orada birkaç tekrarlayan ağ var. Eh, daha derinden, o zaman Python'da "PyBrain", "keras"

İyi şanlar

 
teşekkür etmek! bunu halledeceğim
 

Eğitimli bir modelin çapraz doğrulamasıyla ilgili bazı garip sorunlar yaşıyorum. Daha doğrusu, her zaman problemlerin olduğu ortaya çıktı, ben sadece fark etmedim.

Benim eylemlerim şöyle bir şey: Yıl için eurusd için farklı göstergeler var. Eğitim/onaylama/onaylama için verileri rastgele %70 / %15 / %15 oranında satırlara bölüyorum.

Ayrıca, bu veriler 9000 tahmin edici içerir. Çeşitlerini genetiğe göre sıralarım, PCA modelini her bir tahmin edici alt kümesine göre eğitirim. Modeli eğitim seti üzerinde eğitiyorum, hatayı belirliyorum. Aynı modeli her iki doğrulama örneğinde de kontrol ediyorum, üzerlerinde hatayı belirliyorum.

Uygunluk fonksiyonunun nihai sonucunu şu şekilde tanımlarım:
max(error_train,error_validate1,error_validate2) - min(error_train,error_validate1,error_validate2)
Sonuç olarak, minimum ve maksimum hatalar arasındaki farkın mümkün olduğunca küçük olması gerektiğidir ("Fomenko Kriteri" olarak adlandırılan :)).

Her şey yolunda görünüyor, model her üç örnekte de yaklaşık %25'lik bir hataya ulaşıyor. Ancak ön testte hata aniden %40'a çıkıyor. Biraz düşündüm, random.seed'i satır örnekleri (öngörücüler değil, satırlar) oluşturmak için değiştirdim ve önceden tanımlanmış öngörücüler seti (en iyisi) için zaten eğitim/doğrulama/doğrulama hataları aldım %25/ %35/ %25 / %25/25 yerine %35 ve ön test için yine aynı %40. Doğrulama örneklerindeki hata +%10 arttı, çok kötü.

Yani, genetiğin, belirli bir eğitim ve belirli doğrulama örnekleri için en iyi öngörücü varyantını bulduğu ortaya çıkıyor. Satırları örnekler arasında farklı bir sırayla dağıtırsanız, eğitilmiş tahmine dayalı model artık aynı tahmin edicilerle yeterince çalışmaz.

Eğitimli modelin örnekler arasında herhangi bir satır dağılımı için yaklaşık olarak aynı hataları vermesi için bununla başa çıkmanın standart yolları var mı? Bu ciddi bir problem. Örneğin, genetiğin her neslinde yeniden eğitim ve doğrulama örnekleri oluşturabilirim. Veya iki farklı satır bazında örnek seti yapın, bunlar üzerinde iki PCA modeli eğitin ve uygunluk işlevi için en kötü sonucu alın. Mantıklı geliyor?

 
Dr.Tüccar :

Eğitimli bir modelin çapraz doğrulamasıyla ilgili bazı garip sorunlar yaşıyorum. Daha doğrusu, her zaman problemlerin olduğu ortaya çıktı, sadece fark etmedim.

("Fomenko Kriteri" olarak adlandırılan :)).

Kriterleri çok beğendim. Teşekkür ederim.

Ama sizin tarafınızdan tam olarak tarif edilmemiştir.

Kriterlerim bir ön testi içermelidir. Tüm gönderilerime bakarsanız, her zaman fikirlerime göre, ilk üç setten zamana (dizine göre) ayrılmış bir gözlem parçası üzerinde yapılması gereken ön test hakkında yazdım.

Bununla, sağlanan seti sizin yaptığınız gibi bölen çıngırakla karşılaştım. İyi veri elde edersiniz, üç örneğin hepsinde %10'dan daha azına sahibim ve sonra yeni bir dosya alıyorsunuz ve %40 hatanız hala iyi bir sonuç! Daha kötüsünü yaşadım.

Yani benim fazla uydurma kriterim:

1. İlk seti, herhangi bir rastgele numara OLMADAN, tamamen mekanik olarak, indeksin artan sırasına göre iki parçaya böleriz

2. Rastgele yöntemlerden herhangi biriyle ilk bölümü üç bölüme ayırıyoruz: öğrenme testi ve doğrulama.

3. Bu üç kısımda hata yaklaşık olarak eşitse, 4. adıma gidin

4. İkinci kısımda eğitilmiş modeli çalıştırıyoruz. Hata yine yaklaşık olarak eşit olmalıdır. Bu önemlidir, çünkü ticaret yaparken her zaman eğitim örneğinin dışında ticaret yaparız ve bar bar tutarlı (ve rastgele değil) alırız.

4 puanın tümü için yaklaşık olarak aynı hatayı alırsak, model yeniden eğitilmez.

Önemli tutarsızlıklar varsa, model yeniden eğitilir.Nedeni, orijinal sette gürültü tahmincilerinin varlığıdır. R'de gürültüden kurtulmamı sağlayacak araçlar bulamadım. Homebrew'um var, işte PCA hakkında başka bir makale.

 
mytarmailS :

Anton Zverev  

böyle bir üslupla iletişim kurmayalım, işte öğrenip tecrübelerini paylaşan ve birbirlerine yardım etmeye hazır insanlar var ve siz dedikodu pozisyonunu alıyorsunuz, burada aptalsınız ve ben her şeyi biliyorum), neyin doğru olduğunu anlamama yardım etsen iyi olur. senin fikrin ve tecrübenle

Sadece VR vermenin yeterli olmadığı konusunda size katılıyorum, bilgileri mümkün olduğunca sıkıştırmanız ve doğru kararı vermenizi engelleyen fazlalıkları, ideal olarak 0 veya 1'e kadar al / sat, yani eğer varsa, atmanız gerekir. 10 göstergemiz var (inanmıyorum) ve 9 tanesini filtreledik, sadece RSI için bıraktılar, bilgileri sıkıştırdılar, o zaman bu hala yeterli olmayacak çünkü ind hala bir dizi değere sahip ve -70 ile 70 arasındaki değerlerde kesinlikle çalışmadığı ortaya çıktı, bu yüzden burada da sıkıştırmanız gerekiyor vb.

Bununla ilgili düşüncelerim var, ancak böyle bir seçiciyi uygulamak için yeterli bilgi yok, henüz ...

İlk denemem oldukça uzun zaman önceydi, şimdiki fiyattan geri döndüm ve geçmişte neredeyse aynı durumları aradım, daha sonra bu durumlar sonuca göre sıralandı, nasıl sona erdi, örneğin şu anki durumumuz var, 10 Geçmişte bunun için analoglar bulundu 8 analog bir fiyat artışıyla sona erdi, 2'si düşüşle sona erdi, bu yüzden bir artış olacak ... Ama korku)) her şeyin tam tersi olduğu ortaya çıktı, fiyat genellikle ve satın alma tarafında güçlü bir önyargı ile bu durumlardan güçlü bir şekilde düştü ve daha sonra tekrar test edildi.

Sonra bir tür gösterge uyguladım, satın alma için tüm tahminlerin kümülatif toplamını ve ayrıca köylerin toplamını aldım, farklarını çizdim ve belirli bir endeks aldım, fiyatla karşılaştırdığımda neredeyse tam tersi olduğu ortaya çıktı. fiyatlar, korelasyon -0.7 ile -0.9 arasındaydı, eğer piyasa kendi istatistiklerine aykırıysa, üzerinde düşünülecek ve yeniden düşünülecek bir şey var demektir.

Dr.Trader'a

Belki bu biraz anlamanıza yardımcı olur...

Bu etkiyi görmenin daha hızlı ve kolay bir yolunu buldum, ilgilenirsem bunun hakkında daha fazla yazabilirim

 
San Sanych Fomenko :

4. İkinci kısımda eğitilmiş modeli çalıştırıyoruz. Hata yine yaklaşık olarak eşit olmalıdır. Bu önemlidir, çünkü ticaret yaparken her zaman eğitim örneğinin dışında ticaret yaparız ve bar bar tutarlı (ve rastgele değil) alırız.

Hatayı aldım teşekkürler. 2 değil, 3'e kadar doğrulama örneğiniz olduğu ortaya çıktı - bunlardan biri kesinlikle rastgele olmadan kaynak dosyanın son kayıtlarından alındı. Örneklerin geri kalanı rastgele. Yapmaya çalışacağım.

Bir keresinde eğitim dosyasının ilk bölümünü doğrulama için almaya çalıştım, ayrıca kesinlikle indekslerle, ayrıca rastgelelik olmadan. Buradaki fikir, eğer eğitilen model, eğitim döneminden önce verilerde küçük bir hata gösteriyorsa, eğitim döneminden sonraki verilerde de benzer bir hata gösterecektir. Her şey yanlış çıktı, antrenman periyodu öncesi ve antrenman periyodu sonrası hatalar hiç bir şekilde bağdaşmadı.

mytarmailS :

Sonra bir tür gösterge uyguladım, satın alma için tüm tahminlerin kümülatif toplamını ve ayrıca köylerin toplamını aldım, farklarını çizdim ve belirli bir endeks aldım, fiyatla karşılaştırdığımda neredeyse tam tersi olduğu ortaya çıktı. fiyatlar, korelasyon -0.7 ile -0.9 arasındaydı, eğer piyasa kendi istatistiklerine aykırıysa, üzerinde düşünülecek ve yeniden düşünülecek bir şey var demektir.

Bu yöntem sizin için her zaman, herhangi bir zaman aralığında işe yarar mı? Tabii ki garip çıkıyor, ama asıl şey işe yaraması. Yetersiz eğitim almış modelimde de benzer gözlemlerim oldu. Bazen tahmin edilen sonuçları gerçeklerin tam tersi olarak verdi. Ama bazen - hepsi aynı doğru çalıştı. Çok uzun bir testte, modeli eğiterek ve farklı zaman aralıklarında test ederek, ortalama olarak vakaların %50'sinde doğru cevabı verdiğini, yani hiçbir anlamı olmadığını, tahmin için yazı tura atabileceğinizi fark ettim ve aynı sonucu alın. Bundan sonra kendim için, diğer birçok modelin tersine çevirme, filtreleme, toplu kararlar olmadan modelin doğru sonucu vermesi gerektiğini doğru bir şekilde kabul ettim. Aksi takdirde, kendinizi kaosun ve rastgeleliğin hüküm sürdüğü bir tuzağa sürükleyebilirsiniz.

 
Dr.Tüccar :

Bu yöntem sizin için her zaman, herhangi bir zaman aralığında işe yarar mı? Tabii ki garip çıkıyor, ama asıl şey işe yaraması. Yetersiz eğitim almış modelimde de benzer gözlemlerim oldu. Bazen tahmin edilen sonuçları gerçeklerin tam tersi olarak verdi. Ama bazen - hepsi aynı doğru çalıştı. Çok uzun bir testte, modeli eğiterek ve farklı zaman aralıklarında test ederek, ortalama olarak vakaların %50'sinde doğru cevabı verdiğini, yani hiçbir anlamı olmadığını, tahmin için yazı tura atabileceğinizi fark ettim ve aynı sonucu alın. Bundan sonra kendim için, diğer birçok modelin tersine çevirme, filtreleme, toplu kararlar olmadan modelin doğru sonucu vermesi gerektiğini doğru bir şekilde kabul ettim. Aksi takdirde, kendinizi kaosun ve rastgeleliğin hüküm sürdüğü bir tuzağa sürükleyebilirsiniz.

Evet, her zaman ve herhangi bir zaman aralığında (ancak örneklemede nüanslar vardır), çıktı fiyatın neredeyse tam bir kopyasıdır, ancak ters orantılıdır, neye yol açtığımı .. Bu şekilde, nöralin nasıl olduğunu görebilirsiniz. ağ öğrendi ve ondan ne bekleyeceğinizi, birkaç sonuç çıkarabilirsiniz.

1) bu en tipik durumdur - eğer ağ ters orantılıysa, bu, tersini öğrendiği anlamına gelir. doğru olmaz mı

2) sadece rastgele - ağın hiçbir şey öğrenmediği anlamına gelir

3) ağ piyasa ile birlikte hareket eder (bu etkiyi yalnızca standart dışı bir hedefte elde etmeyi başardım) - bu, her şeyin yolunda olduğu anlamına gelir

4) Ve en önemli sonuç (bu sizin için önemlidir D.Trader) sinir ağınız için tahminler oluşturursanız ve sonuç 1'deki gibi ters yönde giderse, optimizasyon, genetik, çapraz doğrulama ve diğer zevkler kesinlikle bu konuda HİÇBİR ŞEY düşünmenize yardımcı olmayacak, mantıklı ve açık

 
mytarmailS :

1) bu en tipik durumdur - eğer ağ ters orantılıysa, bu, tersini öğrendiği anlamına gelir. doğru olmaz mı

4) Ve en önemli sonuç (bu sizin için önemlidir D.Trader) sinir ağınız için tahminler oluşturursanız ve sonuç 1'deki gibi ters yönde giderse, optimizasyon, genetik, çapraz doğrulama ve diğer zevkler kesinlikle bu konuda HİÇBİR ŞEY düşünmenize yardımcı olmayacak, mantıklı ve açık

1) farklı eğitim aralıklarında sabit ters korelasyon, bu biraz garip ama ağ bir şeyler öğrendi, sonucun iyi olduğuna katılıyorum.

4) ama buna katılmıyorum. İkili sınıflandırma kullanılıyorsa (hedef değişken "0" veya "1"), "ters" sonucu elde etmek için genetiğin veya optimize edicinin uygunluk işlevi kolayca değiştirilebilir, sadece mevcut sonucu 1'den çıkarmanız yeterlidir.
Örneğin, genetik belirli bir dizi tahmin ediciyi seçer. Onlar üzerinde bir nöron eğitiyorum, çapraz doğrulama yapıyorum ve ortalama hatayı buluyorum. Hata çıkıyor, diyelim ki 0.4. Uygunluk fonksiyonunun "ters" sonucu 1-0.4 = 0.6 olarak tanımlanabilir. Genetik, tahmin edicileri 0,6'dan sıfıra kadar numaralandırarak hatayı azaltmaya çalışacaktır. Sonuç olarak, uygunluk fonksiyonu değeri 0 olan bir öngörücü seti elde edilecektir.Ancak bu, nöronun gerçek hatasının 0 + 1 = 1 olduğu anlamına gelir. ve bu ters korelasyon.
Genelde aynı genetik algoritma ve cross-validation ile istenilenin tersi bir sonuç verecek bir nöronu eğitmek mümkündür, sizinki gibi çıkacaktır ama bilerek. Ama bunun neden yapılacağı açık değil mi? :)

Ayrıca "0" ve "1" hedef değişkenleriyle ikili sınıflandırmada en kötü hatanın 0,5 olduğunu da ekleyeceğim.
Hata == 0 iyidir.
Hata == 1 bu, ters korelasyonlu nöronunuz, sonucu ters çevirebilirsiniz ve sorun olmayacaktır. Ancak bunun neden olduğunu anlamak daha iyidir, bu çok atipik bir durumdur.
0,5'lik bir hata, sonucun tamamen rastgele olduğu ve modelin genellikle işe yaramaz olduğu anlamına gelir.

 

1

Neden: