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

 
СанСаныч Фоменко #:

Un patrón, por ejemplo, en modelos de madera, de los que hay muchos, modelos, es un árbol. Cada modelo de madera, por ejemplo, CatBoost encuentra más de un centenar de árboles, léase patrones. Para RandomForest tengo estadísticas: hasta 50 árboles el error de clasificación baja, y por encima de 150 árboles el error de clasificación es estable, es decir, en las series temporales que procesé el número de patrones no supera los 150.

Más bien, el camino a cada hoja cuya respuesta supera su umbral para abrir una operación es un patrón.
Por ejemplo:
1º split: 40 bar delta con corriente = 0,
2º split: 30 bar=100,
3º split: 20 bar =50,
4º split: 10 bar 100,
5º split: 1 bar = 0.
Son 2 máximos con un mínimo. ¿Un patrón? Sí. El camino a 1 hoja lo describe.

Si tiene 20 hojas en su árbol que superan el umbral que está negociando, tiene 20 patrones en su árbol que utiliza. Hojas menos exitosas - también describen patrones, pero son aleatorias/pérdidas.
Otros 100 árboles pueden usar otras fichas/barras con diferentes valores de división.
Forest promediará (sumará y dividirá por el número de árboles) las respuestas de todos los árboles, obtendremos una opinión media sobre la situación.
Boost simplemente sumará con un coeficiente de ponderación/aclaración.

 
Bogard_11 #:

Queda poco para formalizar estos 150 patrones en un patrón común. Si hay A y hay B, entonces C llegará en un momento determinado en tal o cual pato, si no, el momento y el punto serán diferentes. Sólo hay tres variantes diferentes del desarrollo de C. ¡Todo lo decide el TIEMPO! Y esto se puede resolver fácilmente primero a mano, y luego se puede meter en un robot, si se quiere.

P.D. - no sólo el tamaño de A ya da ciertos niveles para el retroceso de B (muy a menudo el retroceso no supera 1-3 puntos). Del mismo modo, B señala de antemano sobre los niveles de precios de C. Hay un montón de matemáticas en todas partes.

Por ejemplo, un Asesor Experto manual calcula automáticamente los niveles a partir del movimiento que nos interesa. Es decir, tiramos de la onda deseada y el futuro ya está marcado.

No hace falta formalizar nada, todo se hace por ti.

 
Forester #:

Más bien, el camino de cada hoja cuya respuesta supera su umbral para abrir una operación es un patrón.
Por ejemplo:
1º split: 40 bar delta con corriente = 0,
2º split: 30 bar=100,
3º split: 20 bar =50,
4º split: 10 bar 100,
5º split: 1 bar = 0.
Son 2 máximos con un mínimo. ¿Un patrón? Sí. El camino a 1 hoja lo describe.

Si tiene 20 hojas en su árbol que superan el umbral que está negociando, tiene 20 patrones en su árbol que utiliza. Hojas menos exitosas - también describen patrones, pero son aleatorias/pérdidas.
Otros 100 árboles pueden usar otras fichas/barras con diferentes valores de división.
Forest promediará (sumará y dividirá por el número de árboles) las respuestas de todos los árboles, obtendremos una opinión media sobre la situación.
Boost simplemente sumará con un coeficiente de ponderación/aclaración.

Un árbol es un árbol e incluso se pueden imprimir, si no recuerdo mal.

Las hojas, en cambio, son una materia oscura. Es en el nivel de las hojas donde el algoritmo, junto con las plumas del diseñador, busca un equilibrio entre el error de clasificación y el sesgo. Es posible configurar los árboles tan profundamente que describan el conjunto de entrada con exactitud: sobreentrenamiento o sobreajuste. Y el problema es conseguir una clasificación con un error mínimo en un futuro en el que no conocemos el conjunto de entrada. Las hojas son finitas, por supuesto, pero tienen que ser aproximadas, no exactamente "finitas". Por lo tanto, un patrón es un árbol.

 
СанСаныч Фоменко #:

Un árbol es un árbol e incluso se pueden imprimir, si no recuerdo mal.

Pero el asunto de las hojas es oscuro. Es en el nivel de las hojas donde el algoritmo, junto con las plumas del diseñador, busca un equilibrio entre el error de clasificación y el sesgo. Es posible configurar los árboles tan profundamente que describan exactamente el conjunto de entrada: sobreentrenamiento o sobreajuste. Y el problema es conseguir una clasificación con un error mínimo en un futuro en el que no conocemos el conjunto de entrada. Las hojas son finitas, por supuesto, pero tienen que ser aproximadas, no exactamente "finitas". Por lo tanto, un patrón es un árbol.

No estoy de acuerdo. Puse un ejemplo de una hoja con una profundidad de 5 (la hoja se obtiene a través de 5 divisiones y es un patrón). Si obtienes una hoja a través de 200 splits, te dará un patrón sobreentrenado que tendrá un rendimiento pobre en datos nuevos. Pero no dejará de ser un patrón. Un árbol es un conjunto de patrones.

 
Forester #:

No estoy de acuerdo. Puse un ejemplo de una hoja de 5 profundidades (la hoja se obtiene a través de 5 divisiones y es un patrón). Si obtienes una hoja a través de 200 splits, te dará un patrón reentrenado que tendrá un rendimiento pobre en los nuevos datos. Pero no dejará de ser un patrón. Un árbol es un conjunto de patrones.

Empecemos por la estufa.

Estoy considerando dos variantes de árboles: los de tipo bagging y los de tipo booleano (rf, ada).

Cualquiera de estos conjuntos de algoritmos, bastante amplios, considera los datos de entrada POSIBLEMENTE, sin referencia a las filas vecinas. por eso, el conjunto de entrenamiento se crea seleccionando filas al azar.

Dentro de una misma fila, se realiza una selección de los valores predictores que predecirán la clase especificada por la variable objetivo (el profesor) con la mayor probabilidad.

La combinación de un cierto número de predictores del conjunto de predictores de entrada y sus valores en una única fila se denomina justamente patrón.

 
СанСаныч Фоменко #:

Dentro de una misma línea, se seleccionan los valores predictores que predecirán la clase especificada por la variable objetivo (profesor) con la mayor probabilidad.

La combinación de un cierto número de predictores del conjunto de predictores de entrada y sus valores en una línea puede denominarse patrón.

No has entendido bien el stovepipe. Parece que nunca has mirado el código de construcción del árbol .... Ahí no hay operaciones dentro de una línea en absoluto!!!, sólo con conjuntos (con completos o con lotes).

En resumen:
Un conjunto aleatorio/completo de filas pasado a entrenamiento, es ordenado uno a uno para cada predictor/columna. Se comprueban diferentes divisiones (media/percentil/aleatoria), se cuentan las estadísticas de cada una y se selecciona la mejor división para todo el conjunto de filas, no para una/cada fila como sugieres.
Según la mejor división, el conjunto de cadenas se divide en 2 conjuntos, luego cada conjunto se ordena de nuevo y se selecciona la mejor división para cada una de las partes, etc. hasta que se alcanza la regla de parada (por profundidad, número de ejemplos por línea, etc.)

Puedes ver más detalles en el editor, tienes el fichero:
\MQL5\Include\Math\Alglib\dataanalysis.mqh
Función ClassifierSplit() y aquella desde la que se llama.
Lo entenderás en un par de horas y no tendrás que hablar de buscar predictores por una línea.
 
СанСаныч Фоменко #:

No hay necesidad de formalizar nada: todo se ha hecho por ti.

¿Y cuál es la precisión de tu robot en el intervalo de más o menos un par de tres horas en el futuro? Me refiero al punto de pivote que su IA calculará en el futuro. Con un error de más menos 5-10 pips intradía en la misma libra-dólar, y un error de +-1-2 barras en m5.

¿Y tu IA será capaz de darse cuenta a tiempo de que el modelo (patrón) no se ha movido por precio, sino por tiempo? Es decir, que no se activará el primer, sino el segundo o tercer punto de cálculo. :)

Los programadores son como niños, si alguien duda de las capacidades de un ordenador (como si una máquina lo encontrara todo), inmediatamente ponen morritos y se ofenden. ;) Y nadie puede ponerse al día de que nunca verán por qué no pueden encontrar un algoritmo que funcione al 100%. Y todo porque hay un pequeño detalle imperceptible, es él que da una señal de que las proporciones del patrón en el futuro se desplazará en una cierta cantidad. Pero ustedes son Heniuses y Dioses del código, no es lo honorable escoger algo (buscar todo a mano, contando en un papel o calculadora). Es más fácil codificar una mierda en la entrada, obtener una mierda en la salida, y luego intentar optimizarlo todo.

Hace más de 100 años se describió un claro sistema lógico matemático (que sigue funcionando como un reloj). Tanto en términos de álgebra como de geometría. Pero los inventores de sus propias lisapedes siguen en la abundancia....

 
Bogard_11 #:

Hace más de 100 años se describió un claro sistema matemático lógico (que sigue funcionando como un reloj). Tanto en términos de álgebra como de geometría. Pero todavía hay un montón de inventores de su propia lysapedes.....

Así que enséñanos tu oficio...
¿Por qué tanta palabrería?

Y veamos cómo funciona tu ST según una teoría centenaria que funciona como un reloj..
Vamos.
 
mytarmailS #:
Enséñame tu oficio.
¿A qué viene tanta palabrería?

Y veamos cómo funciona tu ST según una teoría centenaria que funciona como un reloj...
Oh, vamos.

Preguntas como esa marearán a todo el mundo.

Es como la escuela.

Tienes que empezar desde lejos y hacer preguntas sencillas.

¿Con qué par operas?

Y mostrar el último comercio, salida de entrada con todos los parámetros.

Y luego, cuántas operaciones al día haces y en este lugar hay una pausa.

P.Z.

Usted no debe hacer más de dos preguntas.

Usted puede ofender a los maestros. ¿Y si empiezas a hacerlo?

P.Z.

Yo apoyo al Spartak.

 
Forester #:

Estás malinterpretando la estufa. Parece que nunca has mirado el código de construcción del árbol.... Ahí no hay operaciones dentro de una sola fila en absoluto!!!, sólo con conjuntos (completos o lotes).

En resumen:
Un conjunto aleatorio/completo de filas pasado a entrenamiento, es ordenado uno a uno para cada predictor/columna. Se comprueban diferentes divisiones (media/percentil/aleatoria), se cuentan las estadísticas de cada una y se selecciona la mejor división para todo el conjunto de filas, no para una/cada fila como sugieres.
Según la mejor división, el conjunto de cadenas se divide en 2 conjuntos, luego cada conjunto se ordena de nuevo y se selecciona la mejor división para cada una de las partes, etc. hasta que se alcanza la regla de parada (por profundidad, número de ejemplos por línea, etc.)

Puedes ver más detalles en el editor, tienes el fichero:
\MQL5\Include\Math\Alglib\dataanalysis.mqh
Función ClassifierSplit() y aquella desde la que se llama.
Lo entenderás en un par de horas y no tendrás que hablar de buscar predictores por una línea.
Aquí será más claro, el código es más conciso y tiene comentarios https://habr.com/ru/companies/vk/articles/438560/.

1. Clase RegressionTree()

Пишем XGBoost с нуля — часть 1: деревья решений
Пишем XGBoost с нуля — часть 1: деревья решений
  • 2019.02.06
  • habr.com
Привет, Хабр! После многочисленных поисков качественных руководств о решающих деревьях и ансамблевых алгоритмах (бустинг, решающий лес и пр.) с их непосредственной реализацией на языках программирования, и так ничего не найдя (кто найдёт — напишите в комментах, может, что-то новое почерпну), я решил сделать своё собственное руководство, каким...
Razón de la queja: