トレーディングにおける機械学習:理論、モデル、実践、アルゴトレーディング - ページ 3283

 
fxsaber #:

ー行列の戦列計算の決まりだな。

ある行列と同じ行列を高速アルギボフ・アルゴリズムPearsonCorrMで計算したらどうなるだろうか。どちらが速いだろうか。
PearsonCorrMはAlgibovのline-by-lineアルゴリズムより40-50倍速く、おそらく高速な自作ツールでもこの速度差は克服できないだろう。
 
Forester #:
ある行列を計算し、同じ行列を高速アルギボフ・アルゴリズムPearsonCorrMで計算したらどうなるだろうか。どちらが速いだろうか。PearsonCorrMはAlgibovのline-by-lineアルゴリズムより40-50倍速く、おそらく高速な自家製アルゴリズムでもこのスピード差は克服できないでしょう。

ここでは、 PearsonCorrMの2倍の遅れを示している。

 

CatBoostの トレーニングスピードをpythonとコマンドラインで比較した:

- 起動からモデルの保存まで、サンプルの読み込みを含めて20%高速化。

- 学習プロセス自体が12%高速化

同じモデルでテストしたところ、トレーニング結果は同じでした。

もちろん、コマンドラインの方が速い。

 
Aleksey Vyazmikin CatBoost トレーニングのスピードを、パイソンとコマンドラインで比較した:

- 起動からモデルの保存まで、サンプルの読み込みを含めて20%高速化

- 学習プロセス自体が12%高速化

同じモデルでテスト - 学習結果は同じ。

もちろん、コマンドラインの方が速い。


WinExecで実行できますし、テスターで最適化することもできます。

#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は試していませんが、何かできると思います。
一番難しいのは、トレーニングが終わった瞬間を見極めることです。agent_dir+"˶model.bin "フォルダにあるモデルファイルの出現を1秒に1回チェックすることでやっています。Catboostがモデルファイルをどこに置くかは分からない。

もう一つ考えられる問題は、モデルファイルが巨大な場合、書き込みに時間がかかるかもしれない。ファイルを一時停止するか、書き込みプロセスによってファイルが閉じられていないかチェックする必要があるかもしれません。
 
Forester #:


WinExecで実行できるし、テスターで最適化もできる。

私はbatファイルを実行しています - 今のところ、これが現在のタスクにとって最も便利なオプションです。

今のところ、サンプル取得後にトレーニングを自動起動するタスクは、偵察サーチしかありません。後で自動batファイルを作る予定です。

フォレスター#:

Catboostは試していませんが、何か考えられると思います。

一番難しいのは、トレーニング終了の瞬間を見極めること。私は、agent_dir+"˶model.bin "フォルダにあるモデルファイルの出現を1秒に1回チェックすることで行っています。Catboostがモデルファイルをどこに置くかは分からないので、他の場所を探さなければならないかもしれない。

もう一つ考えられる問題は、モデルファイルが巨大な場合、書き込みに時間がかかるかもしれません。ファイルを一時停止するか、書き込みプロセスによって読み込みが終了していないかチェックする必要があるかもしれません。

あなたの解決策は興味深いですね。

しかし、実行プログラムから終了応答を得る可能性はあると思います。

ブートニクを実行すれば、タスクの最後に新しいファイルを作成することができます。

 
Aleksey Vyazmikin #:

たぶん、列車のサンプルサイズにおける-1と0のバリアントの相対的な成功率は、それを減らすべきである?一般的に、Recallはこれに反応するようです。

あなたの意見では、このような組み合わせの結果は、我々の場合、互いに比較可能であるべきでしょうか?それとも,データは取り返しがつかないほど古いのでしょうか?

私は訓練サンプルを3つに分割し,variant -1とvariant 0について3つのセットを訓練し,また元の訓練だけを3つのサンプルとして訓練しました.

こうなりました。

この一般化をPR=(Precision-0.5)*Recallとしました。

訓練は、訓練サンプルの2番目と3番目の部分を犠牲にして行われているようだ。

それでも、トレーニングのランダム性を推定する方法としては悪くなさそうだ。理想的には、トレーニングは各セグメントで比較的うまくいくはずです。そうでなければ、明日モデルが単に機能しなくなるという保証はありません。

 
Aleksey Vyazmikin #:

トレーニングが、サンプルトレインの2番目と3番目の部分を犠牲にして行われているようだ。

それでも、トレーニングのランダム性を評価する方法としては悪くなさそうだ。理想的には、トレーニングは各セグメントで比較的うまくいくはずで、そうでなければ、明日モデルが単に機能しなくなるという保証はない。

最後の2列はその結果である。

Indeed, the results have improved.サンプルが大きければ大きいほど、トレーニングの結果は良くなるという仮定が成り立つ。

トレーニングサンプルの1番目と2番目の部分でトレーニングをしてみて、2番目と3番目の部分よりも結果が悪くなければ、サンプルの鮮度の要因は量よりも重要でないと考えることができます。

 

私は「予測変数の予測力」について何度も書いてきた。これは2つのベクトル間の距離として計算される。

距離を計算するツールのリストを見つけた:

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"

これは標準的なものの他に、独自の距離のセットを持っています。

stats::dist() 
 
Aleksey Vyazmikin #:

そして、これがその結果である。

確かに結果は改善されている。サンプル数が多ければ多いほど、トレーニング結果は良くなるという仮定が成り立つ。

トレーニングサンプルの1部と2部でトレーニングしてみる必要があります - そして、結果が2部と3部よりもはるかに悪くない場合、サンプルの新鮮さの要因は、量よりも重要でないと考えることができます。

Cuto、またしても我々はマット・スタットについて無知から抜け出せないでいる。
私はマットスタットを様々な側面から叩いてモンテカルライズするアイディアを持っている。
 
СанСаныч Фоменко #:

私は「予測変数の予測力」について何度も書いてきた。これは2つのベクトル間の距離として計算される。

私は距離を計算するツールのリストを見つけた:

これは標準的なものの他に、独自の距離のセットを持っています。

使い方の例を教えていただけますか?

理由: