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

 
Mihail Marchukajtes:

Un error no es sólo un error. Un pequeño error puede tener un gran impacto.

Y a la NS no se le pide que capture datos repetitivos. Se le pide que identifique patrones ocultos para obtener el resultado correcto en ausencia de datos repetitivos. Comprender la generalización. Cuando tenemos un dominio finito de datos, pero sólo tenemos el 50% de esos datos. La red aprende e identificando un patrón puede construir el resto de los datos que no ha visto. Es como reconstruir una vieja grabación de vídeo con píxeles perdidos que la red reconstruye por sí misma.

Así que se trata de un enfoque estadístico. Por ejemplo, tengo 20 fotos de diferentes triángulos. En el 21, al triángulo le falta la hipotenusa. Puedo determinar fácilmente que se trata de un triángulo no dibujado, basándome en las estadísticas recogidas - (hay un triángulo en cada foto). Es decir, un error en el dibujo del triángulo no es crítico, porque ya tengo la estadística en su conjunto. ¿No funciona este principio con NS?
 
Etiqueta Konow:
Bueno, eso es un enfoque estadístico. Por ejemplo, tengo 20 imágenes de diferentes triángulos. En el 21, al triángulo le falta la hipotenusa. Puedo determinar fácilmente que se trata de un triángulo no dibujado basándome en las estadísticas recogidas: cada foto tiene un triángulo. Es decir, un error en el dibujo del triángulo no es crítico para mí, porque ya tengo estadísticas en general. ¿No funciona este principio con NS?
Bueno, a grandes rasgos, si no se tiene en cuenta que en 21 fotos sólo tienes una esquina dibujada y el triángulo está fuera de lugar ahí...
 
Mihail Marchukajtes:
Bueno a grandes rasgos, a no ser que cuentes que en las 21 fotos sólo tienes una esquina dibujada y no se habla de triángulo ahí...
Así es como funciona una predicción basada en la estadística. Preveo que es un triángulo sin dibujar, que se convertirá en hueco en la siguiente foto.
 
Te diré esto. Todo viene con la experiencia, y en el MdD hay dos tipos de experiencia, la teórica y la práctica, y son muy diferentes, créeme. Cuanto más se practica, más se empieza a entender la filosofía del campo. Eso es, ir a por patatas en autoaislamiento parece una búsqueda :-)(
 

Para entender la esencia y la base teórica de las redes neuronales, es esencial conocer la teoría de Kolmogorov, Arnold y Hecht-Nielson.

Para la práctica, estos conocimientos no son especialmente necesarios, pero una comprensión general de los mismos no estaría de más.

 
elibrarius:

Te he dado un enlace para ver los splits de los datos del JOT. Ahí se carga el modelo completo en un archivo. Luego se leen las divisiones.

¿Seguro que los árboles ya asimétricos pueden descargarse?


elibrarius:

En el refuerzo, por definición, todos los árboles son importantes. Cada árbol sucesivo perfecciona todos los anteriores. Si se desecha un árbol en el medio, todos los que le sigan funcionarán con datos erróneos - deben ser reentrenados, sin tener en cuenta el árbol desechado. En este caso, el primer árbol será una réplica muy fiel del descartado.

No, eso no es exactamente cierto. Cuando el modelo está listo, hay un montón de hojas de árbol en él, lo que da una probabilidad cercana a 0,5, que en esencia es una basura.


elibrarius:

Sí. Las hojas individuales del binning están incompletas, porque se ven aumentadas por las respuestas de las hojas de otros árboles de refinado. Y sólo las respuestas acumuladas de, por ejemplo, 100 árboles, dan la respuesta correcta.

Tratar de obtener algo fiable a partir de una sola hoja del modelo de refuerzo es imposible.
En la potenciación, se suman las 100 respuestas de 100 árboles, cada uno de los cuales da, por ejemplo, 0,01 en total = 1. El valor de 1 hoja = 0,01 - ¿qué quieres obtener de él? No hay nada en él. Sólo la suma de 100 hojas dará la respuesta correcta.
De hecho, allí el 1er árbol es fuerte y da por ejemplo 0,7, el resto acercan la suma a 1. Si sólo se consideran las hojas del primer árbol por separado, pero creo que son más débiles que cualquier árbol del bosque aleatorio, debido a su menor profundidad.
El bosque aleatorio tiene una media, por ejemplo, cada hoja de 100 árboles = 1, la media también = 1. En él los zorros son completos, pero con desviaciones aleatorias. Pero una multitud de 100 respuestas, da la media como una respuesta razonablemente precisa.

Es posible obtener información útil de un solo árbol, pero es poco frecuente.

Incluso el primer árbol no será el mejor.

El refuerzo es rápido, pero hay que seleccionar cuidadosamente los modelos, y eso requiere una muestra grande, lo cual es un problema.

 
Aleksey Nikolayev:

Para entender la esencia y la base teórica de las redes neuronales, es esencial conocer la teoría de Kolmogorov, Arnold y Hecht-Nielson.

Para la práctica, estos conocimientos no son especialmente necesarios, pero una comprensión general de los mismos no estaría de más.

Spc.

La falta de una teoría rigurosa relacionada con estos modelos de redes neuronales no impide investigar las posibilidades de su aplicación a problemas prácticos.

 
Aleksey Vyazmikin:

¿Seguro que ya se pueden descargar los árboles asimétricos?

He probado un ejemplo, añadiendo grow_policy='Lossguide'.
Aquí hay un pedazo de modelo que contiene divisiones:

'split': {'border': 16.049999237060547, 'float_feature_index': 1, 'split_index': 0, 'split_type': 'FloatFeature'}}, 'right': {'left': {'value': 0.05454545454545454, 'weight': 153}, 'right': {'value': 0.8265895953757225, 'weight': 161}, 'split': {'border': 5.999999046325684, 'ctr_target_border_idx': 0, 'split_index': 4, 'split_type': 'OnlineCtr'}}, 
'split': {'cat_feature_index': 1, 'split_index': 1, 'split_type': 'OneHotFeature', 'value': -845129958}}, {'left': {'left': {'value': -0.43103007753084105, 'weight': 444}, 'right': {'value': -0.10906568919445614, 'weight': 133}, 'split': {'border': 6.999999046325684, 'ctr_target_border_idx': 0, 'split_index': 2, 'split_type': 'OnlineCtr'}}, 'right': {'left': {'value': 0.02835585997337218, 'weight': 163}, 'right': {'value': 0.5713236394502054, 'weight': 151},
'split': {'border': 5.999999046325684, 'ctr_target_border_idx': 0, 'split_index': 3, 'split_type': 'OnlineCtr'}}, 
'split': {'cat_feature_index': 1, 'split_index': 1, 'split_type': 'OneHotFeature', 'value': -845129958}

También hay divisiones con Depthwise. Pero eso es en Python, no he visto una forma de descargar el modelo en R. Pero creo que es posible guardar el modelo en R en formato interno, abrirlo en Python y descargarlo a JSON. Y a partir de ella todo lo que necesitas para usar

 
Colegas. El tema es interesante, pero no entiendo la diferencia entre el aprendizaje automático y la simple optimización de parámetros en un probador? Al fin y al cabo, el objetivo será más o menos el mismo: tomar la decisión de entrar (salir) del mercado cuando los parámetros de entrada (salida) coincidan. Ambos métodos dejan de funcionar cuando el mercado cambia fuertemente. Hay que volver a formarlos y optimizarlos. En resumen y sin filosofía.
 
Yan Barmin:
Colegas. El tema es interesante, pero no entiendo la diferencia entre el aprendizaje automático y la simple optimización de parámetros en un probador? Porque el propósito será aproximadamente el mismo: tomar la decisión de entrar (salir) del mercado cuando los parámetros de entrada (salida) coincidan. Ambos métodos dejan de funcionar cuando el mercado cambia fuertemente. Hay que volver a formarlos y optimizarlos. En resumen y sin filosofía.

La diferencia está en la flexibilidad de la herramienta. La red neuronal puede adaptarse a cualquier serie. Mira el polinomio de abajo. La anchura de los coeficientes, así como su número, pueden ser absolutamente diferentes.

double getBinaryClassificator1(double v0, double v1, double v2, double v3, double v4, double v5, double v6, double v7, double v8, double v9, double v10) {
   double x0 = 2.0 * (v0 + 2.6721302849319) / 5.70376880500565 - 1.0;
   double x1 = 2.0 * (v1 + 0.862195874260524) / 4.318953971518134 - 1.0;
   double x2 = 2.0 * (v2 + 0.636958350251177) / 2.893126110958697 - 1.0;
   double x3 = 2.0 * (v3 + 1.28131145039971) / 4.47439455086403 - 1.0;
   double x4 = 2.0 * (v4 + 1.40655622673661) / 3.84454848827483 - 1.0;
   double x5 = 2.0 * (v5 + 1.05792133319783) / 4.0361119526354905 - 1.0;
   double x6 = 2.0 * (v6 + 0.960632890559664) / 2.810809591513934 - 1.0;
   double x7 = 2.0 * (v7 + 2.50474545671368) / 4.50657217846072 - 1.0;
   double x8 = 2.0 * (v8 + 3.37124943164126) / 5.00153555828254 - 1.0;
   double x9 = 2.0 * (v9 + 1.01434366581359) / 3.81959911946484 - 1.0;
   double x10 = 2.0 * (v10 + 0.997401251919643) / 2.959840023725593 - 1.0;
   double decision = 0.0455519244734931 * sigmoid(x0 + x5 + x8)
  + 0.01733841684822077 * sigmoid(x5 + x7 + x8)
  + 0.21269063180827888 * sigmoid(x0 + x5 + x7 + x8)
  + 0.02875816993464052 * sigmoid(x0 + x8 + x9)
  -0.025853304284676835 * sigmoid(x0 + x4 + x8 + x9)
  + 0.021169208424110384 * sigmoid(x0 + x7 + x10)
  + 0.07184095860566449 * sigmoid(x0 + x8 + x10)
  + 0.03769063180827887 * sigmoid(1.0 + x0 + x3 + x5 + x8)
  -0.03179012345679012 * sigmoid(1.0 + x3 + x6 + x9)
  + 0.02750544662309368 * sigmoid(1.0 + x0 + x5 + x7 + x9)
  + 0.1463507625272331 * sigmoid(1.0 + x1 + x2 + x8 + x9)
  + 0.012799564270152506 * sigmoid(1.0 + x0 + x2 + x10)
  + 0.1864560639070443 * sigmoid(1.0 + x0 + x1 + x5 + x8 + x10)
  + 0.07494553376906318 * sigmoid(1.0 + x0 + x2 + x5 + x8 + x10)
  + 0.014669571532316631 * sigmoid(1.0 + x2 + x5 + x6 + x8 + x10)
  + 0.05266884531590414 * sigmoid(1.0 + x0 + x1 + x7 + x8 + x10)
  + 0.04566085693536674 * sigmoid(1.0 + x0 + x1 + x2 + x8 + x9 + x10)
  + 0.061546840958605666 * sigmoid(1.0 + x0 + x2 + x4 + x8 + x9 + x10);
   return decision;
}

Ahora imagine el número de variantes, ningún Asesor Experto multiparamétrico puede presumir de tal flexibilidad. También se dice que son capaces de generalizar, pero eso no es seguro :-)