Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 3283

 

He comparado la velocidad de entrenamiento de CatBoost en python y a través de la línea de comandos:

- 20% más rápido desde el inicio hasta guardar los modelos, incluyendo la lectura de las muestras

- 12% más rápido el proceso de aprendizaje en sí

Probado en el mismo modelo - el resultado del entrenamiento es idéntico.

Por supuesto, la línea de comandos es más rápida.

 
Aleksey Vyazmikin CatBoost en python y a través de la línea de comandos:

- 20% más rápido desde el inicio hasta guardar los modelos, incluyendo la lectura de muestras

- 12% más rápido el proceso de aprendizaje en sí

Probado con el mismo modelo, el resultado del entrenamiento es idéntico.

Por supuesto, la línea de comandos es más rápida.

¿Sigues utilizando la línea de comandos para ejecutar EXEs?
Puedes ejecutarlos a través de WinExec e incluso optimizarlos en el probador.

#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%.). Файл с моделью появился - расчет закончен.
//модель обучена, читаем файл модели и используем

No he probado Catboost, pero creo que se puede hacer algo.
Lo más difícil es determinar el momento en que termina el entrenamiento. Yo lo hago comprobando la aparición del fichero modelo en la carpeta agent_dir+"\model.bin" 1 vez por segundo. Dónde pone Catboost el fichero modelo - no lo sé, puede que tenga que buscarlo en otro sitio.

Otro posible problema, si el fichero modelo es enorme, puede tardar mucho en escribirse, es decir, el fichero ya existe, pero no se ha escrito hasta el final. Puede ser necesario hacer una pausa en el archivo o comprobar que el archivo no está cerrado de la lectura por el proceso de escritura....
 
Forester #:

¿Sigues utilizando la línea de comandos para ejecutar EXEs?
Puedes ejecutarlos a través de WinExec e incluso optimizarlos en el probador.

Yo ejecuto archivos bat - hasta ahora es la opción más conveniente para las tareas actuales.

Hasta ahora sólo hay una tarea para el lanzamiento automático de la formación después de obtener una muestra - búsqueda de reconocimiento. Planeo hacer un archivo bat automático para ello más adelante.

Forester #:

No he probado Catboost, pero creo que se nos puede ocurrir algo.

Lo más difícil es determinar el momento del fin del entrenamiento. Yo lo hago comprobando la aparición del fichero modelo en la carpeta agent_dir+"\model.bin" 1 vez por segundo. Dónde pone Catboost el fichero modelo - no lo sé, puede que tenga que buscarlo en otro sitio.

Otro posible problema, si el fichero modelo es enorme, puede tardar mucho en escribirse, es decir, el fichero ya existe, pero no se ha escrito hasta el final. Puede que tenga que pausar el archivo o comprobar que no está cerrado a la lectura por el proceso de escritura....

Su solución es interesante - Voy a mirar, tal vez voy a tomar para su aplicación.

Pero creo que hay una posibilidad de obtener una respuesta final del programa ejecutable - Yo quería utilizar este enfoque.

Opción con archivos - si se ejecuta un bootnik, a continuación, de nuevo - sólo puede crear un nuevo archivo al final de la tarea.

 
Aleksey Vyazmikin #:

¿Quizá la tasa de éxito relativa de las variantes -1 y 0 en el tamaño de la muestra del tren, y debería reducirse? En general, parece que Recall reacciona a esto.

En su opinión, ¿los resultados de estas combinaciones deberían ser comparables entre sí en nuestro caso? ¿O los datos están irremediablemente obsoletos?

He dividido la muestra del tren en 3 partes, he entrenado 3 conjuntos para la variante -1 y la variante 0, y también he entrenado sólo el tren original como tres muestras.

Esto es lo que obtuve.

Hice esta generalización PR=(Precisión-0,5)*Recuperación

Parece que el entrenamiento se produce a expensas de la 2ª y 3ª parte de la muestra del tren - ahora las he combinado y ejecutado el entrenamiento - a ver qué pasa.

Aún así, parece que no es un mal método para estimar la aleatoriedad del entrenamiento. Lo ideal sería que el entrenamiento tuviera un éxito relativo en cada segmento, de lo contrario no hay garantía de que el modelo deje de funcionar mañana.

 
Aleksey Vyazmikin #:

Parece que el entrenamiento se está produciendo a expensas de la 2ª y 3ª parte del tren de muestra - ahora las he combinado y ejecutado el entrenamiento - veremos qué pasa.

Aún así, parece que no es un mal método para evaluar la aleatoriedad del entrenamiento. Lo ideal sería que el entrenamiento tuviera un éxito relativo en cada segmento, de lo contrario no hay garantía de que el modelo deje de funcionar mañana.

Y aquí están los resultados - las dos últimas columnas

Efectivamente, los resultados han mejorado. Podemos suponer que cuanto mayor sea la muestra, mejor será el resultado del entrenamiento.

Deberíamos probar a entrenar con la 1ª y la 2ª parte de la muestra de entrenamiento - y si los resultados no son mucho peores que con la 2ª y la 3ª parte, entonces el factor de la frescura de la muestra puede considerarse menos significativo que el volumen.

 

He escrito muchas veces sobre el "poder predictivo de los predictores". que se calcula como la distancia entre dos vectores.

He encontrado una lista de herramientas para calcular la distancia:

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"

Esta es además de la estándar, que tiene su propio conjunto de distancias

stats::dist() 
 
Aleksey Vyazmikin #:

Y aquí está el resultado - las dos últimas columnas

Efectivamente, los resultados han mejorado. Podemos suponer que cuanto mayor sea la muestra, mejor será el resultado del entrenamiento.

Es necesario tratar de entrenar en 1 y 2 partes de la muestra de entrenamiento - y si los resultados no son mucho peores que en 2 y 3 partes, entonces el factor de la frescura de la muestra puede ser considerado menos significativo que el volumen.

Cuto, de nuevo estamos atascados en la ignorancia de la mat stat.
Tengo una idea para montecarlise el matstat golpeando desde diferentes lados.
 
СанСаныч Фоменко #:

He escrito muchas veces sobre el "poder predictivo de los predictores". que se calcula como la distancia entre dos vectores.

He encontrado una lista de herramientas para calcular la distancia:

Esta es además de la estándar, que tiene su propio conjunto de distancias

¿Puedes mostrarme un ejemplo de cómo usarlo?

 
Maxim Dmitrievsky #:
Cuto, volvemos a no conocer el matstat
.
Hay una idea para montecarlise el matstat golpeando desde diferentes ángulos

Esta es tu hora - haz brillar tus conocimientos - ¡desenmascara al ignorante!

Y en serio, mejor piensa en los resultados - publico gratis, aunque no me cuesta mucho.

 
Aleksey Vyazmikin #:

Esta es su hora: haga brillar sus conocimientos y desenmascare a los ignorantes.

Y si es en serio, mejor piensa en los resultados - yo publico gratis, aunque no me cuesta mucho.

¿Y cuáles son los costes financieros?
Razón de la queja: