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

 
Yousufkhodja Sultonov :

MA-shki, sizi kandırmak için doğa tarafından yaratılmıştır - piyasanın yasalarını anlamayanlar. Ve herkes bu yem için düştü. Şaşırtıcı ama gerçek. Etrafınıza bakın ve MA'nın piyasa veya rastgele olmalarına bakılmaksızın tüm sayısal serilerin bir özelliği olduğunu anlayacaksınız. Uyanın tüccarlar, aldanmayın.

Ben buna paranoya derdim.))

Mashki, yanlış bir şey yapmayan en yaygın filtredir. Herhangi bir mat yöntemi, uygulanabilir olduğu yerde ve yerde iyidir.

 
Maksim Dmitrievski :

peki özellik arayışındaki asıl soru nedir?

bizim durumumuzda sadece fiyat var. Herhangi bir fiyat dönüşümü, sürecin belirli bir "hafızası" biçiminde (n-dönemler üzerine inşa edilmiş göstergeler) a priori kalıplardır. Onlar. Eğer kalıpları bilmiyorsak, hafıza işlemlerini hesaba katmak için sadece fiyatı, farklı periyotlarla artışları girebiliriz.

fiyat artışları dışında ne olabilir? ya da değil, ne seçiyorsunuz orada bu kadar titizlikle, ondan bir şey var mı? :)

Sıralı bir otoregresyon süreci var, aynısını NS üzerinden de yapabilirsiniz. Bana göre öğretilebilecek tek şey bu. Eh, yani ekonometrik modeller alın ve bunları genişletin

IMHO .. bu yüzden özellikleri seçmeye bile çalışmıyorum :) ve sinirlerim yerinde (ama gerçekten değil)

başka bir deyişle, fiyatta ne bulabiliriz: trend, mevsimsellik, döngüsellik, gürültü

Birkaç sayfa önce, bir spirali tanımayı öğrenen bir nöronla ilgili bir örnek yayınladınız. Standart iki özellik, 3 gizli nöron katmanı gerektirir. Ve daha fazla özellik eklerseniz, bir katman yeterlidir.
Yani burada, nörona yüzlerce geçmiş artış verebilir ve hepsini bir düzine gizli katmanda işleyebilir veya 90'lardan kalma tek katmanlı bir ızgaranın kaldırabileceği, kendi kendine yapılan iyi özellikleri seçebilirsiniz.

 

Tahmin edicileri filtrelemek için başka bir ilginç paket buldum. Adı FSelector. Entropi kullanımı da dahil olmak üzere, tahmin edicileri filtrelemek için yaklaşık bir düzine yöntem sunar.

Tahmin ediciler ve hedef içeren dosya buradan alınmıştır - https://www.mql5.com/ru/forum/86386/page6#comment_2534058


library(FSelector)
library(corrplot)

load( "ALL_cod.RData" )
trainTable <- Rat_DF1

PREDICTOR_COLUMNS_SEQ <- 1 : 27
TARGET_COLUMN_ID     <- 28

targetFormula <- as .simple.formula(colnames(trainTable)[PREDICTOR_COLUMNS_SEQ], colnames(trainTable)[TARGET_COLUMN_ID])

impMatrix <- matrix(NA, nrow = 0 , ncol = length(PREDICTOR_COLUMNS_SEQ))

impMatrix <- rbind(impMatrix, colnames(trainTable)[PREDICTOR_COLUMNS_SEQ] % in % cfs(targetFormula, trainTable))
rownames(impMatrix)[nrow(impMatrix)] <- "cfs"
impMatrix <- rbind(impMatrix, chi.squared(targetFormula, trainTable)[[ 1 ]])
rownames(impMatrix)[nrow(impMatrix)] <- "chi.squared"
impMatrix <- rbind(impMatrix, colnames(trainTable)[PREDICTOR_COLUMNS_SEQ] % in % consistency(targetFormula, trainTable))
rownames(impMatrix)[nrow(impMatrix)] <- "consistency"
if ( class (trainTable[,TARGET_COLUMN_ID]) != "factor" ){
  impMatrix <- rbind(impMatrix, linear.correlation(targetFormula, trainTable)[[ 1 ]])
  rownames(impMatrix)[nrow(impMatrix)] <- "linear.correlation"
  impMatrix <- rbind(impMatrix, rank.correlation(targetFormula, trainTable)[[ 1 ]])
  rownames(impMatrix)[nrow(impMatrix)] <- "rank.correlation"
}
impMatrix <- rbind(impMatrix, information.gain(targetFormula, trainTable)[[ 1 ]])
rownames(impMatrix)[nrow(impMatrix)] <- "information.gain"
impMatrix <- rbind(impMatrix, gain.ratio(targetFormula, trainTable)[[ 1 ]])
rownames(impMatrix)[nrow(impMatrix)] <- "gain.ratio"
impMatrix <- rbind(impMatrix, symmetrical.uncertainty(targetFormula, trainTable)[[ 1 ]])
rownames(impMatrix)[nrow(impMatrix)] <- "symmetrical.uncertainty"
impMatrix <- rbind(impMatrix, oneR(targetFormula, trainTable)[[ 1 ]])
rownames(impMatrix)[nrow(impMatrix)] <- "oneR"
impMatrix <- rbind(impMatrix, random.forest.importance(targetFormula, trainTable)[[ 1 ]])
rownames(impMatrix)[nrow(impMatrix)] <- "random.forest.importance"
impMatrix <- rbind(impMatrix, relief(targetFormula, trainTable)[[ 1 ]])
rownames(impMatrix)[nrow(impMatrix)] <- "relief"

impMatrix

for (i in 1 :nrow(impMatrix)){
   if (length(unique(impMatrix[i,]))== 1 ){
    impMatrix[i,] <- 0
  } else {
    impMatrix[i,] <- - 1 + (impMatrix[i,]-min(impMatrix[i,]))/(max(impMatrix[i,])-min(impMatrix[i,]))* 2
  }
}

while (nrow(impMatrix) < ncol(impMatrix)){
  impMatrix <- rbind(impMatrix, 0 )
}
while (ncol(impMatrix) < nrow(impMatrix)){
  impMatrix <- cbind(impMatrix, 0 )
}

impMatrix <- as .matrix(impMatrix)
colnames(impMatrix) <- colnames(trainTable)[PREDICTOR_COLUMNS_SEQ]

corrplot(impMatrix)

Sonunda, her bir yöntemle tahmin edicinin tahminini grafikte gösterdim -

Mavi iyidir, kırmızı kötüdür (düzgün için, sonuçlar [-1:1] olarak ölçeklenmiştir, doğru bir değerlendirme için, işlevlerin kendilerini çağırma sonuçlarına bakın cfs(targetFormula, trainTable), chi.squared(targetFormula, trainTable ), vb.)
X3, X4, X5, X19, X20'nin hemen hemen tüm yöntemlerle iyi değerlendirildiği görülebilir, başlangıç için bunları alabilir, daha sonra eklemeyi / çıkarmayı deneyebilirsiniz.

Ancak çıngıraktaki modeller Rat_DF2'deki bu 5 tahminci ile testi geçemedi, yine mucize gerçekleşmedi. Onlar. Kalan öngörücülerle bile, model parametrelerini seçmeniz, çapraz doğrulama yapmanız, öngörücüleri kendiniz eklemeniz/kaldırmanız gerekir.

 
San Sanych Fomenko :

Birleştirme sonucunda bir pencere çalıştırıp grafikler verebilir misiniz:

  • entropi değerleri
  • adfTest sonuçları
  • ArchTest sonuçları

Bu yılın yaklaşık Ocak ayı için eurusd m1 ve 1 günlük bir sürgülü pencere aldım.

Mantıksal olarak, eğer entropi büyüyorsa, ticareti durdurmalı ve düşük bir seviyede ticarete devam etmelisiniz. Ve burada, düşük entropi ile, bir nedenden dolayı, bir daire üzerinde ticaret yapmak daha kolay olmasına rağmen, eğilim olağandışıdır.

(ekteki koddaki yazım hatası düzeltildi, eskisini indirdiyseniz tekrar indirin)

Dosyalar:
 
Dr. tüccar :

Birkaç sayfa önce, bir spirali tanımayı öğrenen bir nöronla ilgili bir örnek yayınladınız. Standart iki özellik, 3 gizli nöron katmanı gerektirir. Ve daha fazla özellik eklerseniz, bir katman yeterlidir.
Yani burada, nörona yüzlerce geçmiş artış verebilir ve hepsini bir düzine gizli katmanda işleyebilir veya 90'lardan kalma tek katmanlı bir ızgaranın kaldırabileceği, kendi kendine yapılan iyi özellikleri seçebilirsiniz.

bu anlaşılabilir, sadece zaman içindeki sarmal değişmiyor..zamandaki sarmal ya kare ya da elips olduğunda ne tür yanlış bir problemi çözdüğünü tahmin ediyorsun

ve çapraz doğrulama yardımcı olmaz çünkü durum geçişleri rastgeledir

 
Dr. tüccar :

Mantıksal olarak, eğer entropi büyüyorsa, ticareti durdurmalı ve düşük bir seviyede ticarete devam etmelisiniz. Ve burada, düşük entropi ile, bir nedenden dolayı, bir daire üzerinde ticaret yapmak daha kolay olmasına rağmen, eğilim olağandışıdır.


O yüzden acele etme derim.

Yüksek entropi ile, karşı trend ticaretinin gerçekleştiği normal bir dağılım elde ederiz.

Düşük entropi ile - Pareto dağılımı, trend, "hafıza" - ne derseniz deyin.

Görünüşe göre R'de hazır şeyler var, senin için daha kolay. Artık negentropiyi hesaba katmak için çok çalışmam gerekiyor, bu yüzden forumdaki tartışmaları bıraktım.

Ben fikrimi koruyorum - entropiyi hesaba katmak her şeyin anahtarıdır.

 
Maksim Dmitrievski :

ve çapraz doğrulama yardımcı olmaz çünkü durum geçişleri rastgeledir

Durum geçişleri rastgele ise, işlem Markov'dur ve bu forum dizisinin tamamı gereksiz olarak silinebilir :)

Ama örneğin, sürecin Markovyen olmadığını düşünüyorum. Alexander aynı fikirde görünüyor, istatistikleri benden çok daha iyi biliyor, ona güvenirim.

 
Dr. tüccar :

Durum geçişleri rastgele ise, işlem Markov'dur ve bu forum dizisinin tamamı gereksiz olarak silinebilir :)

Ama örneğin, sürecin Markovyen olmadığını düşünüyorum. Alexander aynı fikirde görünüyor, istatistikleri benden çok daha iyi biliyor, ona güvenirim.

zaten yazdı: yerel düzeyde rastgele, büyük bir gecikmeye veya başka bir ölçeğe geçmeden dikkate alınamazlar ve orada süreç yine öngörülebilir bir biçim alır. Bir AMA - genel popülasyon bilinmemektedir ve başka bir ölçeğe geçiş sayısı sınırlıdır. Böylece Alexander tikler alır. Öyledir, ancak bu bile , tarihin yokluğu nedeniyle yetersizliği ile karşılaştığımızda ve sonuç olarak, incelenen VR'nin kalıplarının net bir şekilde anlaşılmadığı durumlarda her zaman işe yaramayacaktır.

tek kelimeyle, yerel seviyelerdeki bazı geçişler hiç tahmin edilemez, bunun için başka bir temsil seviyesine gitmeniz gerekiyor

 
Dr. tüccar :

Durum geçişleri rastgele ise, işlem Markov'dur ve bu forum dizisinin tamamı gereksiz olarak silinebilir :)

Ama örneğin, sürecin Markovyen olmadığını düşünüyorum. Alexander aynı fikirde görünüyor, istatistikleri benden çok daha iyi biliyor, ona güvenirim.

Sinir ağları kullanmamama rağmen, konuyu okudum, çünkü Feynman bir parçacığın A durumundan B durumuna (tam olarak durumdan duruma ve aptalca sonsuza kadar tahminde bulunmadan) bir parçacığın daha ileri hareketini tahmin etmenin mümkün olduğuna ikna olmuştu. .

Bunu yapmak için, girişteki mevcut ve önceki konumlar arasındaki olağan artışları kullandı, pek çok ek parametreyi hesaba kattı. Negentropiyi ilk kullanan L.A. Shelepin'di. ve nedense öldü ... işi bitirmedi. Bu nedenle, bu konuyu bitirmek bize kalmış.

 

Evet! Söylemeyi unuttum.

Durumlar, parçacığı neredeyse tamamen karakterize eden bir veri kümesi olarak kabul edilir. Onlar. bu bir veri setidir, başka bir deyişle - kendi özelliklerine sahip örneklem büyüklüğü - basıklık, asimetri, negentropi, vb.

Onlar. R. Feynman'ın güveniyle, belirli bir çift için örneklem büyüklüğünü doğru bir şekilde belirleyerek, bu katsayıların tarihsel olarak bu örnek için karakteristik ortalama değerleri hesaplanarak, belirli bir kümeye sahip olduğu tahmin edilebilir. Parametrelerin belirli bir zamanda belirli bir zaman aralığından sonra , sistem kararlı parametreleri ile duruma geçecektir.

Bu başlıktan beklediğim şey bu. İstediğiniz numune boyutunu belirlemede yardıma ihtiyacınız varsa - yazın, yardımcı olmaya çalışacağım.