Download 4. REDES NEURONALES Y SERIES DE TIEMPO 4.1. REDES
Document related concepts
no text concepts found
Transcript
4. REDES NEURONALES Y SERIES DE TIEMPO 4.1. REDES NEURONALES EN LA PREDICCION En la actualidad, las Redes Neuronales Artificiales, se reconocen como una de las herramientas matemáticas de uso computacional que mejores resultados presenta a la hora de modelar un problema, ya sea de aproximación de funciones: como el diagnostico y control de maquinaria, en el control del piloto automático de un avión, o en el control de un robot. En problemas de clasificación: como el diagnostico medico, reconocimiento de caracteres, detección de fraude o clasificación de riesgo crediticio. En el procesamiento de datos: como en el filtrado de ruido o en el encriptamiento de información, La predicción de series de tiempo, es algo que ha ocupado mucho a investigadores de distintas disciplinas debido al interés que producen, en parte debido a la alta nolinealidad de su comportamiento fluctuante y a veces “caprichoso”. Varios modelos matemáticos han sido diseñados para el tratamiento de la predicción en las series de tiempo, el más conocido es el Proceso Autorregresivo Integrado de Media Móvil (ARIMA), comúnmente conocido como la metodología de Box-Jenkins (1976). Este método de predicción, que se utiliza muy frecuentemente se fundamenta en el su puesto implícito de la linealidad del sistema que generan la trayectoria de las variables, mas información sobre este y otros modelos de predicción pude ser encontrada en el capitulo 1. Sin embargo, las RNA han tenido aquí un éxito que otras técnicas no han logrado. Diferentes modelos de redes neuronales han sido desarrollados para la predicción de mercados, algunos se enfocan en la predicción del precio futuro de un valor o en modelar la rentabilidad de una acción, otros son aplicados para reconocer ciertos patrones de precios del mercado. 4.1.1. ALGUNOS TRABAJOS DE PREDICCIÓN CON REDES NEURONALES En los últimos años se cuenta con muchos trabajos en la predicción de series de tiempo utilizando redes neuronales artificiales, de los cuales podemos mencionar los siguientes: • Predicción de acciones. Consiste en el desarrollo de una red neuronal capaz de realizar la predicción del precio de las acciones para un número dado de compañías. Esta predicción se realiza mediante redes alimentadas hacia adelante, y el objetivo en este particular caso es predecir el siguiente valor en la serie de tiempo: el próximo precio de la acción. 11 • Predicción de tráfico vehicular. Se han utilizado redes neuronales recurrentes para la predicción a corto plazo del tráfico en una carretera, a fin de prevenir congestiones y tener un control del acceso a la autopista. Para esto se utilizan datos estimados de otros días con propiedades similares; los mejores resultados se obtuvieron con una red multi - recurrente, y se pudo comprobar que las redes neuronales resolvieron este tipo de predicción y obtuvieron mejores resultados que los métodos estadísticos convencionales. 12 • Predicción de Tornado. Basada en atributos obtenidos de un radar Doppler, el cual observa diferentes fenómenos que a la larga llegan a producir tornados. Las tormentas eléctricas algunas veces llegan a producirlos, pero no siempre son antecedente de ello. Una red neuronal alimentada hacia adelante es usada para diagnosticar cuales fenómenos detectados por el radar llegarán a producir un tornado. La red neuronal es diseñada para la identificación de tornados, con ese fin, se desarrollaron procedimientos para determinar el tamaño del conjunto de 11 Se puede encontrar más información en un trabajo enfocado a la predicción financiera. UNIVERSIDAD DE VIGO. Negative Feedback Network For Financial Prediction (pdf), Marzo de 2004, http://ann7.ei.uvigo.es/~fdiaz/doc/1999sci-isas.pdf. 12 Un interesante modelo para la predicción del tráfico. TAO, Yang, A Neural Network Model for Traffic Prediction in the Presence of Incidents via Data Fusion, Universidad de Wisconsin, Julio de 2004, http://homepages.cae.wisc.edu/~yang/incident%20impact_final.pdf. entrenamiento y el número de nodos ocultos necesarios para el funcionamiento óptimo. Se mostró que la red neuronal encontrada de este modo supera un algoritmo basado en reglas.13 4.2. DESARROLLO DE LA INVESTIGACION Utilizando un método de pronóstico no tradicional, como las redes neuronales, se intentara establecer mediante resultados comparativos la efectividad de la predicción para una serie de tiempo de tipo común. La serie elegida es el consumo mensual de ACPM, los datos de esta serie fueron tomados desde el mes de enero de 1998 hasta el mes diciembre de 2003. 72 datos en total. Estos datos fueron actualizados en marzo 19 de 2004 por personal del departamento de planeación nacional. El consumo de ACPM presenta variaciones importantes mes a mes debido a factores como el precio de la gasolina, importación de petróleo y al observar la serie se podría pensar a priori que las épocas del año afectan el consumo. La metodología propuesta para realizar esta investigación es: 1. Presentación de la serie. 2. Preprocesamiento de los datos: Es decir una preparación de los datos, una transformación de los datos si es necesario (escalamiento, logaritmización, normalización, etc.) 3. Analizar mediante métodos estadísticos básicos el estado de la serie y basados en ellos hacer una selección de los parámetros óptimos iniciales. 4. Analizar la serie con la ayuda del Neural Network Toolbox de Matlab. 13 MARZABAN, C. and Stumpf, G.J. (1996), A Neural Network for Tornado Prediction Based on Doppler Radar-Derived Attributes, Journal of Applied Meteorology Ed 35, 1996. Pag. 617-626. 5. Comparar los datos obtenidos con los datos reales mediante graficas. 6. Concluir con base en los resultados y comparaciones en el posible modelo para predecir. 4.3. ANALISIS DE LAS SERIE Los datos de la serie se muestran en el anexo 1, el grafico del consumo de gasolina ACPM por mes y año se muestra en la figura 4.1. Figura 4.1: Consumo de Gasolina ACPM (1998 – 2003) Se toma para el desarrollo del presenta análisis, se toman topologías de 3 capas, en el capitulo 2 (El MLP como aproximador universal de funciones) se asocia este hecho a algunos teoremas como los de Kolmogorov y Funahashi, los cuales demuestran que con solo 3 capas se puede aproximar cualquier función. Para el desarrollo del análisis de la serie se deben escalan los datos, esto se debe a las funciones de transferencia que se pretenden usar en el entrenamiento de las redes, las funciones utilizadas requieren entradas en el rango [-1, 1]. Para este fin se utilizan las herramientas de Preprocesamiento de datos que ofrece matlab en el toolbox, más precisamente la función premnmx14. Se organizan los datos en 2 columnas (Anexo 2), 3 columnas (Anexo 3) y 4 columnas (Anexo 4). Esta organización se realiza con el fin de manejar topologías con 1, 2 y 3 neuronas en la capa de entrada y variar de 2 a 3 en la capa oculta y hasta 2 capas ocultas, esto ultimo tomando en cuenta el numero de ejemplos de entrenamiento que se tiene disponible de la forma que se escalo y el numero optimo definido en el capitulo 2 (Número de ejemplos de entrenamiento). En los anexos se define como Xi las entradas a la red y como D la salida deseada. Si se observa con un poco más detalle se observa que para predecir la salida deseada se están usando los datos inmediatamente anteriores. Se realiza una regresión de los datos de los anexos (2 al 4) y arrogan los siguientes resultados: Para 3 entradas y una salida deseada (anexo 4) se tiene un coeficiente de correlación múltiple del 0,67217, es decir que las 3 entradas explican en un 65% la salida deseada. Según la prueba f el modelo tiene poder explicativo, pero solamente una de las variables explica la serie. Para 2 entradas y una salida deseada (anexo 3) se tiene un coeficiente de correlación múltiple del 0,66385, es decir que las 2 entradas explican en un 66% la salida deseada. Según la prueba f el modelo tiene poder explicativo, explicado por cada una de las variables. 14 Mas información sobre la función premnmx en la dirección http://www.mathworks.com/access/helpdesk/help/toolbox/nnet/premnmx.html se ve Para 1 entradas y una salida deseada (anexo 2) se tiene un coeficiente de correlación múltiple del 0,66385, es decir que las 2 entradas explican en un 52% la salida deseada. Según la prueba f el modelo tiene poder explicativo, pero no es explicado por la variable dependiente. Analizando en forma rápida estos resultados vemos que el modelo de 2 entradas y una salida deseada servirá un poco más que los otros, debido a que sus variables inciden en el modelo. Por lo tanto, se realiza una división en 2 grupos de los datos del anexo 2. Basando en ejemplos encontrados en las referencias bibliograficas del capitulo 2 [1, 6, 7], se formara el primer conjunto con el 75% de los datos, este conjunto será el conjunto de entrenamiento de la red, los datos restantes se dejaran como datos de verificación. Se toman 4 topologías para desarrollar las pruebas a través de matlab, la primera será 2-2-1 (3 neuronas en la capa de entrada, 2 en la capa oculta y 1 en la capa de salida), 2-3-1 (3 neuronas en la capa de entrada, 3 en la capa oculta y 1 en la capa de salida) y 2-2-2-1 (3 neuronas en la capa de entrada, 4 en dos capas ocultas y 1 en la capa de salida). Los resultados arrojados a través del toolbox de matlab fueron: TOPOLOGÍA 2-2-1 Traingd Numero de capas: 3 Neuronas por capa 2 - 2 - 1 Error de entrenamiento 0.101245 de 0.05 Gradiente final 0.000180352 de 1e-010 Numero de iteraciones 60000 Funciones por capa: Purelin – Tansig – Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,2000 1,0000 0,8000 0,6000 d 0,4000 traingd 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 -0,4000 Grafica del error (datos de validación) traingd 1,0000 0,5000 0,0000 traingd 1 3 5 7 9 11 13 -0,5000 -1,0000 Traingdm Numero de capas: 3 Neuronas por capa: 2 - 2 - 1 Error de entrenamiento: 0.101258 de 0.05 Gradiente final: 0.000306383 de 1e-010 Numero de iteraciones: 60000 Funciones por capa: Purelin – Tansig - Tansig 15 17 Grafica de salida deseada & salida obtenida (datos de validación) 1,2000 1,0000 0,8000 0,6000 d 0,4000 traingd m 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 -0,4000 Grafica del error (datos de validación) traingdm 0,8000 0,6000 0,4000 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 traingdm -0,4000 -0,6000 -0,8000 -1,0000 Traingda • Numero de capas: 3 • Neuronas por capa: 2 - 2 - 1 • Error de entrenamiento: 0.101299 de 0.05 • Gradiente final: 0.0484528 de 1e-010 • Numero de iteraciones: 60000 • Funciones por capa: Purelin – Tansig - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,2000 1,0000 0,8000 0,6000 d 0,4000 traingda 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 -0,4000 Grafica del error (datos de validación) traingda 0,6000 0,4000 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 traingda -0,4000 -0,6000 -0,8000 -1,0000 Traingdx • Numero de capas: 3 • Neuronas por capa: 2 - 2 - 1 • Error de entrenamiento: 0.101959 de 0.05 • Gradiente final: 0.0747351 de 1e-010 • Numero de iteraciones: 60000 • Funciones por capa: Purelin – Tansig - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,2000 1,0000 0,8000 0,6000 d 0,4000 traingdx 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 -0,4000 Grafica del error (datos de validación) traingdx 0,8000 0,6000 0,4000 0,2000 0,0000 -0,2000 -0,4000 1 3 5 7 9 11 13 15 17 traingdx -0,6000 -0,8000 -1,0000 Trainrp • Numero de capas: 3 • Neuronas por capa: 2 - 2 - 1 • Error de entrenamiento: 0.101182 de 0.05 • Gradiente final: 2.88016e-005 de 1e-010 • Numero de iteraciones: 60000 • Funciones por capa: Purelin – Tansig - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,2000 1,0000 0,8000 0,6000 d 0,4000 trainrp 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 13 15 17 -0,4000 Grafica del error (datos de validación) trainrp 0,6000 0,4000 0,2000 0,0000 -0,2000 1 3 5 7 9 11 trainrp -0,4000 -0,6000 -0,8000 -1,0000 Traincgf • Numero de capas: 3 • Neuronas por capa: 2 - 2 - 1 • Error de entrenamiento: 0.100747 de 0.05 • Gradiente final: 0.000142827 de 1e-010 • Numero de iteraciones: 170 • Funciones por capa: Purelin – Tansig - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,2000 1,0000 0,8000 0,6000 d 0,4000 traincgf 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 -0,4000 Grafica del error (datos de validación) traincgf 0,8000 0,6000 0,4000 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 traincgf -0,4000 -0,6000 -0,8000 -1,0000 Traincgb • Numero de capas : 3 • Neuronas por capa: 2 - 2 - 1 • Error de entrenamiento: 0.101014 de 0.05 • Gradiente final: 0.000841213 de 1e-010 • Numero de iteraciones: 144 • Funciones por capa: Purelin – Tansig - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,2000 1,0000 0,8000 0,6000 d 0,4000 traincgb 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 -0,4000 Grafica del error (datos de validación) traincgb 1,0000 0,5000 0,0000 traincgb 1 3 5 7 9 11 13 15 17 -0,5000 -1,0000 Trainscg • Numero de capas: 3 • Neuronas por capa: 2 - 2 - 1 • Error de entrenamiento: 0.0956961 de 0.05 • Gradiente final: 8.98431e-007 de 1e-010 • Numero de iteraciones: 10655 • Funciones por capa: Purelin – Tansig - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,2000 1,0000 0,8000 0,6000 d 0,4000 trainscg 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 -0,4000 Grafica del error (datos de validación) trainscg 0,6000 0,4000 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 trainscg -0,4000 -0,6000 -0,8000 -1,0000 Trainbfg • Numero de capas: 3 • Neuronas por capa: 2 - 2 - 1 • Error de entrenamiento: 0.101227 de 0.05 • Gradiente final: 5.83355e-007 de 1e-010 • Numero de iteraciones: 240 • Funciones por capa: Purelin – Tansig - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,2000 1,0000 0,8000 0,6000 d 0,4000 trainbfg 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 -0,4000 Grafica del error (datos de validación) trainbfg 1,5000 1,0000 0,5000 trainbfg 0,0000 1 3 5 7 9 11 13 15 17 -0,5000 -1,0000 Trainoss • Numero de capas: 3 • Neuronas por capa: 2 - 2 - 1 • Error de entrenamiento: 0.0956943 de 0.05 • Gradiente final: 9.62612e-007 de 1e-010 • Numero de iteraciones: 31991 • Funciones por capa: Purelin – Tansig - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,2000 1,0000 0,8000 0,6000 d 0,4000 trainoss 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 -0,4000 Grafica del error (datos de validación) trainoss 0,6000 0,4000 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 -0,4000 -0,6000 -0,8000 -1,0000 Trainml • Numero de capas: 3 • Neuronas por capa: 2 - 2 - 1 • Error de entrenamiento: 0.0956813 de 0.05 • Gradiente final: 6.93512e-006 de 1e-010 • Numero de iteraciones: 12209 • Funciones por capa: Purelin – Tansig - Tansig 17 trainoss Grafica de salida deseada & salida obtenida (datos de validación) 1,2000 1,0000 0,8000 0,6000 d 0,4000 trainlm 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 -0,4000 Grafica del error (datos de validación) trainlm 0,6000 0,4000 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 trainlm -0,4000 -0,6000 -0,8000 -1,0000 d traingd traingdm traingda traingdx trainrp traincgf traincgb trainscg trainbfg trainoss trainlm Respuestas obtenidas con la simulación de la red: -0,20 -0,29 -0,30 -0,31 -0,27 -0,30 -0,30 -0,30 -0,29 -0,29 -0,29 -0,29 0,25 -0,19 -0,19 -0,19 -0,17 -0,20 -0,18 -0,19 -0,16 -0,19 -0,16 -0,16 -0,14 -0,24 -0,25 -0,25 -0,22 -0,25 -0,24 -0,25 -0,22 -0,25 -0,22 -0,22 0,30 0,00 0,00 -0,02 0,04 0,01 0,00 0,00 -0,01 0,00 -0,01 -0,01 0,04 -0,22 -0,22 -0,22 -0,20 -0,23 -0,21 -0,22 -0,19 -0,22 -0,19 -0,19 -0,03 0,04 0,04 0,00 0,07 0,05 0,03 0,04 0,01 0,04 0,01 0,01 0,45 -0,13 -0,13 -0,12 -0,10 -0,13 -0,12 -0,13 -0,10 -0,13 -0,10 -0,10 0,15 -0,16 -0,16 -0,16 -0,14 -0,17 -0,15 -0,16 -0,13 -0,16 -0,13 -0,13 0,48 0,14 0,13 0,06 0,16 0,17 0,11 0,14 0,07 0,14 0,07 0,07 0,01 -0,06 -0,06 -0,07 -0,03 -0,06 -0,06 -0,06 -0,05 -0,06 -0,05 -0,05 0,60 0,17 0,14 0,07 0,18 0,19 0,13 0,16 0,08 0,16 0,08 0,08 0,58 -0,14 -0,14 -0,14 -0,11 -0,14 -0,13 -0,14 -0,11 -0,14 -0,11 -0,11 0,56 0,26 0,21 0,10 0,25 0,10 0,20 0,25 0,12 0,24 0,12 0,12 0,49 0,24 0,20 0,10 0,24 0,14 0,19 0,23 0,11 0,23 0,11 0,11 0,32 0,23 0,19 0,09 0,23 0,18 0,18 0,22 0,11 0,22 0,11 0,11 1,00 0,18 0,15 0,07 0,19 0,20 0,14 0,17 0,08 0,17 0,08 0,08 -0,10 0,05 0,05 0,01 0,08 0,07 0,04 0,05 0,02 0,05 0,02 0,02 -0,30 0,53 0,36 0,18 0,39 0,15 0,41 0,51 0,22 1,00 0,22 0,22 Al hacer un análisis se del error cuadrático generado por matlab y de las graficas de aproximación, se ven en la figura 4.2 la salida deseada con las 2 funciones que mas se acercaron al modelo. 1,20 1,00 0,80 0,60 d 0,40 traingd 0,20 traincgb 0,00 -0,20 1 3 5 7 9 11 13 15 17 -0,40 Figura 4.2: Grafica de respuestas obtenidas topología 2 - 2 - 1 TOPOLOGÍA 2-3-1 Traingd • Numero de capas:3 • Neuronas por capa: 2 - 3 - 1 • Error de entrenamiento: 0.101723 de 0.05 • Gradiente final: 0.00114838 de 1e-010 • Numero de iteraciones: 60000 • Funciones por capa: Purelin – Logsig – Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,2000 1,0000 0,8000 0,6000 d 0,4000 traingd 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 -0,4000 Grafica del error (datos de validación) traingd 0,8000 0,6000 0,4000 0,2000 0,0000 -0,2000 1 -0,4000 -0,6000 -0,8000 -1,0000 Traingdm 3 5 7 9 11 13 15 17 traingd • Numero de capas: 3 • Neuronas por capa: 2 - 3 - 1 • Error de entrenamiento: 0.101244 de 0.05 • Gradiente final: 0.000149962 de 1e-010 • Numero de iteraciones: 60000 • Funciones por capa: Purelin – Logsig - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,2000 1,0000 0,8000 0,6000 d 0,4000 traingdm 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 -0,4000 Grafica del error (datos de validación) traingdm 1,0000 0,8000 0,6000 0,4000 0,2000 0,0000 -0,2000 1 -0,4000 -0,6000 -0,8000 -1,0000 Traingda traingdm 3 5 7 9 11 13 15 17 • Numero de capas: 3 • Neuronas por capa: 2 - 3 - 1 • Error de entrenamiento: 0.101299 de 0.05 • Gradiente final: 0.0484528 de 1e-010 • Numero de iteraciones: 60000 • Funciones por capa: Purelin – Logsig - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,2000 1,0000 0,8000 0,6000 0,4000 d 0,2000 traingda 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 -0,4000 -0,6000 -0,8000 Grafica del error (datos de validación) traingda 0,2000 0,0000 1 3 5 7 9 11 13 15 17 -0,2000 -0,4000 -0,6000 -0,8000 -1,0000 Traingdx traingda • Numero de capas: 3 • Neuronas por capa: 2 - 3 - 1 • Error de entrenamiento: 0.0985181 de 0.05 • Gradiente final: 0.0912678 de 1e-010 • Numero de iteraciones: 60000 • Funciones por capa: Purelin – Logsig - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,2000 1,0000 0,8000 0,6000 d 0,4000 traingdx 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 -0,4000 Grafica del error (datos de validación) traingdx 0,6000 0,4000 0,2000 0,0000 -0,2000 -0,4000 -0,6000 -0,8000 -1,0000 -1,2000 Trainrp 1 3 5 7 9 11 13 15 17 traingdx • Numero de capas: 3 • Neuronas por capa: 2 - 3 - 1 • Error de entrenamiento: 0.0831358 de 0.05 • Gradiente final: 9.93196e-007 de 1e-010 • Numero de iteraciones: 28202 • Funciones por capa: Purelin – Logsig - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,2000 1,0000 0,8000 0,6000 d 0,4000 trainrp 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 -0,4000 Grafica del error (datos de validación) trainrp 0,6000 0,4000 0,2000 0,0000 -0,2000 -0,4000 -0,6000 -0,8000 -1,0000 Traincgf 1 3 5 7 9 11 13 15 17 trainrp • Numero de capas: 3 • Neuronas por capa: 2 - 3 - 1 • Error de entrenamiento: 0.0879971 de 0.05 • Gradiente final: 0.000294713 de 1e-010 • Numero de iteraciones: 1038 • Funciones por capa: Purelin – Logsig - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,2000 1,0000 0,8000 0,6000 d 0,4000 traincgf 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 -0,4000 Grafica del error (datos de validación) traincgf 0,6000 0,4000 0,2000 0,0000 -0,2000 -0,4000 -0,6000 -0,8000 -1,0000 Traincgb 1 3 5 7 9 11 13 15 17 traincgf • Numero de capas: 3 • Neuronas por capa: 2 - 2 - 1 • Error de entrenamiento: 0.101227 de 0.05 • Gradiente final: 6.56347e-006 de 1e-010 • Numero de iteraciones: 77 • Funciones por capa: Purelin – Logsig - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,2000 1,0000 0,8000 0,6000 d 0,4000 traincgb 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 -0,4000 Grafica del error (datos de validación) traincgb 1,0000 0,8000 0,6000 0,4000 0,2000 0,0000 -0,2000 -0,4000 -0,6000 -0,8000 -1,0000 Trainscg traincgb 1 3 5 7 9 11 13 15 17 • Numero de capas: 3 • Neuronas por capa: 2 - 3 - 1 • Error de entrenamiento: 0.0879377 de 0.05 • Gradiente final: 9.64971e-007 de 1e-010 • Numero de iteraciones: 4211 • Funciones por capa: Purelin – Logsig - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,2000 1,0000 0,8000 0,6000 d 0,4000 trainscg 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 -0,4000 Grafica del error (datos de validación) trainscg 0,6000 0,4000 0,2000 0,0000 -0,2000 -0,4000 -0,6000 -0,8000 -1,0000 Trainbfg 1 3 5 7 9 11 13 15 17 trainscg • Numero de capas: 3 • Neuronas por capa: 2 - 3 - 1 • Error de entrenamiento: 0.101227 de 0.05 • Gradiente final: 4.09674e-007 de 1e-010 • Numero de iteraciones: 67 • Funciones por capa: Purelin – Logsig - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,2000 1,0000 0,8000 0,6000 d 0,4000 trainbgf 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 -0,4000 Grafica del error (datos de validación) trainbfg 1,0000 0,8000 0,6000 0,4000 0,2000 0,0000 -0,2000 -0,4000 -0,6000 -0,8000 -1,0000 Trainoss trainbfg 1 3 5 7 9 11 13 15 17 • Numero de capas: 3 • Neuronas por capa: 2 -3 - 1 • Error de entrenamiento: 0.101227 de 0.05 • Gradiente final: 8.12267e-007 de 1e-010 • Numero de iteraciones: 546 • Funciones por capa: Purelin – Logsig - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,2000 1,0000 0,8000 0,6000 d 0,4000 trainoss 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 -0,4000 Grafica del error (datos de validación) trainoss 1,0000 0,8000 0,6000 0,4000 0,2000 0,0000 -0,2000 -0,4000 -0,6000 -0,8000 -1,0000 Trainml trainoss 1 3 5 7 9 11 13 15 17 • Numero de capas: 3 • Neuronas por capa: 2 - 3 - 1 • Error de entrenamiento: 0.0874688 de 0.05 • Gradiente final: 0.000846157 de 1e-010 • Numero de iteraciones: 3377 • Funciones por capa: Purelin – Logsig - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,2000 1,0000 0,8000 0,6000 d 0,4000 trainlm 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 -0,4000 Grafica del error (datos de validación) trainlm 0,6000 0,4000 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 -0,4000 -0,6000 -0,8000 -1,0000 Respuestas obtenidas con la simulación de la red: trainlm trainlm -0,2 -0,2 -0,2 -0,1 -0,2 -0,2 -0,3 -0,1 -0,2 -0,2 -0,2 -0,2 -0,2 -0,2 -0,2 0,3 0,0 0,0 -0,1 0,0 0,1 0,1 0,0 0,1 0,0 0,0 0,1 0,0 -0,2 -0,2 -0,3 -0,1 -0,2 -0,2 -0,2 -0,2 -0,2 -0,2 -0,2 0,0 0,0 0,0 0,0 0,0 0,1 0,1 0,0 0,1 0,0 0,0 0,1 0,4 -0,1 -0,1 -0,2 0,0 -0,2 -0,2 -0,1 -0,2 -0,1 -0,1 -0,2 0,1 -0,1 -0,2 -0,2 -0,1 -0,2 -0,2 -0,2 -0,2 -0,2 -0,2 -0,2 0,5 0,1 0,1 0,1 0,1 0,1 0,1 0,1 0,1 0,1 0,1 0,1 0,0 -0,1 -0,1 -0,1 0,0 -0,1 -0,1 -0,1 -0,1 -0,1 -0,1 0,1 0,6 0,1 0,2 0,1 0,1 0,1 0,1 0,2 0,1 0,2 0,2 0,1 0,6 -0,1 -0,1 -0,2 0,0 -0,2 -0,2 -0,1 -0,2 -0,1 -0,1 -0,2 0,6 0,2 0,2 0,1 0,1 0,1 0,1 0,2 0,1 0,2 0,2 0,1 0,5 0,2 0,2 0,1 0,1 0,1 0,1 0,2 0,1 0,2 0,2 0,1 0,3 0,1 0,2 0,1 0,1 0,1 0,1 0,2 0,1 0,2 0,2 0,1 1,0 0,1 0,2 0,1 0,1 0,1 0,1 0,2 0,1 0,2 0,2 0,1 -0,1 0,0 0,1 0,0 0,0 0,1 0,1 0,1 0,1 0,1 0,1 0,1 -0,3 0,4 0,5 -0,6 0,1 0,1 0,1 0,5 0,1 0,5 0,5 0,1 s -0,3 -0,2 trainos -0,3 -0,2 f trainbg -0,2 -0,2 g -0,3 -0,2 trainsc -0,2 -0,2 b -0,2 -0,1 traincg traincg -0,2 -0,3 f trainrp -0,4 -0,2 x -0,3 -0,2 a traingd traingd traingd traingd -0,3 0,2 m d -0,2 Al hacer un análisis se del error cuadrático generado por matlab, se ven en la figura 4.3 la salida deseada con las 2 funciones que mas se acercaron al modelo. 1,2 1,0 0,8 0,6 d 0,4 0,2 traingda 0,0 -0,2 1 3 5 7 9 11 13 15 17 traingdx -0,4 -0,6 -0,8 Figura 4.3: Grafica de valores resultantes de iterar la serie 2-3-1 TOPOLOGÍA 2 - 2 - 2 -1 Traingd • Numero de capas: 4 • Neuronas por capa: 2 – 2 - 2 - 1 • Error de entrenamiento: 0.083368 de 0.05 • Gradiente final: 0.00075513 de 1e-010 • Numero de iteraciones: 60000 • Funciones por capa: Purelin – Tansig – Purelin - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,20 1,00 0,80 0,60 d 0,40 traingd 0,20 0,00 -0,20 1 3 5 7 9 11 13 15 17 -0,40 Grafica del error (datos de validación) traingd 0,6000 0,4000 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 traingd -0,4000 -0,6000 -0,8000 -1,0000 Traingdm • Numero de capas: 4 • Neuronas por capa: 2 – 2 - 2 - 1 • Error de entrenamiento: 0.0835231 de 0.05 • Gradiente final: 0.000282096 de 1e-010 • Numero de iteraciones: 60000 • Funciones por capa: Purelin – Tansig – Purelin - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,20 1,00 0,80 0,60 d 0,40 traingdm 0,20 0,00 -0,20 1 3 5 7 9 11 13 15 17 -0,40 Grafica del error (datos de validación) traingdm 0,6000 0,4000 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 traingdm -0,4000 -0,6000 -0,8000 -1,0000 Traingda • Numero de capas: 4 • Neuronas por capa: 2 - 2 - 2 - 1 • Error de entrenamiento: 0.0891906 de 0.05 • Gradiente final: 0.173402 de 1e-010 • Numero de iteraciones: 60000 • Funciones por capa: Purelin – Tansig – Purelin - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,20 1,00 0,80 0,60 d 0,40 traingda 0,20 0,00 -0,20 1 3 5 7 9 11 13 15 17 -0,40 Grafica del error (datos de validación) traingda 0,6000 0,4000 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 traingda -0,4000 -0,6000 -0,8000 -1,0000 Traingdx • Numero de capas: 4 • Neuronas por capa: 2 – 2 - 2 - 1 • Error de entrenamiento: 0.0850742 de 0.05 • Gradiente final: 0.127728 de 1e-010 • Numero de iteraciones: 60000 • Funciones por capa: Purelin – Tansig – Purelin – Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,20 1,00 0,80 0,60 d 0,40 traingdx 0,20 0,00 -0,20 1 3 5 7 9 11 13 15 17 -0,40 Grafica del error (datos de validación) traingdx 0,6000 0,4000 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 traingdx -0,4000 -0,6000 -0,8000 -1,0000 Trainrp • Numero de capas: 4 • Neuronas por capa: 2 - 2 - 2 - 1 • Error de entrenamiento: 0.0789043 de 0.05 • Gradiente final: 0.00281069 de 1e-010 • Numero de iteraciones: 60000 • Funciones por capa: Purelin – Tansig – Purelin - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,20 1,00 0,80 0,60 d 0,40 trainrp 0,20 0,00 -0,20 1 3 5 7 9 11 13 15 17 -0,40 Grafica del error (datos de validación) trainrp 0,6000 0,4000 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 trainrp -0,4000 -0,6000 -0,8000 -1,0000 Traincgf • Numero de capas : 4 • Neuronas por capa: 2 - 2 - 2 - 1 • Error de entrenamiento: 0.0847961 de 0.05 • Gradiente final: 0.00064192 de 1e-010 • Numero de iteraciones: 185 • Funciones por capa: Purelin – Tansig – Purelin - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,20 1,00 0,80 0,60 d 0,40 traincgf 0,20 0,00 -0,20 1 3 5 7 9 11 13 15 17 -0,40 Grafica del error (datos de validación) traincgf 0,8000 0,6000 0,4000 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 traincgf -0,4000 -0,6000 -0,8000 -1,0000 Traincgb • Numero de capas: 4 • Neuronas por capa: 2 - 2 - 2 - 1 • Error de entrenamiento: 0.083838 de 0.05 • Gradiente final: 0.00119069 de 1e-010 • Numero de iteraciones: 135 • Funciones por capa: Purelin – Tansig – Purelin - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,20 1,00 0,80 0,60 d 0,40 traincgb 0,20 0,00 -0,20 1 3 5 7 9 11 13 15 17 -0,40 Grafica del error (datos de validación) traincgb 1,2000 1,0000 0,8000 0,6000 0,4000 0,2000 0,0000 -0,2000 1 -0,4000 -0,6000 -0,8000 -1,0000 traincgb 3 5 7 9 11 13 15 17 Trainscg Numero de capas: 4 Neuronas por capa: 2 - 2 - 2 - 1 Error de entrenamiento: 0.0803516 de 0.05 Gradiente final: 8.18243e-007 de 1e-010 Numero de iteraciones: 1290 Funciones por capa: Purelin – Tansig – Purelin - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,20 1,00 0,80 0,60 d 0,40 trainscg 0,20 0,00 -0,20 1 3 5 7 9 11 13 15 17 -0,40 Grafica del error (datos de validación) trainscg 0,6000 0,4000 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 trainscg -0,4000 -0,6000 -0,8000 -1,0000 Trainbfg • Numero de capas: 4 • Neuronas por capa: 2 - 2 - 2 - 1 • Error de entrenamiento: 0.0803511 de 0.05 • Gradiente final: 5.01321e-007 de 1e-010 • Numero de iteraciones: 380 • Funciones por capa: Purelin – Tansig – Purelin - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,20 1,00 0,80 0,60 d 0,40 trainbgf 0,20 0,00 -0,20 1 3 5 7 9 11 13 15 17 -0,40 Grafica del error (datos de validación) trainbfg 0,6000 0,4000 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 trainbfg -0,4000 -0,6000 -0,8000 -1,0000 Trainoss Numero de capas: 4 Neuronas por capa: 2 -2 - 2 - 1 Error de entrenamiento: 0.0835118 de 0.05 Gradiente final: 7.71694e-007 de 1e-010 Numero de iteraciones: 2355 Funciones por capa: Purelin – Tansig – Purelin - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,20 1,00 0,80 0,60 d 0,40 trainoss 0,20 0,00 -0,20 1 3 5 7 9 11 13 15 17 -0,40 Grafica del error (datos de validación) trainoss 0,6000 0,4000 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 trainoss -0,4000 -0,6000 -0,8000 -1,0000 Trainml • Numero de capas: 4 • Neuronas por capa: 2 - 2 - 2 - 1 • Error de entrenamiento: 0.0788702 de 0.05 • Gradiente final: 2.05572e-006 de 1e-010 • Numero de iteraciones: 5503 • Funciones por capa: Purelin – Tansig – Purelin - Tansig Grafica de salida deseada & salida obtenida (datos de validación) 1,20 1,00 0,80 0,60 d 0,40 trainlm 0,20 0,00 -0,20 1 3 5 7 9 11 13 15 17 -0,40 Grafica del error (datos de validación) trainlm 0,6000 0,4000 0,2000 0,0000 -0,2000 1 3 5 7 9 11 13 15 17 trainlm -0,4000 -0,6000 -0,8000 -1,0000 d traingd traingdm traingda traingdx trainrp traincgf traincgb trainscg trainbgf trainoss trainlm Respuestas obtenidas con la simulación de la red: -0,20 -0,25 -0,25 -0,14 -0,31 -0,22 -0,25 -0,26 -0,23 -0,23 -0,25 -0,22 0,25 -0,16 -0,16 -0,06 -0,21 -0,14 -0,17 -0,18 -0,13 -0,13 -0,15 -0,14 -0,14 -0,06 -0,06 0,05 -0,11 -0,06 -0,10 -0,12 -0,07 -0,08 -0,06 -0,06 0,30 0,02 0,02 0,12 -0,14 0,01 0,00 -0,01 -0,06 -0,06 0,03 0,01 0,04 -0,02 -0,02 0,09 0,07 -0,03 -0,06 -0,07 0,15 0,15 -0,02 -0,03 -0,03 0,07 0,07 0,15 -0,14 0,07 0,08 0,06 -0,06 -0,06 0,07 0,07 0,45 -0,03 -0,03 0,07 -0,15 -0,04 -0,07 -0,08 -0,07 -0,07 -0,03 -0,04 0,15 0,06 0,06 0,15 0,07 0,05 0,04 0,11 0,15 0,15 0,06 0,05 0,48 0,11 0,11 0,18 0,07 0,13 0,18 0,17 0,16 0,16 0,11 0,13 0,01 0,10 0,10 0,17 0,07 0,10 0,14 0,27 0,16 0,16 0,09 0,11 0,60 0,10 0,11 0,17 -0,08 0,11 0,16 0,14 0,15 0,05 0,10 0,11 0,58 0,09 0,09 0,17 0,07 0,09 0,10 0,43 0,1 6 0,16 0,09 0,09 0,56 0,14 0,14 0,19 0,07 0,21 0,38 0,70 0,16 0,16 0,13 0,22 0,49 0,14 0,14 0,19 0,07 0,21 0,37 0,67 0,16 0,16 0,13 0,21 0,32 0,13 0,14 0,19 0,07 0,19 0,34 0,54 0,16 0,16 0,13 0,20 1,00 0,13 0,13 0,18 0,07 0,16 0,26 0,28 0,16 0,16 0,12 0,16 -0,1 0,14 0,14 0,19 0,07 0,21 0,37 0,85 0,16 0,16 0,13 0,22 -0,3 0,14 0,14 0,19 0,07 0,20 0,38 0,35 0,16 0,16 0,13 0,21 Al hacer un análisis se del error cuadrático generado por matlab y de las graficas de aproximación, se ven en la figura 4.2 la salida deseada con las 2 funciones que mas se acercaron al modelo. 1,20 1,00 0,80 0,60 d 0,40 traincgf 0,20 traincgb 0,00 1 -0,20 3 5 7 9 11 13 15 17 -0,40 Figura 4.4: Grafica de valores resultantes de iterar la serie 2 - 2 - 2 - 1 Se pude observar que los modelos con mayor numero de capas parecen ajustar mejor la curva del conjunto de validación debido que no describe totalmente el comportamiento de la serie pero si encuentra puntos en los cuales coincide la serie, eso da a suponer que en un momento dado y con muchos mas datos de entrenamiento se puede ajustar un modelo que sin estar sobrentrenado halle el modelo que se ajuste con mucho menor error a la serie.