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.