Redes neuronales - página 14

 
Sí, el entrenamiento frente a la predicción. Construí una nueva red con los primeros 6-7 años de datos utilizados para entrenar, probar y validar de forma cruzada. Luego alimenté los 3 años restantes de datos como una prueba sin aprendizaje, la idea es imitar una prueba en vivo. La línea de regresión de entrenamiento tenía una pendiente de 0,99995 y cuando la alimenté con unos 3 años de datos no vistos anteriormente, la pendiente bajó a 0,9995. No estoy seguro de cómo interpretar esto. Parece demasiado preciso para algo que he elaborado en menos de una hora.

Te lo explicaré con un ejemplo.

Digamos que quieres predecir una variable que puede tener valores de 100 a 250 /como GBPJPY/. Quieres predecir pasos de tiempo muy pequeños comparados con los datos de entrenamiento /como H1 o H4/. Para algún paso el valor deseado es, digamos, 174.850 y la salida de la NN es 176.350. El error es muy pequeño /alrededor del 0,8%/ pero en términos de Forex el error es grande - 150 pips.

Es mucho más fácil predecir la tasa de rendimiento normal o logarítmica. Incluso si usted comete un error la salida probablemente todavía será útil /si usted predice un aumento del 20% del precio, y realmente es el 10%, aunque el error es el 50% el resultado es todavía muy bien/.

Seguramente, si generas la primera población al azar, ¿no existe la posibilidad de generar una población en la que ningún programa resuelva el problema?

Es imposible.

Incluso si la NN da una predicción muy mala, sigue siendo una solución.

Más de lo que podría soportar un ordenador de sobremesa medio

Puedes usar un ordenador de sobremesa. Hoy en día los ordenadores son mucho mejores que aquellos de los que partí

 

mrwobbles,

¿Serías tan amable de informarnos de tus entradas y salidas para los resultados de tu NN? Me gustaría ejecutarlo a través de NeuroShell y ver si puedo generar el nivel de correlación de R en torno a la misma estanqueidad. Gracias de antemano.

 
Kazam:
Te lo explico con un ejemplo.

Supongamos que quiere predecir una variable que puede tener valores de 100 a 250 /como GBPJPY/. Quiere predecir pasos de tiempo muy pequeños comparados con los datos de entrenamiento /como H1 o H4/. Para algún paso el valor deseado es, digamos, 174.850 y la salida de la NN es 176.350. El error es muy pequeño /alrededor del 0,8%/ pero en términos de Forex el error es grande - 150 pips.

Es mucho más fácil predecir la tasa de rendimiento normal o logarítmica. Incluso si usted comete un error la salida probablemente todavía será útil /si usted predice un aumento del 20% del precio, y realmente es el 10%, aunque el error es del 50% el resultado es todavía muy bien/.

Sí, pero estoy hablando de errores de un orden de magnitud menor que eso. El error medio en pips de la red que he entrenado es de unos 10-20 que se acerca a un nivel aceptable. Aun así hay algunos resultados anómalos, unos pocos de más de 100 pips lo cual es obviamente inaceptable.

Es imposible.

Incluso si la NN da una predicción muy mala sigue siendo una solución.

Sí, supongo que se pueden llamar soluciones, pero ¿empezar con una población aleatoria no llevaría a un mayor tiempo de convergencia? En ese caso empezar con una población de redes pre-entrenadas seguramente aceleraría la convergencia de la red y con suerte daría resultados más precisos.

 
Sí, pero estoy hablando de errores de un orden de magnitud menor que eso. El error medio en pips de la red que he entrenado es de unos 10-20 que se acerca a un nivel aceptable. Sin embargo, hay algunos resultados anómalos, algunos de más de 100 pips que es obviamente inaceptable.

Pero usted todavía está mirando los datos de entrenamiento. Hice un ejemplo rápido - mira la imagen de abajo. Las medidas de error son pequeñas, el coeficiente de correlación es muy alto, pero mira lo que pasa cuando intentas predecir los siguientes 10 pasos.

Sí, supongo que se les podría llamar soluciones, pero ¿empezar con una población aleatoria no llevaría a un mayor tiempo de convergencia? En ese caso, empezar con una población de redes preentrenadas seguramente aceleraría la convergencia de la red y, con suerte, daría resultados más precisos.

La aleatoriedad es la clave

Con muchas redes aleatorias tienes más posibilidades de encontrar la mejor solución posible al final. Fíjate en la segunda imagen. Si se hace una preselección de las NN se puede quedar atascado en el óptimo local, pero si se utilizan NN aleatorias se tienen más posibilidades de encontrar el óptimo global.

Por supuesto, hay formas de superar el problema de quedarse atascado en el óptimo local.

Archivos adjuntos:
 

Esa idea se me pasó por la cabeza. Me refiero a que si la población de NNs preentrenadas es demasiado pequeña o no tiene suficiente varianza genética, entonces algunas soluciones podrían no ser consideradas. Como has dicho, siempre existe la posibilidad de elegir 12 NNs que estén todas atascadas en diferentes mínimos locales y eso no sería bueno. O peor aún, 12 NNs que están todas atascadas en el mismo mínimo local. Aunque siempre se podrían codificar algunas mutaciones genéticas aleatorias para intentar aumentar el stock genético, cada 10 generaciones digamos. Aunque empezar con una estructura completamente aleatoria aseguraría que se consideren la mayoría de las posibilidades.

Ah, ya veo, vale, acabo de descubrir cómo usar la red después de su entrenamiento, la función sim aparentemente... oh las alegrías de los archivos de ayuda Tendrás que perdonar mi ignorancia, soy bastante nuevo en el trabajo con NNs. Me habría decepcionado si lo hubiera resuelto tan fácilmente. Se supone que esto es lo que estoy haciendo durante las vacaciones de verano bueno eso y trabajar

Edit: He entrenado la red con los datos de los primeros 7 años y luego he simulado su rendimiento con los últimos años de entradas. El error medio en pips fue de 40, pero si nos fijamos en la trama de la gráfica se pone la primera 1500 bastante justo en él, entonces se pierde y comienza a conseguir el precio mal, pero la dirección es en su mayor parte correcta. Luego llega a unos 10000 y lo recupera (justo a tiempo para la gran caída). Mira esto y dime qué te parece. El azul oscuro es la salida del objetivo azul claro. Por cierto, no he suministrado la red con los objetivos que se sobreponen para el análisis.

Archivos adjuntos:
gbpjpy60-4.jpg  40 kb
gbpjpy60-8.jpg  55 kb
 

No puedo decir nada mirando las fotos porque puede haber un "efecto sombra" y las fotos son demasiado pequeñas para decirlo.

Pero puedo decirte cómo comprobar si el NN está bien. Exporta /hay un asistente de exportación e importación en Matlab/ la salida de la prueba a un archivo XLS o CSV /Archivo Excel/. Luego pon los valores reales al lado de la salida del NN y en la siguiente columna pon una fórmula que compruebe si el NN predijo la dirección correcta del movimiento del precio.

Contando cuántos "1" obtienes sabrás la precisión de la red.

Luego puedes escribir una fórmula que calcule la ganancia y la pérdida para cada paso. Mira la imagen de abajo /Estoy usando la versión polaca de Excel así que no sé si tengo las fórmulas correctas /. Omite el spread por ahora.

Archivos adjuntos:
 

Hola Kazam,

¿Es posible implementar este paquete NN a Metatrader?

Archivos adjuntos:
example.zip  106 kb
 

Parece que podría estar bien, corrí la fórmula a través de la hoja de cálculo de Open Office y regresó 73% de precisión en la dirección del comercio. Todavía tengo algunas entradas más para dar a la red que creo que va a mejorar la precisión. Aquí está la hoja de cálculo, lo guardé en formato xls, usted debe ser capaz de leerlo.

Archivos adjuntos:
gj60.rar  831 kb
 

En la muestra, fuera de la muestra

mrwobbles:
Parece que podría estar bien, corrí la fórmula a través de la hoja de cálculo de Open Office y regresó 73% de precisión en la dirección del comercio. Todavía tengo algunas entradas más para dar a la red que creo que va a mejorar la precisión. Aquí está la hoja de cálculo, lo guardé en formato xls, usted debe ser capaz de leerlo.

Bien... ¿En la muestra o fuera de la muestra?

La diferencia es grande en su cuenta, 73% en la muestra es un asesino de la cuenta, 73% fuera de la muestra es un tal vez ...

Intente creer sólo en los resultados fuera de muestra, y cuantos menos datos tenga, menos sobreajuste tendrá... así que, si añade nuevos datos, piense en eliminar algunos de los antiguos... o amplíe el conjunto de datos fuera de muestra en el que forjará sus creencias.

Como regla general: Menos entradas, menos conexiones, más puntos fuera de la muestra... mejor generalización.

Saludos

Simba

 

biddick

Es una DLL, así que echa un vistazo aquí:

http://www.metatrader.info/node/150[/CODE]

There's an example of how to use DLL functions in Metatrader.

mrwobbles

It's either the training data or you got something wrong - the results are to good .

If one could get an accuracy of 73% with a simple back propagation network no one would give a shit about more complicated stuff

SIMBA

You're right. Choosing the proper input is a the most important thing in the process of creating a NN /there's a rule "trash goes in, trash comes out" /.

But you can always use data mining tools to analyze many different variables and choose those that affect the one you want to predict.

There's a nice book about data minig /and about genetic algorithms, Bayesian classification etc./ - "Data Mining Methods and Models." by Daniel T. Larose. It also shows how to use WEKA /a free, open source software for machine learning/.

My preferred way is to use GA - for the propose of time series prediction I usually allow them to choose from 15-40 previous steps.

PS

I've mentioned using Bayesian probability for the classification tasks but it can also be used for time series prediction

[CODE]http://www.cis.hut.fi/juha/papers/ESTSPfinal.pdf
Razón de la queja: