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

 
Alexey Burnakov:
Yuri, gracias. Lo pensaré.

Tenemos una pregunta. ¿Cómo se seleccionaron los predictores?

De todos modos, no los sacrifico. Eso es lo que hace VMR. El siglo XXI tiene más de 16 años y todo el trabajo duro debería ser realizado por sistemas automatizados, no por humanos.

Yury Reshetov:

... Más concretamente, VMR reduce el hiperespacio reduciendo algunos de los predictores.

Incluso hay un ejemplo concreto en el que VMR reduce automáticamente uno de los predictores. Ver Predicción de quiebras

Y en esta página puede incluso probar un sencillo ejemplo clásico de cómo lo hace el algoritmo: Reducción de los predictores no informativos y de los vectores (muestras) sin soporte en un conjunto de entrenamiento

Прогнозируем банкротства - Векторная машина Решетова
  • sites.google.com
Авторы: Myoung-Jong Kim, Ingoo Han опубликовали статью под названием: «The discovery of experts decision rules from qualitative bankruptcy data using genetic algorithms». Судя по оригинальной авторской статье, выборка предназначалась для генетических алгоритмов, т. к. предполагалось, что для других алгоритмов она не по зубам. Однако, вынужден...
 
Tengo que probar su algoritmo en la práctica. No puedo imaginar por qué funcionaría tan bien.
 
Yury Reshetov:

No los selecciono de ninguna manera. Eso es lo que hace VMR. El siglo XXI tiene más de 16 años y todo el trabajo duro debería ser realizado por sistemas automatizados, no por humanos.


Según mi experiencia, que NO estoy absolutizando, los algoritmos de selección de predictores incorporados a los modelos son los más ineficientes. Tampoco lo son los numerosos paquetes y funciones independientes disponibles para la selección de predictores.

¿Por qué lo digo?

Para mí hay una prueba básica simple y para el comercio.

Aprende el modelo. Lo probamos en una muestra que está fuera de la muestra de entrenamiento por tiempo y comparamos los errores. En primer lugar, los errores no pueden rondar el 50%: no es un modelo enseñable en absoluto. Consideramos que los errores son inferiores al 40%. Si en la muestra de entrenamiento y de validación estos errores son aproximadamente iguales, entonces el modelo no se reentrena. Si estos errores son significativamente diferentes, y pueden divergir por veces, especialmente si el error de entrenamiento es inferior al 10%, entonces el modelo está sobreentrenado. La razón del reentrenamiento es que hay predictores de ruido que el algoritmo de aprendizaje del modelo NO reentrena.

Hasta ahora no he encontrado conjuntos de predictores que no incluyan ruido. Y todos los algoritmos de selección de predictores no podían hacer frente a este ruido, ¡ni tampoco la idea de engrosar (regularizar) los modelos!

Así que tu opinión es errónea, y dado que conseguir modelos sobreentrenados es peligroso en lo real, que siempre está "fuera de muestra".

 
Alexey Burnakov:

Propongo el problema número uno. Publicaré la solución más tarde. SanSanych ya lo ha visto, por favor no me digas la respuesta.

Introducción: Para construir un algoritmo de negociación, es necesario saber qué factores serán la base para predecir el precio, o la tendencia, o la dirección de apertura de la operación. La selección de estos factores no es una tarea fácil, y es infinitamente complicada.

Adjunto un archivo con un conjunto de datos csv artificial que hice.

Los datos contienen 20 variables con el prefijo input_, y una variable de la derecha output.

La variable de salida depende de algún subconjunto de variables de entrada(el subconjunto puede contener de 1 a 20 entradas).

Tarea: con ayuda de cualquier método (machine learning) seleccionar las variables de entrada, con ayuda de las cuales es posible determinar el estado de la variable de salida en los datos existentes.

¿Algún otro problema con la clasificación binaria? Porque llegué a un barullo cuando los resultados y el método de generación de muestras ya estaban expuestos.

Me gustaría participar y probar una nueva versión de mi clasificador binario al mismo tiempo.

 
IvannaSvon:
Yuri, por favor, responde a un mensaje privado.

El guión está en el archivo adjunto.

El conjunto de datos se tomó del EURUSD H1

Archivos adjuntos:
 
Yury Reshetov:

¿Algún otro problema con la clasificación binaria? Porque he llegado a un barullo cuando ya han publicado tanto los resultados como el método de generación de muestras.

Me gustaría participar y probar una nueva versión de mi clasificador binario al mismo tiempo.

Siempre hay tareas :)

Hay dos ficheros en el archivo - train.csv y test.csv. La última columna de los archivos es el resultado requerido de la clasificación binaria. Tenemos que utilizar el archivo train.csv para entrenar el modelo, y luego aplicar el modelo a test.csv. Los resultados de destino ya conocidos para test.csv no se pueden utilizar de antemano, sólo se necesitan para la comprobación final. Los datos se toman de eurusd d1, clase 0 o 1 - caída o subida del precio en la siguiente barra. Si el modelo predice correctamente el resultado de test.csv al menos en 6 de cada 10 casos, entonces puede intentar operar con él en Forex. Si predice correctamente en 7 de cada 10 casos (y más) - este es el camino correcto hacia el grial, tenemos que intentar entrenar y probar el modelo en otros años y meses, y si todo será igual - entonces muy bien.

He tenido en cuenta los errores del pasado, ahora los archivos se basan en el delta de la barra en lugar de los valores brutos. Y todo se normaliza por filas dado el mismo tipo de predictores en una fila en lugar de por columnas.

Yo mismo trato de utilizar la genética para enumerar las variantes predictivas. Sobre el conjunto de predictores entreno el modelo de componentes principales con dos validaciones cruzadas y devuelvo el error de clasificación como valor de fitness para la genética. Cuando la genética alcanza su límite, tomo el conjunto final de predictores y entreno la neurona de nuevo con dos validaciones cruzadas. El error de predicción final en los datos de prueba es de alrededor del 40%. Aquí empiezan las malas noticias - dependiendo de los parámetros de la neurona (número de pesos internos, número de iteraciones entre las validaciones cruzadas) el error final varía, va aleatoriamente alrededor del 30%-50%. En su día me alegré de obtener sólo un 30%, pero resultó que no puedo controlarlo y sólo obtengo una media del 40%.
La pregunta lógica es ¿por qué se necesita un modelo de componentes principales en el medio? Simplemente no tiene parámetros de entrenamiento, alimentar los datos, obtener el modelo, calcular el error de validación cruzada en los datos de prueba. Si se utiliza una red neuronal para determinar la función de aptitud de la genética, el tiempo de entrenamiento aumenta mucho, además de que no está claro qué parámetros de entrenamiento utilizar para la propia red neuronal.

También he portado el modelo VMR de Yuri a R, en el apéndice. Tomé mis datos con predictores de ruido, obtuve un error en los datos de entrenamiento del 30%, y un error en los datos de prueba del 60%, es decir, no ocurrió ningún milagro, el modelo se volvió a entrenar. Sin embargo, es posible que haya un error en la migración del código, si ves alguna incoherencia por favor házmelo saber. Al entrenar el modelo no tenía suficiente memoria para una máquina de núcleo grande, usé una mediana (parámetro kernelTrickMode <- 2). No pude esperar un millón de iteraciones por columna, usé 10000 (iterPerColumn <- 10000).

Archivos adjuntos:
 
Dr.Trader:

Siempre hay tareas :)

Hay dos ficheros en el archivo: train.csv y test.csv.

Por desgracia, mi archivo RAR no se descompone. En mi opinión, es mejor empacar todo en ZIP. Existen descompresores para archivos ZIP en todas las plataformas. Además, muchos usuarios no utilizan RAR.



Dr.Trader:
También porté el modelo VMR de Yuri a R, en la aplicación. Tomé mis datos con predictores de ruido y obtuve un error del 30% en los datos de entrenamiento y un error del 60% en los datos de prueba, es decir, no se produjo ningún milagro y el modelo fue reentrenado. Probablemente se trate de un error en la migración del código, pero si ves alguna incoherencia, házmelo saber.

Definitivamente, lo investigaré. Sin embargo, no conozco a R lo suficientemente bien.

¿El puerto se hizo manualmente o mediante algún tipo de autómata?

 
¿Podría alguien más probar el método de componentes principales para el rechazo del ruido, pero con predictores con miles de observaciones, en lugar de comolo hace el Dr.Trader?
 
Dr.Trader:


Ver mensaje privado.
 
SanSanych Fomenko:
Tal vez alguien más intente el método de componentes principales para rechazar el ruido, pero los predictores que tienen miles de observaciones, no comoel Dr.Trader?

¿Por qué no lo pruebas?

ps. Lo probé hace tiempo y no saqué nada interesante.

En el curso de mi investigación tienen algunos resultados modestos pero interesantes, me gustaría compartir, pero en este foro "maravilloso" no puedo ni una imagen o adjuntar un archivo, tal vez quién sabe cuál es el problema?

Razón de la queja: