Story Transcript
PREDICCIÓN METEOROLÓGICA PRÁCTICA FINAL INTELIGENCIA EN REDES DE COMUNICAIONES
Roberto Díaz Morales Jaime Mayor Berzal
100025231 100025204
Índice
Introducción Tratamiento de datos Predicciones Cuadro con errores Conclusiones Código para traducir el código METAR
Introducción Para desarrollar el sistema real de predicción meteorológica, se necesita algún tipo de información que nos ayude a lograr el objetivo. Dicha información es la información METAR (Meteorological Actual Report) que es preciso y fácil de leer. Dicho código proporciona información muy valiosa que utilizan líneas aéreas y organizaciones gubernamentales de todo el mundo. La forma de presentación de dichos datos es la siguiente: • • • • • • • • • • • •
HoraCET Temperatura (grados Fahrenheit) Punto de rocío (grados Fahrenheit) 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
En cada Fichero con código METAR se tiene la información de un día. No se han utilizado todos los datos de todos los días ni de todas las horas, ya que mucha de esta información no estaba disponible o simplemente había tal cantidad de ficheros que hacían muy difícil el análisis de todos los datos. Los tres objetivos de la predicción son: • • •
Predicción de temperatura a 1 hora Predicción de temperatura a 24 horas Predicción de condiciones meteorológicas (Despejado, Parcialmente Nublado, etc) a 24 horas
Para la realización de esta práctica se han obtenido datos desde Julio de 1996 hasta Octubre de 2004 de dos aeropuertos de Madrid: Barajas y Cuatro Vientos. A dichos datos se les ha aplicado un tratamiento de datos que se comentará en la siguiente sección.
Tratamiento de datos Con el fin de poder utilizar los datos METAR, se tiene que proceder a un procesamiento de datos. Dicho procesamiento fue realizado por un programa implementado por nosotros en Java. Dicho programa saca toda la información del código METAR y lo escribe en formato arff para que pueda ser utilizado por Weka. Los datos fueron tratados de muy diversas maneras y se escribió una notación para cada tipo de previsión. Todos los atributos de las tres previsiones son iguales a excepción del último y se escriben en el siguiente orden: 1. Día Este valor puede tomar valores desde 1 a 366, en el caso de que el año sea bisiesto. La razón de utilizar esta notación y no otra como puede ser día del mes y el mes es que con una numeración global de todo el año puede ser que Weka saque relaciones y mejores resultados y sobre todo usar solo un atributo en vez de dos, con lo que la carga computacional se reduce. 2. HoraCET La Hora toma valores desde 0 hasta 23.5 horas. Se ha modificado la presentación de los datos METAR que aparecían en medidas sexagesimales y AM y PM, para que de esta manera pueda ser más fácil relacionar una hora con su hora posterior para la predicción de 1 hora más tarde. 3. TemperaturaF Esta temperatura está en grados Fahrenheit. Había muchos valores incorrectos debido a los aparatos de medida que podía estropearse o funcionar mal dando. Por lo que se optó sólo dar por validos los valores que estuviesen por encima de –70 y por debajo de 140 que son unos valores más aceptables. 4. Nivel_de_Rocío Muchos de estos valores eran claramente erróneos, como la aparición del valor -9999. Por lo que después de ver la distribución total de estos datos y eliminando el valor –9999 se comprobó que la mayoría de los datos estaban en una franja muy delimitada por lo que se limitó los valores del rocío al rango –70 a 65 (el índice inferior podría ser mucho más grande pero se dejó para ver si se conseguían mejores resultados). 5. Humedad Estos son otros datos con muchos errores. Muchos valores no estaban disponibles (N/A) o eran totalmente erróneos (-9999). Además hay que añadir que para el año 2004 aparecen algunos valores expresados en porcentaje, con lo que no pueden usarse con el resto de datos de Humedad.
6. PresionIn Estos datos se tratan ajustándolos a un rango de valores normal, ya que ciertos valores eran muy exagerados o incluso totalmente erróneos. Se pusieron como desconocidos los valores no disponibles (N/A), el valor incorrecto –9999 y los valores fuera del rango que consideramos valores normales (entre 15 y 45 pulgadas). 7. Visibilidad Se quitaron los ya mencionados errores incorrectos como el –9999 y se consideraron correctos los valores que estaban en el rango de –70 a 140(el índice inferior podría ser mucho más grande pero se dejó para ver si se conseguían mejores resultados). 8. Dirección del viento Este atributo se transformó en dirección en grados y no en el nombre de las direcciones. Los valores METAR encontrados eran Este, ENE, NE, NNE, Norte, NNO, NO, ONO, Oeste, OSO, SO, SSO, Sur, SSE, SE, ESE, Calm y Variable, estos dos último se tomaban como desconocidos ya que no se podía determinar la dirección. Los demás posibles valores dividían a la circunferencia de 360 grados en 12 direcciones siendo el este 0 y 360º y el resto son valores que se van incrementando 22.5º. 9. Velocidad_del viento Estos valores son tratados de manera que cuando aparecen valores no numéricos como Calm (0, no hay velocidad) no produzcan error. También se quita el valor erróneo –9999 y como pueden aparecer valores excesivos (grandes ventiscas) que pueden perjudicar el problema, se limita la velocidad al rango entre 0 y 78 millas por hora. 10. Ráfaga El tratamiento de los datos es muy similar al caso de la velocidad del viento, pero la principal diferencia es que la cantidad de este tipo de datos es mucho menor. 11. Hechos Este atributo indica un hecho concreto que sucede, como que llueva o nieve. Es distinto al atributo condición: hay muchos menos tipos de hechos y además hay gran cantidad de valores desconocidos. Los hechos utilizados son Lluvia, Tormenta, Lluvia-Tormenta, Lluvia-Nieve, Nieve, Bruma, Tornado, BrumaLluvia, Granizo-Tormenta, Lluvia-Granizo-Tormenta, Granizo y Nieve-Granizo.
12. Condiciones En todos los archivos se han encontrado un número muy cercano a 50 posibles condiciones. Para simplificar el modelo, se ha reducido el número de condiciones tomando las siguientes simplificaciones: 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 Humo => Humo Estas agrupaciones no son casuales. El hecho de que se agrupen tanto es que muchas condiciones aparecen muy poco, incluso sólo 1 vez. El hecho de que por ejemplo se agrupen Despejado y Nubes dispersas es que la diferenciación entre ambos suceso y a su vez la distinción de Parcialmente Nublado es muy difícil ya que varían muy poco las condiciones. Por eso se trata de conseguir un menor error reduciendo el número de condiciones. 13. Temperatura de una hora antes Está variable fue introducida para obtener una mejor predicción de la temperatura, ya que es muy probable que si la temperatura de antes y la de ahora son iguales la de la siguiente hora sería muy parecida. No se introdujeron más temperaturas de horas más atrasadas porque no consideramos que mejoraran en demasía el resultado. Además, haciendo un análisis de resultados esta variable no aparecía como una de las variables más determinantes. 14. Temperatura del día anterior a la misma hora Con esta variable pensamos que serviría tanto para estimar la temperatura dentro de una hora como la del día siguiente, ya que tal vez se podría ver una relación entre la hora del día anterior y la del actual y con ello sacar la temperatura del día siguiente.
15. Condiciones del día anterior a la misma hora La justificación de la inclusión es similar a la de la variable anterior, conseguir averiguar la posible relación entre las condiciones del día anterior y la del actual, para extrapolar y obtener las del siguiente. Hay un atributo número 16 que es distinto dependiendo de la predicción que queramos hacer: 1) Temperatura en 1 hora Se añade una columna que indica la temperatura en la hora siguiente. Esta será la variable que queremos utilizar para predecir el tiempo al cabo de 1 hora. Para realizar dicha predicción, se eliminaran todos los datos que no conozcan temperatura actual o temperatura dentro de una hora. 2) Temperatura en 24 hora Se añade una columna que indica la temperatura que habrá el día siguiente a la misma hora. Esta será la variable que queremos utilizar para predecir el tiempo al cabo de 24 horas. Para realizar dicha predicción, se eliminaran todos los datos que no conozcan temperatura actual o temperatura del día siguiente a la misma hora. 3) Condiciones en 24 horas Se añade una columna con las condiciones del día siguiente a la misma hora. Esta será la variable que queremos utilizar para predecir las condiciones al cabo de 24 horas. Para realizar dicha predicción, se eliminaran todos los datos que no conozcan condición actual o la condición del día siguiente a la misma hora. Este atributo aparecerá en cada uno de los 3 ficheros que se generan, según que se quiere predecir, temperatura de la hora siguiente, del día siguiente o condiciones del día siguiente. Además de este tratamiento, los datos se han muestreado de tal forma que para el conjunto de entrenamiento (ficheros desde 1996 a 2003) se obtuvieron alrededor de 7000 instancias y para el de Test (2004) unas 700. es decir, el 10% del conjunto de entrenamiento. Esto se ha hecho ya que si el fichero es demasiado grande no hay suficiente memoria para poder utilizar la herramienta Weka correctamente.
No se ha descartado ninguna variable ya que al aplicar distintos algoritmos de selección de atributos obtuvimos resultados distintos y preferimos tener un poco de redundancia a quizá perder información. De todas formas realizamos unos análisis de atributos y obtuvimos los siguientes resultados:
Para las condiciones del día siguiente con CfsSubsetEval y como método de búsqueda BestFirst o GreedyStepwise se obtuvieron que los atributos más importantes eran: día Humedad PresionIn Visibilidad_MPH Velocidad_vientoMPH Conditions TemperaturaF1HAntes Conditions1DAntes Para estimar la temperatura de la hora siguiente y la del día siguiente usando los mismos métodos, obtuvimos que la variable determinante era la temperatura actual.
Predicciones Predicción de las condiciones a 24 horas Para predecir las condiciones hemos usado todos las clasificadores que nos permitía usar Weka. Para ello hemos aplicado uno o varios algoritmos de cada tipo para ver con cuales obteníamos mejores resultados. Rules Este es el clasificador del que más algoritmos hemos probado. Este tipo de clasificadores crea un conjunto de reglas a partir de las cuales tratan de predecir cuáles serán las condiciones del día siguiente. Los resultados varían según que algoritmo se utilice. A continuación se muestran los distintos algoritmos: •
Conjunctive Rule Esta clase implementa un algoritmo crea una regla conjuntiva sencilla. Dicha regla consiste en realizar la conjunción (AND) de los antecedentes del atributo a predecir mediante una clasificación (si hubiera sido numérica la variable hubiera sido una regresión) El resumen del resultado se muestra a continuación Correctly Classified Instances Incorrectly Classified Instances Kappa statistic K&B Relative Info Score K&B Information Score Class complexity | order 0 Class complexity | scheme Complexity improvement (Sf) Mean absolute error Root mean squared error Relative absolute error Root relative squared error Total Number of Instances
441 272 0.2686 7371.3146 102.2869 884.4841 815.4123 69.0717 0.0932 0.2105 89.7533 94.8852 713
61.8513 % 38.1487 % % bits bits bits bits
0.1435 1.2405 1.1436 0.0969
bits/instance bits/instance bits/instance bits/instance
% %
En estos resultados se puede observar que de las 713 correspondientes al año 2004 del fichero de Test, 441 han sido correctamente clasificadas y 272 no lo han sido, lo que nos da un error ERROR =
# aciertos 272 = = 0,3814866 = 38,14866% # aciertos + # fallos 713
Como se puede ver en la matriz de confusión, el principal error aparece cuando intenta decidir si está nublado o está despejado.
=== Confusion Matrix === a 0 0 0 0 0 0 0 0 0 0
•
b c 0 5 0 1 0 302 0 0 0 58 0 0 0 0 0 0 0 1 0 0
d e 0 25 0 5 0 175 0 0 0 139 0 0 0 0 0 0 0 2 0 0
f 0 0 0 0 0 0 0 0 0 0
g 0 0 0 0 0 0 0 0 0 0
h 0 0 0 0 0 0 0 0 0 0
i 0 0 0 0 0 0 0 0 0 0
j 0 0 0 0 0 0 0 0 0 0
| | | | | | | | | |