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

 
fxsaber #:

Bu, matrisin satır satır hesaplanmasının özüdür.

Merak ediyorum, bir matrisi ve aynı matrisi hızlı Algibov algoritması PearsonCorrM ile hesaplarsak ne olur? Kim daha hızlı olacak.
PearsonCorrM Algibov'un satır satır algoritmasından 40-50 kat daha hızlıdır, muhtemelen hızlı bir ev yapımı araç bile böyle bir hız farkının üstesinden gelmeyecektir.
 
Forester #:
Merak ediyorum, bir matris hesaplanırsa ve aynı matris hızlı Algibov algoritması PearsonCorrM ile hesaplanırsa ne olur? Kim daha hızlı olurdu.
PearsonCorrM Algibov'un satır satır algoritmasından 40-50 kat daha hızlı, muhtemelen hızlı bir ev yapımı algoritma bile bu kadar hız farkını aşamayacaktır.

İşte PearsonCorrM'den ev yapımı iki kat gecikme.

 

CatBoost eğitiminin hızını python ve komut satırı üzerinden karşılaştırdım:

- Örneklerin okunması da dahil olmak üzere başlangıçtan modellerin kaydedilmesine kadar %20 daha hızlı

- 12 daha hızlı öğrenme sürecinin kendisi

Aynı model üzerinde test edildi - eğitim sonucu aynı.

Elbette, komut satırı daha hızlıdır.

 
Aleksey Vyazmikin CatBoost eğitiminin hızını python ve komut satırı üzerinden karşılaştırdım:

- Örneklerin okunması da dahil olmak üzere başlangıçtan modellerin kaydedilmesine kadar %20 daha hızlı

- 12 daha hızlı öğrenme sürecinin kendisi

Aynı model üzerinde test edildi - eğitim sonucu aynı.

Elbette, komut satırı daha hızlıdır.

EXE'leri çalıştırmak için hala komut satırını kullanıyor musunuz?
Bunları WinExec aracılığıyla çalıştırabilir ve hatta test cihazında optimize edebilirsiniz.

#import "kernel32.dll"
   int WinExec(uchar &Path[],int Flag);
   int SleepEx(int msec, bool Alertable=false);//SleepEx(1000,false); - для простого таймера
#import 
...
string CommonPath = TerminalInfoString(TERMINAL_COMMONDATA_PATH)+ "\\Files\\";
string RAM_dir="RAM\\";//использую диск в памяти для скорости
string agent_dir=RAM_dir+"0000";//при запуске в терминале
string p=MQLInfoString(MQL_PROGRAM_PATH);// C:\Users\User\AppData\Roaming\MetaQuotes\Tester\ххххххххххххххххххххххх\Agent-127.0.0.1-3000\MQL5\Experts\testEXE.ex5
int agent_pos=StringFind(p,"Agent-");// при оптимизации запустится в папке с номером агента
if(agent_pos!=-1){agent_pos=StringFind(p,"-",agent_pos+6);agent_dir = RAM_dir+StringSubstr(p,agent_pos+1,4);}//выдаст 3001, 3002... по номеру папки в котором тестер запустился
FolderCreate(agent_dir,FILE_COMMON);
...
sinput string PathExe="С:\\your.exe";//path to exe file
uchar ucha[];
StringToCharArray(PathExe_+" --dir "+CommonPath+agent_dir+"\\",ucha);//string to train
int visible=0;
FileDelete(agent_dir+"\\model.bin",FILE_COMMON); //сначала удалить старый
int x=WinExec(ucha,visible); //visible=0 - work in hidden window, 1 - work in opened exe window - can be closed by user. Better to use 0, to run proces up to finish.
while(true){if(FileIsExist(agent_dir+"\\model.bin",FILE_COMMON)){break;}SleepEx(1000);}// используем SleepEx из DLL (Sleep() от MQL не работает в оптимизаторе, будет грузить проц на 100% проверками файла. Через DLL 1%.). Файл с моделью появился - расчет закончен.
//модель обучена, читаем файл модели и используем

Catboost'u denemedim ama bir şeyler yapabileceğinizi düşünüyorum.
En zor şey eğitimin bittiği anı belirlemek. Ben bunu agent_dir+"\model.bin" klasöründeki model dosyasının görünümünü saniyede 1 kez kontrol ederek yapıyorum. Catboost'un model dosyasını nereye koyduğunu bilmiyorum, başka bir yerde aramam gerekebilir.

Başka bir olası sorun, model dosyası çok büyükse, yazılması uzun sürebilir, yani dosya zaten var, ancak sonuna kadar yazılmamış olabilir. Dosyayı duraklatmak veya dosyanın yazma işlemi tarafından okumaya kapatılmadığını kontrol etmek gerekebilir....
 
Forester #:

EXE'leri çalıştırmak için hala komut satırını kullanıyor musunuz?
Bunları WinExec aracılığıyla çalıştırabilir ve hatta test cihazında optimize edebilirsiniz.

Bat dosyalarını çalıştırıyorum - şu ana kadar mevcut görevler için en uygun seçenek bu.

Şimdiye kadar, bir örnek aldıktan sonra eğitimin otomatik olarak başlatılması için yalnızca bir görev var - keşif araştırması. Daha sonra bunun için otomatik bir bat dosyası yapmayı planlıyorum.

Forester #:

Catboost'u denemedim ama sanırım bir şeyler düşünebiliriz.

En zor şey eğitimin bittiği anı belirlemektir. Bunu, model dosyasının agent_dir+"\model.bin" klasöründeki görünümünü saniyede 1 kez kontrol ederek yapıyorum. Catboost'un model dosyasını nereye koyduğunu bilmiyorum, başka bir yerde aramam gerekebilir.

Başka bir olası sorun, model dosyası çok büyükse, yazılması uzun zaman alabilir, yani dosya zaten var, ancak sonuna kadar yazılmamış olabilir. Dosyayı duraklatmanız veya yazma işlemi tarafından okumaya kapatılmadığını kontrol etmeniz gerekebilir....

Çözümünüz ilginç - bakacağım, belki uygulama için alacağım.

Ancak çalıştırılabilir programdan bir son yanıt alma olasılığı olduğunu düşünüyorum - bu yaklaşımı kullanmak istedim.

Dosyalarla ilgili seçenek - eğer bir bootnik çalıştırırsanız, o zaman tekrar - görevin sonunda yeni bir dosya oluşturabilirsiniz.

 
Aleksey Vyazmikin #:

Belki de -1 ve 0 varyantlarının göreceli başarı oranı trenin örneklem boyutundadır ve azaltılmalıdır? Genel olarak, Recall'ın buna tepki verdiği görülüyor.

Sizce bu tür kombinasyonların sonuçları bizim durumumuzda birbirleriyle karşılaştırılabilir mi? Yoksa veriler geri dönüşü olmayan bir şekilde güncelliğini mi yitirdi?

Tren örneğini 3 parçaya böldüm, varyant -1 ve varyant 0 için 3 set eğittim ve ayrıca sadece orijinal treni üç örnek olarak eğittim.

Elde ettiğim sonuç bu.

Bu genellemeyi PR=(Precision-0.5)*Recall yaptım

Görünüşe göre eğitim, tren örneğinin 2. ve 3. kısımları pahasına gerçekleşiyor - şimdi bunları birleştirdim ve eğitimi çalıştırdım - bakalım ne olacak.

Yine de bu, eğitimin rastgeleliğini tahmin etmek için kötü bir yöntem olmayabilir gibi görünüyor. İdeal olarak, eğitim her segmentte nispeten başarılı olmalıdır, aksi takdirde modelin yarın çalışmayı bırakacağının garantisi yoktur.

 
Aleksey Vyazmikin #:

Görünüşe göre eğitim, örnek trenin 2. ve 3. kısmı pahasına gerçekleşiyor - şimdi onları birleştirdim ve eğitimi çalıştırdım - ne olacağını göreceğiz.

Yine de bu, eğitimin rastgeleliğini değerlendirmek için kötü bir yöntem olmayabilir gibi görünüyor. İdeal olarak, eğitim her segmentte nispeten başarılı olmalıdır, aksi takdirde modelin yarın çalışmayı bırakacağının garantisi yoktur.

Ve işte sonuçlar - son iki sütun

Gerçekten de sonuçlar iyileşmiştir. Örneklem ne kadar büyük olursa eğitim sonucunun da o kadar iyi olacağı varsayımını yapabiliriz.

Eğitim örneğinin 1. ve 2. kısımları üzerinde eğitim yapmayı denemeliyiz - ve sonuçlar 2. ve 3. kısımlardan çok daha kötü değilse, örnek tazeliği faktörünün hacimden daha az önemli olduğu düşünülebilir.

 

İki vektör arasındaki mesafe olarak hesaplanan "tahmin edicilerin tahmin gücü" hakkında birçok kez yazdım.

Mesafeyi hesaplamak için bir araç listesine rastladım:

library(proxy)
pr_DB$get_entry_names()
##  [1] "Jaccard"         "Kulczynski1"    
##  [3] "Kulczynski2"     "Mountford"      
##  [5] "Fager"           "Russel"         
##  [7] "simple matching" "Hamman"         
##  [9] "Faith"           "Tanimoto"       
## [11] "Dice"            "Phi"            
## [13] "Stiles"          "Michael"        
## [15] "Mozley"          "Yule"           
## [17] "Yule2"           "Ochiai"         
## [19] "Simpson"         "Braun-Blanquet" 
## [21] "cosine"          "angular"        
## [23] "eJaccard"        "eDice"          
## [25] "correlation"     "Chi-squared"    
## [27] "Phi-squared"     "Tschuprow"      
## [29] "Cramer"          "Pearson"        
## [31] "Gower"           "Euclidean"      
## [33] "Mahalanobis"     "Bhjattacharyya" 
## [35] "Manhattan"       "supremum"       
## [37] "Minkowski"       "Canberra"       
## [39] "Wave"            "divergence"     
## [41] "Kullback"        "Bray"           
## [43] "Soergel"         "Levenshtein"    
## [45] "Podani"          "Chord"          
## [47] "Geodesic"        "Whittaker"      
## [49] "Hellinger"       "fJaccard"

Bu, kendi mesafe kümesine sahip olan standart olanın yanı sıra

stats::dist() 
 
Aleksey Vyazmikin #:

Ve işte sonuç - son iki sütun

Gerçekten de sonuçlar iyileşmiştir. Örneklem ne kadar büyük olursa, eğitim sonucunun o kadar iyi olacağı varsayımını yapabiliriz.

Eğitim örneğinin 1 ve 2 bölümleri üzerinde eğitim yapmayı denemek gerekir - ve sonuçlar 2 ve 3 bölümlerden çok daha kötü değilse, o zaman örnek tazeliği faktörü hacimden daha az önemli kabul edilebilir.

Cuto, yine mat statüsünün cehaletinde sıkışıp kaldık.
Matstat'ı farklı yönlerden vurarak monte etmek için bir fikrim var.
 
СанСаныч Фоменко #:

İki vektör arasındaki mesafe olarak hesaplanan "tahmin edicilerin tahmin gücü" hakkında birçok kez yazdım.

Mesafeyi hesaplamak için bir araç listesine rastladım:

Bu, kendi mesafeleri olan standart olanın yanı sıra

Bana nasıl kullanılacağına dair bir örnek gösterebilir misiniz?