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

 
Ayrıca foreca paketinde girdi ve çıktı bağımlılığının nasıl belirlendiğiyle de ilgileniyorum. Belki önemsiz, belki değil.
 
Alexey Burnakov :
Ayrıca foreca paketinde girdi ve çıktı bağımlılığının nasıl belirlendiğiyle de ilgileniyorum. Belki önemsiz, belki değil.

Sadece satıra baktım, düzeltmeme veya onaylamama izin verin, ancak fikirlerime göre, bazı dahili algoritmalara dayanan paket, belirli bir rastgele değişkenin tahmin yeteneğini değerlendirir, yani. rastgele bir değişkenin değerlerini geleceğe tahmin etme yeteneği. Bu bir trend alanıysa, o zaman bir tane alacağız ve bunlar fiyat artışlarıysa, o zaman %0.83 alacağız, ki bu benim için oldukça açık. Ve bütün mesele yöntemin kendisindedir ve pratikte her şey tam tersidir, çünkü artışlar çok daha iyi tahmin edilir - durağanlığa durağan olmayan zaman serilerinin trendlerinden çok daha yakındırlar. Aracın kendisini anlamalı ve bu aracı, bu aracın uygun olduğu nesnelere uygulamalıyız.

Genel olarak konuşursak, sistem analizinde hatalar vardır.

1 numaralı hata.

Yanlış probleme doğru yöntemleri uygulamak.

İstatistiklerde, son derece yaygındır.

 
San Sanych Fomenko :

Genel olarak, bana orijinal fikir kaybolmuş gibi görünüyor. Benim için bu ilk düşünce, MODELDEN BAĞIMSIZ OLARAK, hedef değişkeni tahmin etmek için kullanılan tahmin edicilerin her birinin yeteneğini belirleyecek yöntemlere ihtiyaç olduğuydu.

Modelden bağımsız seçime bir örnek, vtreat paketidir. Bir şekilde verileri analiz eder ve ardından onlara hedef değerlere uygunluk değerlendirmesi verir.

data(iris)
iris[, 5 ] <- as.numeric(iris[, 5 ]) #пакет не умет факторы, их нужно сконвертировать в числа
iris_rand <- runif(nrow(iris)* 10 , min(iris[, 1 : 4 ]), max(iris[, 1 : 4 ])) #новых 10 предикторов со случайными значениями
dim(iris_rand) <- c(nrow(iris), 10 )
colnames(iris_rand) <- paste0( "rand_" , c( 1 : 10 ))
iris <- cbind(iris_rand, iris)
library (vtreat)
treatments <- designTreatmentsN(dframe = iris, varlist = colnames(iris)[ 1 :(ncol(iris)- 1 )], outcomename = colnames(iris)[ncol(iris)], verbose = TRUE )
treatments
format(treatments)
significance <- treatments$scoreFrame[, "sig" ]
names(significance) <- treatments$scoreFrame[, "origName" ]
barplot(significance)

İris tablosu için rastgele değerlerle 10 yeni tahmin edici oluşturulur. designTreatmentsN her tahmin ediciyi puanlayacaktır, puan ne kadar düşükse o kadar iyidir. Bu örnekte, orijinal 4 öngörücü (grafikteki son olanlar) açıkça göze çarpıyor, neredeyse sıfır puana sahip, bu çok iyi. Tahmin edicileri seçerken yapılacak ilk şey, en büyük değerlere sahip olanı kaldırmaktır.
Yalnızca 2 hedef değer varsa - (0/1, DOĞRU/YANLIŞ, -1/1, 2 seviyeli bir faktör vb.) bu özel durum için bir designTreatments C işlevi vardır.


Bu paket y-aware pca'da da kullanıldı. vtreat paketi, tahmin edicileri y-farkındalık aralığına ölçeklendirir ve ardından bileşenler neredeyse normal bir şekilde oluşturulur (sadece yeniden ölçeklendirme ve merkezleme olmadan). Yani isterseniz bu paket yardımıyla örneğin y-aware randomforest gibi ilginç şeyler yapabilirsiniz.
Daha fazlasını buradan okuyun: https://cran.r-project.org/web/packages/vtreat/vignettes/vtreatScaleMode.html

 
Dr.Tüccar :

Modelden bağımsız seçime bir örnek, vtreat paketidir. Bir şekilde verileri analiz eder ve ardından onlara hedef değerlere uygunluk değerlendirmesi verir.

İris tablosu için rastgele değerlerle 10 yeni tahmin edici oluşturulur. designTreatmentsN her tahmin ediciyi puanlayacaktır, puan ne kadar düşükse o kadar iyidir. Bu örnekte, orijinal 4 öngörücü (grafikteki son olanlar) açıkça göze çarpıyor, neredeyse sıfır puana sahip, bu çok iyi. Tahmin edicileri seçerken yapılacak ilk şey, en büyük değerlere sahip olanı kaldırmaktır.
Yalnızca 2 hedef değer varsa - (0/1, DOĞRU/YANLIŞ, -1/1, 2 seviyeli bir faktör vb.) bu özel durum için bir designTreatments C işlevi vardır.


Bu paket y-aware pca'da da kullanıldı. vtreat paketi, tahmin edicileri y-farkındalık aralığına ölçeklendirir ve ardından bileşenler neredeyse normal bir şekilde oluşturulur (sadece yeniden ölçeklendirme ve merkezleme olmadan). Yani isterseniz bu paket yardımıyla örneğin y-aware randomforest gibi ilginç şeyler yapabilirsiniz.
Daha fazlasını buradan okuyun: https://cran.r-project.org/web/packages/vtreat/vignettes/vtreatScaleMode.html

İşte burada, temellere geri dönelim.

Ve şimdi daha ileri.

SADECE bu paketler tarafından onlar için işlendikten sonra herhangi bir modelin kullanımı. Umut, bu tür ön işlemeye sahip modellerin fazla takma ile hasta OLMAYACAKTIR.

 
San Sanych Fomenko :

Yanlış probleme doğru yöntemleri uygulamak.

CaretFA ile zaman serilerinin değerlendirilmesinde ustalaşmadım, açıklamalarda çok fazla formül var. Yeni değerlerin eskileriyle korelasyonu ve Fourier dönüşümü sonrası frekans grafiğinin analizi, bu grafiğin yeni veriler üzerinde nasıl değiştiğinin analizi hakkında bir şeyler yakaladım. Orada radyofizikte forex'ten daha fazlasını anlamanız gerekiyor :)

DAX, SMI, CAC, FTSE indekslerine uygulandığı paketin açıklamasında örnekler vardır, kullanılan D1 üzerindeki artışlardır yani hem paket hem de görevler doğrudur.
Küçük bir nüans, örnekte, fiyatların zaman serisinin önce logaritmik fonksiyon log() tarafından işlenmesi ve ancak bundan sonra deltaların bulunmasıdır. diff(log(EuStockMarkets[c(100:200),])) * 100
Ancak log() kullansam da kullanmasam da farkı fark etmedim, değerlendirmenin sonucu değişmedi, bu daha çok verilerin grafikte daha rahat görüntülenmesi için yapıldı.

 
Dr.Tüccar :

CaretFA ile zaman serilerinin değerlendirilmesinde ustalaşmadım, açıklama kısmında çok fazla formül var. Yeni değerlerin eskileriyle korelasyonu ve Fourier dönüşümü sonrası frekans grafiğinin analizi, bu grafiğin yeni veriler üzerinde nasıl değiştiğinin analizi hakkında bir şeyler yakaladım. Orada radyofizikte forex'ten daha fazlasını anlamanız gerekiyor :)

DAX, SMI, CAC, FTSE indekslerine uygulandığı paketin açıklamasında örnekler vardır, kullanılan D1 üzerindeki artışlardır yani hem paket hem de görevler doğrudur.
Küçük bir nüans, örnekte, fiyatların zaman serisinin önce logaritmik fonksiyon log() tarafından işlenmesi ve ancak bundan sonra deltaların bulunmasıdır. diff(log(EuStockMarkets[c(100:200),])) * 100
Ancak log() kullansam da kullanmasam da farkı fark etmedim, değerlendirmenin sonucu değişmedi, bu daha çok verilerin grafikte daha rahat görüntülenmesi için yapıldı.

Bu paketle ilgili olarak, benim için soru temel:

  • bireysel bir tahmin edicinin tahmin gücünü verir,
  • veya tahmin edicileri kullanarak hedef değişkenin tahmin gücü?

 
San Sanych Fomenko :

Bu paketle ilgili olarak, benim için soru temel:

  • bireysel bir tahmin edicinin tahmin gücünü verir,
  • veya tahmin edicileri kullanarak hedef değişkenin tahmin gücü?

Hedef değişken ve tahmin ediciler arasındaki bağlantıları aramaz. Paketin yazarı iki uygulama hakkında yazıyor -

1) Omega() işlevi tarafından hiç tahmin edilebilir olup olmadığını (%0 = "beyaz gürültü" ile %100 = sinüzoid arasında bir ölçekte) zaman serisini değerlendirin. Sonuç %0 ise, hangi tahmin ediciler kullanılırsa kullanılsın zaman serisinin davranışını tahmin etmeye çalışmak imkansızdır.
2) birkaç öngörücü alın, onları aynı işlevle değerlendirin, pca'ya benzer bir şekilde yeni öngörücüler oluşturun, böylece yeni öngörücüler için Omega() sonucunun orijinal olanlardan bile daha yüksek olması. Bunun hedef değerleri daha iyi tahmin etmeye yardımcı olup olmayacağı sadece şanstır, paket bu tahmincilerin tam olarak neyi tahmin etmesi gerektiği ile ilgilenmiyor. Mesele şu ki, tahmin edici gürültü değilse, onu kullanan modeller daha kararlı tahmin yapacaktır.

 
Dr.Tüccar :

Hedef değişken ve tahmin ediciler arasındaki bağlantıları aramaz. Paketin yazarı iki uygulama hakkında yazıyor -

1) Omega() işlevi tarafından hiç tahmin edilebilir olup olmadığını (%0 = "beyaz gürültü" ile %100 = sinüzoid arasında bir ölçekte) zaman serisini değerlendirin. Sonuç %0 ise, hangi tahmin ediciler kullanılırsa kullanılsın zaman serisinin davranışını tahmin etmeye çalışmak imkansızdır.
2) birkaç öngörücü alın, onları aynı işlevle değerlendirin, pca'ya benzer bir şekilde yeni öngörücüler oluşturun, böylece yeni öngörücüler için Omega()'nın sonucu orijinal olanlardan bile daha yüksek olur. Bunun hedef değerleri daha iyi tahmin etmeye yardımcı olup olmayacağı da aynı derecede şanslı, paket bu tahminciler tarafından tam olarak neyin tahmin edilmesi gerektiği ile ilgilenmiyor. Mesele şu ki, tahmin edici gürültü değilse, onu kullanan modeller daha kararlı tahmin yapacaktır.

Büyük ölçüde şüphelerimi doğruladın.

Teşekkür ederim.

Paketin sınıflandırma için işe yaramaz olduğuna inanıyorum.

Ancak ekstrapolasyonun türünü tahmin etmek için yararlı olabilir.

Örneğin, tahmin paketini alın. Seriyi üç bileşene ayırıyor, sonra ileriye doğru tahminde bulunuyor ve ekliyor. Bir veya daha fazla adım ileride bir tahmin alır.

Şimdi soru şu: Hangi döviz çifti alınmalı? CaretFA'yı alıyoruz ve birkaç döviz çiftinin tahmin gücünü hesaplamak için kullanıyoruz. Sınırlı bir pencerede, pencere hareket ettikçe bu tür tahmin gücünün değiştiğinden şüpheleniyorum. Bir döviz çifti seçtik, tahmini tahmin ediyoruz (veya başka bir paket - birçoğu var), ticaret yapıyoruz, tüm pozisyonları kapattıktan sonra tekrar bir döviz çifti seçiyoruz.

 
Dr.Tüccar :

Modelden bağımsız seçime bir örnek, vtreat paketidir. Bir şekilde verileri analiz eder ve ardından onlara hedef değerlere uygunluk değerlendirmesi verir.

İris tablosu için rastgele değerlerle 10 yeni tahmin edici oluşturulur. designTreatmentsN her tahmin ediciyi puanlayacaktır, puan ne kadar düşükse o kadar iyidir. Bu örnekte, orijinal 4 öngörücü (grafikteki son olanlar) açıkça göze çarpıyor, neredeyse sıfır puana sahip, bu çok iyi. Tahmin edicileri seçerken yapılacak ilk şey, en büyük değerlere sahip olanı kaldırmaktır.
Yalnızca 2 hedef değer varsa - (0/1, DOĞRU/YANLIŞ, -1/1, 2 seviyeli bir faktör vb.) bu özel durum için bir designTreatments C işlevi vardır.


Bu paket y-aware pca'da da kullanıldı. vtreat paketi, tahmin edicileri y-farkındalık aralığına ölçeklendirir ve ardından bileşenler neredeyse normal bir şekilde oluşturulur (sadece yeniden ölçeklendirme ve merkezleme olmadan). Yani isterseniz bu paket yardımıyla örneğin y-aware randomforest gibi ilginç şeyler yapabilirsiniz.
Daha fazlasını buradan okuyun: https://cran.r-project.org/web/packages/vtreat/vignettes/vtreatScaleMode.html

Kodunuza süsen ve rastgele tahmin edicilerle bakıyorum ve nasıl programlayacağımı bilmediğimi anlıyorum, beni 10 satır üçe sığdıran şey ....

ve vtreat tarafından yapılan bu seçim, RF'de yerleşik olarak bulunan aynı anlamadan bir şekilde farklı mı? verimlilik anlamındadır.

 
mytarmailS :

ve vtreat tarafından yapılan bu seçim, RF'de yerleşik olarak bulunan aynı anlamadan bir şekilde farklı mı? verimlilik anlamındadır.

Vtreat daha iyi. Belirli bir tahmin modeline uymadan, hedef değişkeni tahmin etmek için tahmin edicinin genel olarak ne kadar iyi/kötü olduğunu istatistiksel olarak her şeyi değerlendirir. Skoru 1/(öngörücü sayısı) üzerinde olmayan tahmin edicilerin kullanılması tavsiye edilir. Örneğin, 200 tahmin edici varsa, yalnızca 1/200'den az puanı olanları alırız. Tahminciler tahmin edilebilir ve tüm tahminler eşiğin üzerindeyse - başarısız bir şekilde modeli eğitmeye ve yeni verileri tahmin etmeye çalışmak yerine - hemen diğer tahmin edicileri aramaya başlamak daha iyidir.

Birkaç dezavantaj vardır - paket, tahmin edicilerle tek tek çalışır ve etkileşimlerini dikkate almaz. Ayrıca, tamamen aynı veya yüksek korelasyonlu tahminciler olsa bile, vtreat'in yinelenenleri kaldırmayacağından, bazen yoluma çıkmasından hoşlanmıyorum.

Neden: