Inteligencia en Redes de Comunicaciones Predicción meteorológica

Anuncio
Inteligencia en
Redes de
Comunicaciones
Predicción meteorológica
Aitor Mendaza Ormaza
100021542
INDICE
Introducción …………………………………………………………………………………………………………1
Tratamiento de Datos ………………………………………………………………………………………….5
Resultados y análisis…………………………………………………………………………………………… 7
Introducción:
El objetivo de esta práctica es desarrollar un sistema de caracterización
metrológica, usando para ello la plataforma Weka como herramienta de aplicación
de algoritmos de aprendizaje.
En concreto, se procederá al desarrollo de tres modelos de predicción:
•
•
•
Predicción de temperatura a la hora siguiente.
Predicción de temperatura al día siguiente (24 horas exactas).
Predicción de las condiciones meteorológicas del día siguiente (24 horas).
Para el desarrollo de esta práctica, nos hemos apoyado en las simulaciones
obtenidas por unos compañeros. Se ha procedido al estudio de la obtención de
dichas simulaciones, así como del estudio de las razones que se usaron para el
tratamiento de datos y la elección de los modelos de predicción/simulación.
Los datos a partir de los cuales se ha realizado el estudio es información
recogida a través del Metar (Meteorological Actual Report), disponibles de forma
gratuita en internet. El uso de información a través del METAR simplifica las cosas,
ya que usa un código establecido por el World Meteorological Organization (WMO),
y adaptado por todas las naciones del mundo, por lo que dicho estudio podría ser
usado en un futuro sin necesidad de complejos cambios.
Los datos usados en el desarrollo de esta práctica son los correspondientes
al aeropuerto Barajas de Madrid (código internacional LEMD) desde el año 1996
hasta el año 2004. Dichos datos contienen la siguiente información, tomada cada
media hora:
HoraCET (Dividia en Año, mes y hora)
Temperatura (grados Farenheit)
Punto de rocío (grados Farenheit)
Humedad
Presión (pulgadas)
Visibilidad
Dirección del viento
Velocidad del viento (millas por hora)
Velocidad de ráfagas de viento (millas por hora)
Precipitación
Eventos
Condiciones
A continuación mostramos un fragmento de los datos originales:
HoraCET, TemperaturaF, Nivel de RocíoF, Humedad, PresiónIn, Visibilidad
MPH, Wind Direction, Velocidad del vientoMPH, RáfagaMPH, Precipitación In,
Hechos, Conditions.
12:00 AM,37.4,33.8,87,30.39,7.0,NNE,2.3,-,N/A,,Parcialmente Nublado
12:30 AM, 35.6,33.8,93,30.39,7.0,Calm,Calm,-,N/A,,Parcialmente Nublado
1:00 AM,35.6,33. 8,93,30.39,7.0,Calm,Calm,-,N/A,,Nubes Dispersas
1:30 AM,35.6,33.8,93,30.36,7. 0,Norte,1.2,-,N/A,,Nubes Dispersas
2:00 AM,35.6,33.8,93,30.36,7.0,Norte,1.2,- ,N/A,,Nubes Dispersas
2:30 AM,35.6,33.8,93,30.36,7.0,NNO,1.2,-,N/A,,Nubes Dis persas
3:00 AM,35.6,33.8,93,30.36,7.0,NNO,1.2,-,N/A,,Nubes Dispersas
3:30 AM,33.8,32.0,93,30.33,7.0,Calm,Calm,-,N/A,,Parcialmente Nublado
4:00 AM,30.2, 32.0,100,30.33,7.0,Calm,Calm,-,N/A,,Parcialmente Nublado
4:30 AM,32.0,30.2,93 ,30.33,7.0,Calm,Calm,-,N/A,,Parcialmente Nublado
5:00 AM,32.0,30.2,93,30.30,7 .0,Calm,Calm,-,N/A,,Parcialmente Nublado
5:30 AM,30.2,30.2,100,-9999,5.6,Calm ,Calm,-,N/A,,Despejado
Como se puede observar en esta muestra, hay casos en los que faltan datos,
o estos son incorrectos. Estos datos no han sido sometidos a ningún procesado de
datos.
Procedemos ahora a exponer los distintos filtros que se han aplicado a los
datos para su posterior procesamiento con WEKA. Explicaremos también porque se
han elegido dichos filtros.
TRATAMIENTO DE DATOS:
El tratamiento de los datos en bruto se ha realizado mediante una serie de
filtros, programados en java, para adecuar el formato de los datos a nuestras
necesidades, así como para conseguir filtrar los datos inservibles o los que
juzgamos innecesarios para los modelos que se eligieron estudiar. Para ello,
iremos enumerando y describiendo uno por uno los distintos campos, en el orden
correspondiente, de los datos obtenidos a través de METAR.
AÑO:
Indica el año en el que se tomó la muestra.
entre 1996 y 2004.
Su valor está comprendido
MES:
Al igual que el dato anterior, indica el mes en que la muestra fue tomada.
Así mismo, no necesita ningún tratamiento, ya que se encuentra indicado de forma
numérica, oscilando entre 01 y 12.
DÍA:
Indica el día en que fue tomada la muestra. Sus valores oscilan entre 01 y
31. Así mismo, tiene en cuenta las fechas por meses, es decir, que febrero sólo
tiene 28 dias (29 si es bisiesto) y algunos de los meses sólo 30 en vez de 31. No
es necesario que hagamos una comprobación del día en función del mes, porque
asumimos que los datos obtenidos no tienen errores en estos campos.
HORA:
Indica el momento exacto en que fue tomada la muestra. El periodo de
muestreo es de media hora, es decir, se toma una muestra cada media hora. A
cada muestra se la etiqueta con un número, indicando el número de muestra por
día. Es decir, la primera muestra, tomada a las 00:00h se etiqueta como 0. La
siguiente muestra, tomada a las 00:30h se etiqueta como 1, y así sucesivamente
hasta la última muestra, número 47 que corresponde a las 23:30h. Teniendo en
cuenta el formato en que se indica la hora, no es necesario realizar ningún cambio
en este campo de datos.
TEMPERATURA:
Este campo representa la medición de la temperatura en el momento de
muestreo. Está indicada en grados Farenheit, en formato de tres dígitos con
decimal. Sobre dicha medida tampoco se realiza ningún cambio.
PUNTO DE ROCÍO:
Variable de tres dígitos con decimal. Su unidad de medida son grados
Farenheit. No se necesitó ningun preprocesado de datos para su posterior uso y
tratamiento.
HUMEDAD:
Variable de tipo real. De nuevo, no se necesitó ningún preprocesado.
PRESIÓN:
Variable expresada con tres dígitos y decimal. Su unidad de medida es la
pulgada. No se realizó ningún cambio.
VISIBILIDAD:
Variable de tipo real cuya unidad de medida son los metros. Los valores que
toma esta variable en los datos usados son -9999 para condición de despejado, 7.0
para cualquier otra cosa, y ? para filas de datos desconocidos. Se consideró, que
debido a la poca información que aporta, y a no considerarse relevante, la
eliminación de esta columna de de datos para el procesamiento final de la
información mediante WEKA.
DIRECCIÓN DEL VIENTO:
Variable cuyo atributo toma un string de entre los siguientes posibles
valores:{Calm, Variable, Este, ENE, NE, NNE, Norte, NNO, NO, ONO, Oeste, OSO,
SO, SSO, Sur, SSE, SE, ESE}. No se realizó ningún cambio.
VELOCIDAD DEL VIENTO:
Puede tomar cualquier valor numérico, medida en millas, excepto cuando no
existe viento, denotándose este estado por el estring Calm. Se sustituyó Calm por
‘0’ para que la columna entera fuese de tipo numérico y facilitar su tratamiento.
VELOCIDAD DE RÁFAGAS DE VIENTO:
Variable de tipo real cuya unidad de medida. Su valor es siempre ‘-’ por lo
que se decidió eliminar esta columna de datos.
PRECIPITACIÓN:
Variable de tipo real cuyos valores no están disponibles ‘N/A’, por lo que se
optó por su eleminación.
EVENTOS:
Variable no disponible (‘?’). Se eliminó esta fila de datos.
CONDICIONES:
Variable de tipo atributo que puede tener distintos valores con matices muy
sutiles. Se decidió agruparlos dentro de clases, para que el error en el procesado
de esta variable influyese lo menos posible en la simulación:
ƒ Despejado, Nubes Dispersas Æ Despejado.
ƒ Nube en Embudo, Parcialmente Nublado, Nublado, Altamente Nublado
ÆNublado.
ƒ Bancos de Bruma, Bruma Ligera, Bruma Leve, Bruma, Bruma Helada
Leve Æ Bruma.
ƒ Lluvias, Llovizna Leve, Llovizna, Llovizna Abundante, Llovizna Helada
Leve, Lluvia Helada Leve, Lluvia Leve, Lluvia, Abundantes Lluvias,
Fuertes Lluvias Æ Lluvia.
ƒ Tormenta Leve, Tormentas Leves y Lluvia, Tormenta, Tormentas y
Lluvia, Fuertes Tormentas y Lluvia, Tormentas Leves con Granizo,
Tormentas con Granizo Æ Tormenta.
ƒ Arena, Remolino de Polvo, Nubes de Polvo, Nubes Bajas de Polvo
ÆNubes-de-Polvo.
ƒ Leve Caída de Granizo Pequeño, Caídas de Granizo, Granizo Pequeño,
Granizo Leve Æ Granizo.
ƒ Partículas de Nieve, Caídas de Nieve, Nevada Leve, Nieve, Abundante
Nieve Æ Nieve.
ƒ Niebla, Abundante Niebla, Niebla Leve, Neblina Æ Niebla.
ƒ Desconocido ÆDesconocido.
Por último, se realizó un filtrado sobre todas las filas de datos con datos
incompletos, eliminándose dichas filas, como por ejemplo la línea Æ 1996, 07, 01,
25, ?,?,?,?,?,?,?,?,?,? ya que no nos aportan ninguna información de utilidad.
Además del filtrado de los datos usados eliminando información no necesaria
o incompleta, se añadió una serie de datos que resultaban necesarios para el uso
de WEKA. Como WEKA para cada dato sólo acepta una línea, sin tener en cuenta
las anteriores, incluimos en cada linea la siguiente información adicional:
ƒ Variable Temperatura1hora Æ para poder predecir la temperatura de
en la hora siguiente necesitamos que en cada fila esté el valor real de
dicha medida para poder hallar el error de predicción. Añadimos la
variable a continuación de las demás.
ƒ
Variable Temperatura24horas Æ Del mismo modo, necesitamos
añadir la temperatura del día después a la misma hora para poder
realizar la predicción.
ƒ
Variable Condiciones24horasÆ Por último, añadimos otra variable
más cuyo valor será la condición meteorológica del día siguiente a la
misma hora para poder predecir dicha variable.
Una vez filtrados todos los datos, se añadió una cabezera al fichero
obtenido, con el fin de convertirlo en un fichero .arff para que pueda ser usado por
WEKA. La cabezera del archivo quedaría de la siguiente forma:
% comentarios
@relation ‘Meteorologia’
@attribute ‘Anyo’ real
@attribute ‘Mes’ real
@attribute ‘Dia’ real
...
@attribute ‘Direccion del viento’{Calm, Variable, Este, ENE, NE, NNE,
Norte, NNO, NO, ONO, Oeste, OSO, SO, SSO, Sur, SSE, SE, ESE}
...
@data
1996,07,01,10,66.2,41.0,40,29.98,Calm,0,Despejado,64.4,66.2,Despejado
1996,07,01,11,66.2,41.0,40,29.98,Calm,0,Despejado,64.4,66.2,Despejado
1996,07,01,12,64.4,48.2,56,29.98,Calm,0,Despejado,62.6,64.4,Despejado
1996,07,01,13,64.4,48.2,56,29.98,Calm,0,Despejado,62.6,64.4,Despejado
1996,07,01,14,62.6,48.2,59,29.98,Calm,0,Despejado,68.0,64.4,Despejado
RESULTADOS Y ANÁLISIS:
A continuación mostraremos los distintos resultados y su posterior análisis
de las predicciónes realizadas mediante WEKA. Destacamos aquí que se eligió usar
un 80% de los datos para entrenar los diversos métodos, y el 20% restante para
probar el modelo obtenido. Así mismo, no todos los campos fueron usados en
todos los modelos. Esto lo veremos más detalladamente en cada modelo.
Predicción de la temperatura a la hora siguiente:
Para esta predicción tomamos en cuenta las siguientes variables:
Mes
Dia
Hora
Temperatura
Humedad
Presion
Velocidaddelviento TemperaturaHoraSiguiente
Mostramos los modelos de predicción usados:
‰
LeastMedSq (-S 4 -G 0) :
Entre paréntesis aparecen los parámetros elegidos para el modelo en
cuestión. Este método consiste en una regresión lineal por mínimo error medio
cuadrático. Los valores obtenidos son:
Linear Regression Model
temperaturaHoraSiguiente =
-0.1746 * mes +
-0.0761 * dia +
-0.0149 * hora +
1.1981 * temperatura +
0.1938 * humedad +
7.9914 * presion +
-0.1086 * velocidaddelviento +
-261.7461
=== Evaluation on test split ===
=== Summary ===
Correlation coefficient
Mean absolute error
Root mean squared error
Relative absolute error
Root relative squared error
Total Number of Instances
Ignored Class Unknown Instances
0.9481
2.287
3.2949
22.8006 %
26.1584 %
284
13
El error absoluto de predicción es del 22.8% y la media de grados de error
es de 2.3º . Obtenemos buenos resultados y es normal, ya que la regresión lineal
se vale de datos inmediatamente anteriores para predecir el actual la temperatura
no suele experimentar cambios bruscos en periodos cortos de tiempo. El error se
puede deber a que la temperatura refleja cambios de las horas nocturnas a la
diurnas, y se están cogiendo ambas en algunos casos. Es posible también que en
circunstancias como precipitaciones intensas, como pueden ser las llamadas
tormentas de verano, hagan que este error aumente, ya que sin previo aviso
cambia la temperatura y las condiciones climatológicas.
obtienen unos resultados razonables.
‰
Aún así, vemos que se
IBk (-K 1 -W 0):
Este Algoritmo se basa en los K vecinos más próximos, de modo que
función de K obtendremos unos resultados u otros. El mejor resultado se ha
obtenido para K=1:
=== Evaluation on test split ===
=== Summary ===
Correlation coefficient
Mean absolute error
Root mean squared error
Relative absolute error
Root relative squared error
Total Number of Instances
Ignored Class Unknown Instances
0.9266
1.1155
3.9484
11.1209 %
31.3466 %
284
13
Con este método obtenemos mejores resultados, el error absoluto de
predicción es del 11.12% y la media de grados de error es de 1.11º , ya que usa
sólo como datos de predicción la línea anterior, y casi con seguridad la temperatura
anterior es igual a la actual. Este método da mejores aproximaciones que el
anterior método, ya que el anterior método sólo hace predicciones lineales, con lo
cual se comete siempre un mayor error en modelos que no son lineales, como es la
predicción de temperatura.
El resto de algoritmos nos daban resultados bastante peores así que no
recogemos más resultados dignos de mención.
Predicción de la temperatura al día siguiente:
Para esta predicción tomamos en
consideraciones que en el apartado anterior:
‰
cuenta
las
mismas
LeastMedSq (-S 4 -G 0) :
=== Evaluation on test split ===
=== Summary ===
Correlation coefficient
Mean absolute error
Root mean squared error
Relative absolute error
Root relative squared error
Total Number of Instances
Ignored Class Unknown Instances
0.9856
2.5894
4.5687
21.3327 %
28.2149 %
280
2
variables
y
El error absoluto de predicción es del 21.33% y la media de grados de error es
de 2.6º. Vemos como este modelo, para predicciones de temperatura a 24 horas
también da unos resultados bastante aceptables. Esto es debido a que en media, la
variación de temperatura con respecto del tiempo, es muy lenta, y de un día al
anterior, suele hacer la misma temperatura, con una muy leve tendencía de
descenso o ascenso, según la época del año que sea.
‰
IBk (-K 1 -W 0):
=== Evaluation on test split ===
=== Summary ===
Correlation coefficient
Mean absolute error
Root mean squared error
Relative absolute error
Root relative squared error
Total Number of Instances
Ignored Class Unknown Instances
0.9732
1.2011
2.5028
11.0825 %
18.8435 %
281
16
El error absoluto de predicción es del 11.08% y la media de grados de error
es de 2.5º. Este algoritmo nos da mejores resultados por las mismas razones
expuestas en el apartado anterior.
Predicción de las condiciones meteorológicas al día siguiente:
El ultimo punto en la predicción consiste en intentar saber cuales serán las
condiciones meteorológicas 24 horas después del momento de estudio. La principal
diferencia que tiene este punto con respecto a los dos primeros es que ahora no
queremos un valor numérico sino que queremos saber una característica que puede
tener solo un número finito de valores posibles. Al intentar predecir un conjunto de
valores, ha de tener en cuenta un mayor número de variables, y será más
susceptible al error
Para observar el correcto funcionamiento de nuestro sistema de predicción
observaremos la “matriz de confusión” proporcionada por Weka. En dicha matriz
representa los valores estimados frente a los valores reales en una matriz
cuadrada. De forma que los aciertos aparecen en la diagonal de la matriz (valor
estimado = valor real) y los errores en las restantes posiciones de la misma.
Tras probar con muchos sistemas obtenemos que los mejores resultados se
obtienen con los siguientes algoritmos:
‰
IBk (-K 4 -W 0):
Se trata del algoritmo de los K-vecinos mas próximos usando los 4 vecinos
que tienen valores de los parámetros conocidos mas parecidos al del caso de
estudio:
=== Evaluation on test split ===
=== Summary ===
Correctly Classified Instances
Incorrectly Classified Instances
Kappa statistic
Mean absolute error
Root mean squared error
Relative absolute error
Root relative squared error
Total Number of Instances
Ignored Class Unknown Instances
1124
568
0.4315
0.067
0.2009
60.928 %
85.0601 %
1692
68
66.4303 %
33.5697 %
=== Confusion Matrix ===
a
b
635 123
257 415
5
7
21 58
3
3
0
0
0
0
4
7
0
0
9 13
2
0
c
1
3
10
0
0
0
0
0
0
2
0
d
4
22
2
44
0
0
0
3
0
1
1
e
1
2
0
0
1
0
0
0
0
0
0
f
0
0
0
0
0
0
0
0
0
0
0
g
0
0
0
0
0
0
0
0
0
0
0
h
0
2
0
0
0
0
0
2
0
0
0
i
0
0
0
0
0
0
0
0
0
0
0
j
3
7
0
1
0
0
0
0
0
14
0
k
0
0
0
1
0
0
0
0
0
0
3
|
|
|
|
|
|
|
|
|
|
|
<-a
b
c
d
e
f
g
h
i
j
k
classified as
= Despejado
= Nublado
= Bruma
= Lluvia
= Tormenta
= Polvo
= Granizo
= Nieve
= Humo
= Niebla
= Desconocido
Donde observamos un porcentaje de acierto de 66.43% que es un valor
bastante malo por lo que debemos mejorar el algoritmo.
‰
IBk (-K 1 -W 0):
Se trata del algoritmo de los K-vecinos mas próximos usando solo el vecino
que tiene valores de los parámetros conocidos mas parecidos al del caso de
estudio:
=== Evaluation on test split ===
=== Summary ===
Correctly Classified Instances
Incorrectly Classified Instances
Kappa statistic
Mean absolute error
Root mean squared error
Relative absolute error
Root relative squared error
Total Number of Instances
Ignored Class Unknown Instances
1448
244
0.7618
0.0267
0.1621
24.2339 %
68.6503 %
1692
68
85.5792 %
14.4208 %
=== Confusion Matrix ===
a
b
692 71
68 612
1
4
10 30
0
2
0
0
0
0
3
3
0
0
2
9
2
0
c
0
1
19
0
0
0
0
0
0
0
0
d
4
18
0
81
0
0
0
3
0
0
0
e
0
0
0
0
5
0
0
0
0
0
0
f
0
0
0
0
0
0
0
0
0
0
0
g
0
0
0
0
0
0
0
0
0
0
0
h
0
2
0
3
0
0
0
7
0
0
0
i
0
0
0
0
0
0
0
0
0
0
0
j
0
6
0
1
0
0
0
0
0
28
0
k
0
1
0
0
0
0
0
0
0
0
4
|
|
|
|
|
|
|
|
|
|
|
<-a
b
c
d
e
f
g
h
i
j
k
classified as
= Despejado
= Nublado
= Bruma
= Lluvia
= Tormenta
= Polvo
= Granizo
= Nieve
= Humo
= Niebla
= Desconocido
Podemos observar que hemos mejorado el porcentaje de acierto hasta un
85.58% que es un valor mucho mejor y bastante aceptable.
Observando la matriz de confusión, vemos que la mayor fuente de errores
se produce al confundir los dias Despejados con Nublados y viceversa. Esto es así,
porque al hacer la agrupación inicial se agruparon días similares en distintas
categorias. Así, Parcialmente nublado pasó a Nublado y Parcialmente Despejado pasó
a Despejado, habiendo poca diferencia entre parcialmente nublado y parcialmente
despejado (la misma diferencia que entre el vaso medio lleno y el vaso medio vacío).
Una forma de subsanar este error habría sido crear una categoría más en el preprocesado
de datos en el que agrupar los dias parcialmente nublados y parcialmente despejados (en
el simil del vaso, como diría un ingeniero: El vaso es dos veces más grande de lo
necesario).
‰
J48 TREE:
Pasamos a probar con algoritmos basados en árboles binarios. De los
distintos árboles que nos ofrece la herramienta este es el que nos da los mejores
resultados aunque si los observamos no llega a alcanzar los resultados que hemos
obtenido con el algoritmo del vecino mas próximo.
Nota: No representamos el árbol obtenido debido a su enorme tamaño.
=== Evaluation on test split ===
=== Summary ===
Correctly Classified Instances
Incorrectly Classified Instances
Kappa statistic
Mean absolute error
Root mean squared error
Relative absolute error
Root relative squared error
Total Number of Instances
Ignored Class Unknown Instances
1305
387
0.6209
0.0467
0.1856
42.4584 %
78.5717 %
1692
68
77.1277 %
22.8723 %
=== Confusion Matrix ===
a
b
636 116
118 556
2
6
11 47
0
5
0
0
0
0
3
3
0
0
4 11
1
0
c
1
3
13
1
0
0
0
0
0
2
0
d
11
22
2
62
0
0
0
0
0
1
0
e
0
0
0
0
2
0
0
0
0
0
0
f
0
0
0
0
0
0
0
0
0
0
0
g
0
0
0
0
0
0
0
0
0
0
0
h
0
2
0
2
0
0
0
10
0
0
0
i
0
0
0
0
0
0
0
0
0
0
0
j
2
7
1
2
0
0
0
0
0
21
0
k
1
0
0
0
0
0
0
0
0
0
5
|
|
|
|
|
|
|
|
|
|
|
<-a
b
c
d
e
f
g
h
i
j
k
classified as
= Despejado
= Nublado
= Bruma
= Lluvia
= Tormenta
= Polvo
= Granizo
= Nieve
= Humo
= Niebla
= Desconocido
Donde observamos un porcentaje de acierto próximo al 77%.
De nuevo podemos observar, y aquí de una forma más evidente, los fallos
existenes que hay cuando los modelos confunden los dias parcialmente nublados y
parcialmente despejados, en el punto de error entre dias despejados y dias
nublados. Este es un claro ejemplo de la importancia que tiene hacer una buena
agrupación, ya que si se agrupan muchos datos en pocos grupos (como es el caso)
se pierde precisión, al no haber una clara distinción en los datos de agrupamiento.
Descargar