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

 
SanSanych Fomenko:


Si se coge casi cualquier libro sobre minería de datos, se describen necesariamente los procedimientos para eliminar los predictores correlacionados.

Los predictores que interactúan no están necesariamente correlacionados... Interactúan en target....

Y la presencia de la interacción produce resultados de la especie:

> summary(lm(data = train_sample_list[[1]], price_future_lag_diff_6 ~ price_diff_lag_11 * price_diff_min_lag_16))


Call:

lm(formula = price_future_lag_diff_6 ~ price_diff_lag_11 * price_diff_min_lag_16, 

    data = train_sample_list[[1]])


Residuals:

      Min        1Q    Median        3Q       Max 

-0.035970 -0.000824  0.000001  0.000847  0.027278 


Coefficients:

                                          Estimate Std. Error t value Pr(>|t|)    

(Intercept)                              3.883e-05  3.146e-05   1.234  0.21714    

price_diff_lag_11                        4.828e-02  9.092e-03   5.310 1.12e-07 ***

price_diff_min_lag_16                   -3.055e-02  1.141e-02  -2.678  0.00743 ** 

price_diff_lag_11:price_diff_min_lag_16 -3.520e+00  3.515e-01 -10.014  < 2e-16 ***

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1


Residual standard error: 0.0024 on 10465 degrees of freedom

Multiple R-squared:  0.01611, Adjusted R-squared:  0.01583 

F-statistic: 57.11 on 3 and 10465 DF,  p-value: < 2.2e-16

Todos los predictores son significativos (y su interacción). Las estadísticas F son impresionantes...

 
Alexey Burnakov:

Los predictores que interactúan no necesariamente se correlacionan... Interactúan en target....

Y la presencia de la interacción produce los resultados de la especie:

> summary(lm(data = train_sample_list[[1]], price_future_lag_diff_6 ~ price_diff_lag_11 * price_diff_min_lag_16))


Call:

lm(formula = price_future_lag_diff_6 ~ price_diff_lag_11 * price_diff_min_lag_16, 

    data = train_sample_list[[1]])


Residuals:

      Min        1Q    Median        3Q       Max 

-0.035970 -0.000824  0.000001  0.000847  0.027278 


Coefficients:

                                          Estimate Std. Error t value Pr(>|t|)    

(Intercept)                              3.883e-05  3.146e-05   1.234  0.21714    

price_diff_lag_11                        4.828e-02  9.092e-03   5.310 1.12e-07 ***

price_diff_min_lag_16                   -3.055e-02  1.141e-02  -2.678  0.00743 ** 

price_diff_lag_11:price_diff_min_lag_16 -3.520e+00  3.515e-01 -10.014  < 2e-16 ***

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1


Residual standard error: 0.0024 on 10465 degrees of freedom

Multiple R-squared:  0.01611, Adjusted R-squared:  0.01583 

F-statistic: 57.11 on 3 and 10465 DF,  p-value: < 2.2e-16

Todos los predictores son significativos (y su interacción). Las estadísticas F son impresionantes...

Bueno, tal vez tenía una idea diferente sobre el significado de la palabra "interacción".
 

Vizard_:

No hay datos...

Si no hay datos, no hay nada que discutir.

Descansa... ¡tú!

 
Vizard_:
Yur, por lo menos no seas tonto) acaba de olvidar quien te dijo en 9 y.y. que tu red no está bien configurada, y con un polianalista puede tirar de la fórmula))))
No hay pretensiones ni secretos, estoy utilizando herramientas estándar de dm, a veces con pequeñas ediciones. Si sólo te interesan las referencias, escucha,
pero las realidades son un poco diferentes... El experimento anterior fue con datos reales. Lo hice con datos artificiales simples. El primer conjunto fue reconocido absolutamente
correctamente. Acabo de añadir ......... La respuesta debería ser 100%, pero jPrediction 11 es tan agudo "ii", que consigue dar de sí)) En resumen, afínalo,

El dispositivo aún no funciona. No te voy a dar los datos, estás presumiendo, ya lo descubrirás tú mismo... Versión 20 tal vez voy a mirar de nuevo, si el "anuncio" será como hoy)))


¿Sabe que las optimizaciones múltiples siempre producen resultados diferentes? Esto es optimización, si siempre llegara a la misma respuesta sin duda sería bueno pero es demasiado raro, prueba a optimizar unas cuantas veces, seguro que 8 de cada 10 veces obtienes tu 100% Así es ....
 
SanSanych Fomenko:
Bueno, tal vez tenía una idea diferente del significado de la palabra "interacción".


Existen reglas claras para tratar las interacciones en los modelos lineales. Son un poco más complicados que el tratamiento de combinación lineal:https://www.r-bloggers.com/interpreting-interaction-coefficient-in-r-part1-lm/

Pero hay que rebuscar entre un montón de combinaciones para encontrar interacciones significativas. Eso sí que es una vergüenza.

Interpreting interaction coefficient in R (Part1 lm)
Interpreting interaction coefficient in R (Part1 lm)
  • grumble10
  • www.r-bloggers.com
Interaction are the funny interesting part of ecology, the most fun during data analysis is when you try to understand and to derive explanations from the estimated coefficients of your model. However you do need to know what is behind these estimate, there is a mathematical foundation between them that you need to be aware of before being able...
 
Mihail Marchukajtes:
¿Eres consciente de que las optimizaciones múltiples siempre producen resultados diferentes? Es la optimización, si siempre diera el mismo resultado sería bueno, pero es demasiado extraño, trate de optimizar varias veces, estoy seguro de que obtendrá su 100% para 8 de cada 10 veces. Así que es como este....

Ni siquiera se da cuenta de que la muestra general antes del entrenamiento se divide en partes al azar: algunos patrones van a la parte de entrenamiento, otros a la parte de prueba. Y con tal desglose, puede resultar que algunos patrones necesarios para aclarar los patrones se agolpen en la parte de prueba y no estén representados en la parte de entrenamiento. Y como el algoritmo sólo se entrena en la parte de entrenamiento y no tiene capacidades telepáticas para averiguar lo que hay en la parte de prueba, se producirán errores al calcular la capacidad de generalización. Es decir, no ocurre nada sorprendente.

Pero cuando los patrones que deberían especificar las pautas resultan estar distribuidos uniformemente en diferentes partes de la muestra, la capacidad de aprendizaje es mayor que en el caso descrito anteriormente.

En otras palabras, hay un efecto caso por caso, y cualquier aleatoriedad puede mostrarse tarde o temprano de forma indeseable.

Es muy posible que se pueda encontrar un método por el que la muestra general se divida en partes no al azar, sino de forma determinista... Pero hasta ahora, la experiencia ha demostrado que todo determinismo en el reparto de muestras está cargado de ajuste, seguido de un exceso de aprendizaje.

 
Yury Reshetov:

Es posible encontrar un método que permita dividir la muestra general en partes de forma determinista y no aleatoria... Pero hasta ahora, la experiencia demuestra que todo determinismo en la partición de la muestra está plagado de ajustes y reajustes posteriores.

¿Quizás quieras hacer el entrenamiento varias veces y dividir la muestra aleatoriamente cada vez? Y entonces, a partir de este conjunto listo de modelos entrenados, podemos elegir y, en general, podemos evaluar lo bueno que es el modelo.
Así que podemos negar la probabilidad de obtener un modelo ajustado al azar sin ser rehenes del determinismo.

 
Andrey Dik:
¿Tal vez haya que hacer el entrenamiento varias veces y dividir la muestra al azar cada vez? Y a partir de este conjunto listo de modelos entrenados se puede elegir y en general se puede evaluar si el modelo es bueno o no.
Así que podemos reducir a cero la probabilidad de obtener un modelo ajustado al azar, sin ser rehenes del determinismo.

Esto ya está implementado en jPrediction, es decir, varias particiones de muestras diferentes se calculan en paralelo en diferentes núcleos de la CPU (dos clasificadores binarios son un terrario por núcleo libre). El procesador resulta estar cargado al 100%. El problema es que el número de núcleos de la CPU es limitado, por lo que la probabilidad de distribución desigual de los patrones sólo puede reducirse, pero es muy problemático minimizarlos. A menos que se entrenen los patrones en superordenadores en lugar de en ordenadores.

Por ejemplo, si se calculan patrones en el superordenador chino Tianhe-2, éste tiene 3.120.000 núcleos. La probabilidad de una distribución desigual de los patrones en partes de la muestra sería insignificante. Si calculamos patrones en una plantilla de 4 núcleos (más un par de núcleos reservados para otras tareas), no es de extrañar que tarde o temprano nos encontremos con una irregularidad.

 
Os recuerdo que nadie me ha preguntado por qué lo hago, pero hago que la variable de salida sea igual al número de unos y ceros. Lo hago ajustando el beneficio de las señales desde -10 pips hasta +50 pips. Si la cantidad de unos y ceros es igual, el modelo rara vez se divide en dos. Una vez más, no es importante cómo dividir, sino que la división sea estable.....
 
Yury Reshetov:

Esto ya está implementado en jPrediction, es decir, varias particiones de muestras diferentes se calculan en paralelo en diferentes núcleos de la CPU (dos clasificadores binarios son un terrario por núcleo libre). El procesador resulta estar cargado al 100%. El problema es que el número de núcleos de la CPU es limitado, por lo que la probabilidad de que se distribuyan patrones desiguales sólo puede reducirse, pero es muy problemático minimizarlos. A menos que entrenes los patrones en superordenadores en lugar de en ordenadores.

Por ejemplo, si se calculan patrones en el superordenador chino Tianhe-2, éste tiene 3.120.000 núcleos. La probabilidad de una distribución desigual de los patrones en partes de la muestra sería insignificante. Si se computan patrones en una plantilla de 4 núcleos (y se reservan un par de núcleos para otras tareas), no es de extrañar que, tarde o temprano, se produzcan irregularidades.

Es decir, es algo útil. Así que en lugar de 4 particiones, obviamente insuficientes, deberías hacer 40 particiones. Para 4 núcleos se tardaría 10 veces más en contar, pero supongo que se puede sacrificar tiempo en favor de la robustez.

"Si se puede hacer y si sirve de algo, hay que hacerlo". (c) Papo Carlo Albertovich.

Razón de la queja: