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

 
Bu kodu bir komut dosyasına yazdım ve birkaç kez çalıştırdım, sonuçları zaman zaman biraz farklı aldım ...
 
Sihirbaz_ :

tohum ayarla(1234)

Nedir ve nereye itilir?

 
Michael Marchukajtes :

, o zaman bu savaşın yarısından fazlası ... öyleyse ....

%90 ve modeller bir teknoloji meselesidir, caret uygun koşum takımı ile bu güzelliklerle doludur.

 

İşte aynı anda vtreat ile bir örnek,

Genel olarak, bu veri ön işlemedir, ancak hedefle ilgili olarak her tahmin edicinin bir değerlendirmesi olarak kullanılabilir. Paketin tahmin edicilerin etkileşimini dikkate almamasını sevmiyorum, kodu yalnızca tahmin edicileri hedef için birer birer değerlendirmeniz gerekiyorsa kullanın.

forexFeatures <- read.csv2( "Qwe.txt" , dec="." )
forexFeatures <- forexFeatures[,- 1 ]

library (vtreat)


#designTreatments C подходит только для классификации с двумя классами
treatmentsC <- designTreatmentsC(dframe = forexFeatures,
                                 varlist=colnames(forexFeatures)[-ncol(forexFeatures)], #названия колонок с предикторами (тут - все кроме последней колонки)
                                 outcomename = colnames(forexFeatures)[ncol(forexFeatures)], #названия колонок с таргетом (тут - последняя колонка)
                                 outcometarget = "1" ) #текст или цифра одного из классов
#обработка, сортировка результата
treatmensC_scores <- treatmentsC$scoreFrame[order(treatmentsC$scoreFrame$sig),]
treatmensC_scores <- treatmensC_scores[!duplicated(treatmensC_scores$origName),]
treatmensC_scores <- treatmensC_scores[,c( "origName" , "sig" )] 
treatmensC_scores$is_good <- treatmensC_scores$sig <= 1/nrow(forexFeatures)
treatmensC_scores #вывод на экран таблички результатов. Лучшие предикторы вверху таблицы. Чем оценка sig меньше тем лучше. Желательно (колонка is_good==TRUE) чтоб sig была меньше чем 1/nrow(forexFeatures), всё что больше - плохо 


#designTreatments N подходит для регрессии или если больше двух классов. Если всего два класса то предпочтительнее использовать C функцию, она вроде как и коррелирующие предикторы убирает заодно.
treatmentsN <- designTreatmentsN(dframe = forexFeatures,
                                 varlist=colnames(forexFeatures)[-ncol(forexFeatures)], #названия колонок с предикторами (тут - все кроме последней колонки)
                                 outcomename = colnames(forexFeatures)[ncol(forexFeatures)]) #названия колонок с таргетом (тут - последняя колонка)
#обработка, сортировка результата
treatmensN_scores <- treatmentsN$scoreFrame[order(treatmentsN$scoreFrame$sig),]
treatmensN_scores <- treatmensN_scores[!duplicated(treatmensN_scores$origName),]
treatmensN_scores <- treatmensN_scores[,c("origName","sig")] 
treatmensN_scores$is_good <- treatmensN_scores$sig <= 1/nrow(forexFeatures)
treatmensN_scores #вывод на экран таблички результатов. Лучшие предикторы вверху таблицы. Чем оценка sig меньше тем лучше. Желательно (колонка is_good==TRUE) чтоб sig была меньше чем 1/nrow(forexFeatures), всё что больше - плохо

 
Michael Marchukajtes :
Nedir ve nereye itilir?

set.seed , rastgele sayı üretecinin ilk tohumunu ayarlar . Kodu çalıştırmadan önce aynı duruma koyarsanız (1234 gibi), sonraki kod her durumda aynı şekilde yürütülür.

read.csv2(..vb
tohum ayarla(1234)
Boruta(HedefProf...vb)

Ancak muhtemelen algoritmanın daha fazla yinelemeye ihtiyacı vardır (örneğin maxRuns = 1000000), varsayılan olarak olduğu gibi küçük bir sayıya sığmaz ve yarı yolda durur.

 

Gerilemeyi düşünüyordum...
Fin'e gerileme. pürüzsüz bir işlevden ziyade, 1 pt'lik bir adımla kademeli bir işlevdir. (hem öğretmen hem de tahmin için). Örneğin, hareket +/- 100 puanla sınırlıysa, 200 sınıf için sınıflandırma ile bir benzerlik vardır. Onlar. çıktıda, en olası sınıfı tahmin ediyoruz - örneğin, +22 pt.
Bu, iyi sonuçlar için, modelin yapısının/karmaşıklığının (nöron sayısı) regresyon için 200 kat daha fazla olması gerektiği anlamına gelmiyor mu? Adımı 5 pt'ye çıkarırsanız, o zaman 40 kez - daha az doğruluk nedeniyle biraz daha ekonomik olacaktır.

 
Dosyayı vtreat'te çalıştırdım, pek bir şey itiraf etmem. Yalnızca 4 giriş seçildi. tavsiyeler için teşekkürler... devam edeceğim...
 
Sihirbaz_ :

Şimdi kutu grafiğini hatırlayın, bu ipliği girdilerle yapın ve tekrar çalıştırın.

set.seed parametresi her iki durumda da aynıdır.

Girişlerle ne yapmalı???

Hmmm..... Girdilerimden daha iyisini beklediğimi itiraf ediyorum. Her halükarda, daha önemlilerinin olacağını düşündüm, kesinlikle 100'den dördü değil. Bu kadar çok sayıda girdide, modeller acı verici bir şekilde çok küçük çıkıyor, ancak pratikte daha basit olduğu fark edildi. model, o kadar iyi çalışır. Ve ortaya çıkan modele baktığımda ve testlerimi çalıştırdığımda, bu küçük pisliğin çok iyi olduğunu anlıyorum ..... Sonuç çıkarmak için çok erken, daha fazla test gerekiyor. kazmaya devam ediyorum...

 
nerede yazıyordum
forexFeatures <- read.csv2( "Qwe.txt" )

gerçek ihtiyaç
forexFeatures <- read.csv2( "Qwe.txt" , dec= "." )

Üzgünüm, dosyanızdaki formatı gözden kaçırdım. Eski gönderileri düzelteceğim. Kodu tekrar çalıştırın, sonuçlar daha iyi olacaktır, aksi takdirde ondalık kesirli tüm sayılar gerektiği gibi işlenmez.
 
Michael Marchukajtes :

Girişlerle ne yapmalı???

Örneğin jPrediction, verileri [-1; 1] aralığına ölçeklendirir ve bu sayılar üzerinde zaten eğitilmiştir. Girdileri değerlendirmeden önce R'de aynı aralığa ölçeklendirmek de mümkündür.

forexFeatures <- read.csv2( "Qwe.txt" , dec= "." )

for (i in 1 :(ncol(forexFeatures)- 1 )){
  forexFeatures[,i] <- (forexFeatures[,i] - min(forexFeatures[,i]))/(max(forexFeatures[,i])-min(forexFeatures[,i]))* 2 - 1
}

vtreat, Boruta, etc,...

Ağaç bazlı tahmin yöntemleri muhtemelen sonucu değiştirmeyecektir, ormanlar için verilerin hangi aralıkta geldiği çok önemli değil ama kontrol etmekte fayda var. vtreat ayrıca aralık konusunda seçici değildir.


Ancak genel olarak, girdilerin nörona beslenmeden önce bile lineer olmayan dönüşümünden bahsediyor. Nöronlar girdilere karşı çok hassastır ve girdi verilerini bir şekilde özel bir şekilde işlerseniz sonuçları iyileşebilir. Örneğin, girdileri sigmoid aracılığıyla dönüştürmek için böyle bir numara duydum.