PREDICCIÓN METEOROLÓGICA CON LA PLATAFORMA WEKA Ismael Fernández Castellano 100033034 Telmo Calle Facal 100035925 Grupo 91
1. INTRODUCCIÓN El objetivo de la práctica es desarrollar un sistema de caracterización meteorológica, utilizando para ello la plataforma Weka como herramienta de aplicación de algoritmos de aprendizaje. Los modelos de predicción a desarrollar son: Predicción de temperatura a 1 hora Predicción de temperatura a 24 horas Predicción de condiciones meteorológicas a 24 horas Para realizar los modelos nos podemos basar en cualquiera de las técnicas de Weka, incorporando las variables que se estimen oportunas de entre las proporcionadas y haciendo uso de toda la información histórica que se crea conveniente; es decir, la matriz de minería de datos estaría compuesta por los valores de las variables seleccionadas en diferentes instantes de tiempo. El punto de partida es la información METAR (Meteorological Actual Report), el estándar internacional del formato del código utilizado para las observaciones del clima en la superficie realizado cada 30 minutos(programados), el cual es análogo al código SA utilizado actualmente en Estados Unidos de Norteamérica. El código METAR es preciso y fácil de leer, y proporciona información muy muy valiosa que utilizan líneas aéreas y organizaciones gubernamentales de todo el mundo. En este caso se nos proporciona un conjunto de datos tomados en el aeropuerto de Barajas, desde el año 1996 al 2004, con los siguientes atributos: Hora CET 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 -1-
2. TRATAMIENTO DE DATOS 2.1. ATRIBUTOS 2.1.1. Temperatura Magnitud física que expresa el grado o nivel de calor de los cuerpos o del ambiente. Su unidad en el Sistema Internacional es el kelvin (K), pero los datos se encuentran e Fahrenheit. Para hacernos una idea de las temperaturas facilitadas y saber 5 cuáles pueden ser erróneas, realizamos una conversión a ºC = ( F - 32). Así 9 eliminamos el dato de la temperatura en aquellas instancias en las que se superen los 150 ºF, 65.55 ºC. Por supuesto, eliminamos también aquellas cuya temperatura aparecía como -9999. 2.1.2. Punto de rocío El punto de rocío o temperatura de rocío es la temperatura a la que empieza a condensar el vapor de agua contenido en el aire; produciendo rocío, neblina o, en caso de que la temperatura sea lo suficientemente baja, escarcha. Como ocurría con la temperatura, eliminamos los -9999 y los superiores a 100 ºF, 37.78 ºC. 2.1.3. Humedad Para una masa dada de aire, que contiene una cantidad dada de vapor de agua (humedad absoluta), se dice que la humedad relativa es la proporción de vapor contenida en relación a la necesaria para llegar al punto de saturación, expresada en porcentaje. Cuando el aire se satura (humedad relativa igual al 100%) se llega al punto de rocío. Esta humedad relativa es interesante en muchos aspectos en cuanto a meteorología. Quitamos las que tenían caracteres erróneos y las N/A poniendo ambas como?, carácter reconocido por weka. 2.1.4. Presión La presión atmosférica es la presión que ejerce la atmósfera sobre todos los objetos inmersos en ella. Su valor normal al nivel del mar es de 1 atmósfera, 760 mmhg o 1013 mbar. Una vez más nos encontramos con valores anglosajones, por lo que para hacernos una idea de las medidas convertimos de pulgadas de mercurio (inhg) a -2-
milímetros de mercurio (mmhg=inhg*25.4), a milibares (mbar=inhg*1013.25) o atmósferas (atm=inhg*0.033421) Cuando el aire está frío éste desciende, haciendo aumentar la presión y provocando estabilidad. Se forma, entonces, un anticiclón térmico. Cuando el aire está caliente asciende, haciendo bajar la presión y provocando inestabilidad. Se forma, entonces un ciclón, o borrasca térmica. Procedemos a la eliminación de los datos considerados erróneos: los 9999, los superiores a 33 inhg (838 mmhg, 1.118 mbar) e inferiores a 25 inhg (635 mmhg, 847 mbar). 2.1.5. Visibilidad La visibilidad es la capacidad de ver objetos a una determinada distancia. A mayor visibilidad mejor se verán objetos a la lejanía, mientras que a menor visibilidad se verán únicamente objetos cercanos. Ciertas condiciones climáticas, como la niebla, pueden reducir considerablemente la visibilidad. Se considera niebla cuando la visibilidad es menos a 2 km. En casos de niebla espesa la visibilidad puede verse reducida a pocos metros de distancia, haciendo casi imposible tareas como el conducir. En principio eliminamos otra vez los 9999 2.1.6. Dirección del viento El valor obtenido es el pro de 10 minutos de la dirección del viento. La dirección indica de donde proviene el viento. Es una variable nominal en el que además de las direcciones nos encontramos con viento en calma (Calm) y variable. La nomenclatura seguida se basa en la rosa de los vientos: -3-
2.1.7. Velocidad del viento Es una medida en valor de un intervalo. Las instancias denominadas Calm son sustituidas por cero y eliminamos los 9999. Para eliminar los datos que consideramos fuera de lugar tenemos que pasar las millas por hora a kilómetro por hora, (kph = 1.61 * mph); suprimimos los valores superiores a 38 mph, 61 kph, pues hemos mirado las velocidades del viento en un huracán y no suelen sobrepasar los 100 kph de media, y además el anterior valor se encontraba en 61 kph. 2.1.8. Velocidad de ráfagas de viento Es la medida en la que el viento se caracteriza por rápidas fluctuaciones. Se toma la máxima velocidad del viento observada en el intervalo de tiempo. Hacemos lo mismo que en el caso anterior, pero ahora quitamos las superiores a 56 mph, 90 kph. 2.1.9. Precipitación La cantidad de agua caída se expresa en milímetros de altura por metro cuadrado. No contiene datos 2.1.10. Eventos Es como una descripción de las condiciones, es también un atributo nominal. 2.1.11. meteorológicas Es el estado de la atmósfera en un determinado momento. Es un atributo nominal con valores dispares como arena, polvo, nublado, despejado 2.2. PREPROCESADO Primero realizamos un filtrado con RemoveUseless y valor de parámetro 90%. Este filtrado elimina atributos que oscilan menos que un nivel de variación. Es útil para eliminar atributos constantes o con un rango muy pequeño. Como parámetro toma el máximo porcentaje de variación permitido, si este valor obtenido es mayor que la variación obtenida, la muestra es eliminada. Número de atributos distintos Variación obtenida [%]= 100 Número de atributos En nuestro caso nos eliminó únicamente la variable Precipitación, sin datos. Luego aplicamos el filtro denominado Standarize que estandariza los datos numéricos de la muestra para que tengan de media 0 y la unidad de varianza. Para estandarizar un vector x se aplica la siguiente fórmula: x(i)- μ(x) x(i) = σ (x) -4-
Comenzamos estandarizando los datos numéricos para que las correlaciones sean fiables. Así veremos si es posible eliminar alguno de los atributos. Una vez realizado vemos las gráficas con las correlaciones entre los atributos y vemos que están fuertemente relacionadas la temperatura y el punto de rocío y en menor medida la temperatura y la humedad. 2.3. AGRUPAMIENTO Después de una serie de pruebas con diferente número de clúster, llegamos a un mejor resultado de 4 agrupaciones, todas en torno al 25%. Dos despejados (uno de altas temperaturas y altas presiones), uno nubes dispersas y otro parcialmente nublado. Este resultado lo utilizaremos para los algoritmos en que tengamos que indicar un número de clúster. 3. PREDICCIÓN 3.1. TEMPERATURA A UNA HORA Lo primero que hacemos es insertar un nuevo atributo denominado Temp+1 que será la temperatura de dentro de una hora. Para ello hacemos uso del filtro Copy y de las herramientas OpenOffice Calc y Base. Una vez disponemos de la nueva columna volvemos al programa WEKA y eliminamos las variables que no consideramos oportunas para la predicción de la temperatura a una hora. Eliminamos mediante el uso del filtro RemoveWithValues de Instances todas aquellas para las que no tenemos valores de temperatura. Además eliminamos los atributos Año, Día, Eventos y Velocidad de Ráfagas por ser considerados irrelevantes. En la pestaña de SelectAttributes, miramos qué variables son las que más afectan con el método de evaluación de atributos CfsSubsetEval y el método de búsqueda BestFirst. Como resultado Weka nos dice que la temperatura y el punto de rocío son las más relevantes. Probando únicamente con estos dos atributos el error cometido es prácticamente similar y el modelo se construye mucho más rápido, pues quitamos un montón de carga computacional. Sin embargo, tras unos minutos de deliberación y pruebas, decidimos quedarnos con la Temperatura, Punto de Rocío, Velocidad del viento, Humedad y ; esto tras probar con diversas combinaciones de atributos -5-
Para entrenar el modelo escogemos la opción UseTrainingSet, pues en el enunciado de la práctica se nos exige que utilicemos toda la información disponible para el entrenamiento. Una vez realizado esto probamos diferentes algoritmos de clasificación obteniendo los siguientes resultados: Temperatura y Punto de Rocío Con todos los atributos Temperatura, PtoRocío, Humedad, VelViento y Temperatura, PtoRocío, VelViento y Método: Relativo [%] Relativo [%] LinearRegression 2,0049 15,3559 1,9849 15,2032 2,0021 15,3350 2,0016 15,3308 RBFNetwork (4 clúster) 3,4657 26,5452 10,3658 79,8509 9,0353 69,2040 8,1249 62,2314 M5P 1,9842 15,1976 - - 1,9710 15,0965 1,9706 15,0937 REPTree 1,9817 15,1785 50% datos: 1,1861 50% datos: 9,1372 1,6435 12,5885 1,7144 13,1315 DecissionTable 2,8612 21,9145 2,2024 16,9653 2,5863 19,8097 2,8126 21,5428 Temperatura, Día, PtoRocío y VelRáfaga (WEKA) Temperatura, PtoRocío, Humedad, Presión, VelViento y Temperatura, PtoRocío, Humedad, Presión y Método: Relativo [%] LinearRegression 2,0050 15,3570 2,0022 15,3358 2,0043 15,3514 RBFNetwork (4 clúster) 8,7290 66,8586 M5P REPTree DecissionTable Hemos hecho una serie de clasificaciones probando para diferentes conjuntos de atributos. Los mejores resultados se han obtenido con el método REPTree (con poda) y para la totalidad de los parámetros, pero por temas de memoria sólo hemos podido clasificar con el 50% de los datos. Reduciendo de forma considerable el coste computacional los resultados con 5 parámetros, e incluso con 2, son satisfactorios. -6-
3.2. TEMPERATURA A 24 HORAS Como en el caso anterior, añadimos por el mismo procedimiento una nueva columna con la predicción de la temperatura a 24 horas. También eliminamos, mediante el uso del filtro RemoveWithValues de Instances, todas aquellas carentes de datos de temperatura. Haciendo una primera aproximación por WEKA (selectattributes), seleccionamos los atributos Día, Temperatura y. Posteriormente fuimos probando con otros atributos que nos parecían importantes, consiguiendo la siguiente tabla. Temperatura y Temperatura, Día y (WEKA) Temperatura, PtoRocío, Humedad, Presión, DirViento, VelViento y Método: LinearRegression 3,9473 30,2048 3,9473 30,2048 - - RBFNetwork (4 clúster) 8,3019 53,5266 12,5726 96,2061 9,5070 72,7480 REPTree 3,9144 29,9530 3,5401 27,0890 2,0387 15,6001 DecissionTable 4,4040 33,6998 4,3203 33,0591 4,1143 31,4828 Con todos los atributos Temperatura, PtoRocío, Humedad, VelViento y Temperatura, Humedad, DirViento, VelViento y Método: LinearRegression RBFNetwork (4 clúster) REPTree 1,3901 10,6374 3,2061 24,5331 2,5730 19,6888 DecissionTable 2,5048 19,1670 Observamos como una vez más el REPTree con poda es el que nos ofrece mejores resultados. En cuanto a parámetros, considerando todos es el mejor, y en este caso no nos ha exigido un muy alto coste computacional. Sin considerar todos, los mejores resultados los hemos obtenido considerando temperatura, punto de rocío, humedad, presión, dirección del viento, velocidad del viento y condiciones. -7-
3.3. CONDICIONES A 24 HORAS En este caso se trata de estimar un atributo no numérico. El procedimiento es similar al seguido en las anteriores predicciones, eliminando las instancias carentes de datos y añadiendo la columna pertinente. A la vista de los primeros resultados obtenidos y analizando el atributo a predecir, vemos que hay condiciones muy similares y poco repetidas que podemos agrupar, como por ejemplo [Bancos_de_Bruma, Bruma _Ligera, Bruma_Leve, Bruma, Bruma_Helada_Leve] => Bruma. Así reducimos de 37 a 11 los grupos de condiciones: Despejado, Lluvia, Nubes_dispersas, Tormenta, Granizo, Polvo, Nublado, Niebla, Desconocido, Bruma, Nieve. Así el error que introducimos no es mucho, al estar considerando como la misma condición resultados prácticamente similares; y facilitamos las cosas a la hora de clasificar, pues no consideramos condiciones excesivamente particulares que complicarían los algoritmos. Como en apartados anteriores, vamos probando con diversos atributos, primero según nos indica Weka y luego bajo nuestro criterio los que consideramos oportuno, utilizando ahora también (al tener que predecir un atributo nominal) las gráficas que nos muestran las relaciones entre atributos. Así vemos, por ejemplo, que los efectos del año y del día son prácticamente irrelevantes; y también lo que ya habíamos observado preprocesando, que la temperatura y el punto de rocío tienen una alta correlación. Visto esto, eliminamos también esta última. La tabla con los resultados se muestra a continuación. Mes, Hora, Temperatura, Humedad, Presión, Visibilidad, VelViento, Año, Presión y (WEKA) Mes, Hora, Temperatura, Humedad, Presión, Visibilidad, DirViento, VelViento, Mes, Temperatura, Humedad y Presión y Método: Mal clasificadas [%] Mal clasificadas [%] Mal clasificadas [%] Mal clasificadas [%] J48 10,4634 44,4870 11,0865 20,4687 REPTree 11,6042 44,4808 12,3854 20,5152 DecissionTable 17,9569 45,3728-30,1780 Los mejores resultados los obtenemos para el árbol J48, y con una combinación de atributos que comprobamos que afectaban observando las gráficas, y que además tienen a nuestro parecer bastante sentido. -8-
4. CONCLUSIONES Tras muchos modelos analizados con WEKA, los más eficientes en cuanto a tiempo de procesamiento y resultados para este tipo de predicciones son los tipo árbol. También obtuvimos resultados satisfactorios usando regresión lineal para la primera de las predicciones; mientras que el algoritmo neuronal empleado (RBF) no nos ha llegado a dar buenos resultados como tampoco la tabla de decisión. En cuanto al número de parámetros a estimar lo mejor es coger todos, pero exige mucha carga computacional. Filtrando con el SelectAtributes de Weka (que en general no funciona bien en estos casos) y viendo las gráficas de parámetros enfrentados se pueden quitar algunos atributos sin aumentar mucho el error. También hemos podido observar cómo según la predicción que estemos haciendo, importan más unos u otros atributos. Lo más trabajoso y complicado ha resultado ser el tratamiento de un fichero de datos tan sumamente grande. -9-