Descripción del Problema

Chile es un pais conocido por la alta frecuencia y magnitud de sus eventos sísmicos; a la vez, para un país como el nuestro es importante pensar en soluciones para la efectiva y rapida detección de eventos sísmicos.

Hoy podemos ver como redes sociales como Twitter pueden aportar con información en tiempo real de diversos temas, en particular al ocurrir un evento sismologico es un hecho que la tasa de Tweets con palabras claves como 'sismo', 'temblor', 'terremoto', etc aumenta cirscunstancialmente. Lo que nos motiva a pensar una forma de aprovechar estos datos para la deteccion de eventos sismologicos.

Un problema es que directamente inspeccionando el flujo de Tweets con éstas palabras claves no es suficiente para determinar la ocurrencia de un evento real. Dado que es usual encontrar Tweets que si bien presentan estas palabras, no hablan de un Evento Sismologico en Tiempo Real. (Es usual encontrar Tweets hablando de eventos sismologicos pasados, musica, etc).

En el contexto de Twitter y los eventos sismcios, nuestro proyecto consiste en desarrollar un Clasificador que, dado un Tweet con palabras claves de sismos, sea capaz de identificarlo como una "Alerta en Tiempo Real" o no. Es decir, diferenciar un Tweet como una real alerta de un evento que acaba de ocurrir, de un tweet que puede estar hablando de un evento pasado, una canción o cualquier otra frase que incluya estas keywords.

Para entrenar el Clasificador ideamos una técnica para etiquetar tweets como Alerta en Tiempo Real usando Tweets relacionados a eventos pasados. Basandonos en las siguientes hipotesis:

  • Dado la fecha de comienzo de un evento sismologico, los Tweets con keywords publicados desde el comienzo del evento hasta un par de minutos después son Alertas en Tiempo Real.
  • Los Tweets con keywords publicados en fechas lejanas a cualquier evento sismologico ocurrido en el mundo no es Alerta en Tiempo Real.
Con ésta tecnica logramos etiquetar 4000 datos rapidamente.


Descripción de los Datos

Nos limitamos a las regiones de habla hispana, dado que trabajaremos con texto.

Poseemos:

  • Tweets Jun-Jul-Ago 2016: 3 Bases de datos de Tweets en español que poseen palabras claves o keywords de sismos como: 'sismo', 'temblor', etc...
  • Eventos sismicos 2016: Base de datos de eventos sismicos ocurridos en America del Sur, España y el mundo durante el 2016. Extraido de http://earthquake.usgs.gov/earthquakes/search/
    • Tweets

      Los Tweets son usados para entrenar el clasificador y para hacer las predicciones. Estan todos en Español y todos poseen keywords sismicas.

      Esquema

      Una vez desechados los atributos irrelevantes, el esquema conservado:
      • iduser
      • download_date
      • creation_date
      • retweets
      • is_rt
      • favorites
      • text

      Sismos

      Se utilizan para identificar la fecha y magnitud de eventos sismologicos, con el fin de etiquetar datos para entrenar el Clasificador.

      Esquema

      • time
      • magnitud
      • depth
      • place

Limpieza de los Datos

La mayor parte de los datos utilizados son validos en el sentido que poseen todos los atributos relevantes. La fase de limpieza de Tweets consistió en dejar los Tweets en Español, con palabras claves de sismos, descartando otros idiomas. Además se quitaron Stop-words y se llevaron todos los simbolos especiales a su version ASCII antes de aplicar TF-IDF sobre el texto.

Por otro lado para los datos sismicos, se consideraron los sismos de grado 6+ como suficientemente fuertes como para provocar una respuesta en Twitter. Aunque no se descartaron los simos mas debiles dado que se ocupan para el Etiquetado Automatico.

Exploración de los Datos

El problema fundamental de nuestro proyecto fue como conseguir datos etiquetados de calidad. Para probar nuestras hipotesis para etiquetar datos hicimos exploración de datos sobre Tweets emitidos justamente después de ocurrido un evento sismologico considerable.

De la exploración de diversos eventos sismicos se desprende que nuestra hipotesis de que Tweets emitidos justo despues de un evento son Alertas en Tiempo Real es en gran parte cierta y se cumple hasta aproximadamente 4 minutos después de ocurrido el evento.

Por otro lado, de inspeccionar Tweets lejanos a cualquier evento sismologico prueba nuestra otra hipotesis de que Tweets emitidos lejanos (En tiempo) de eventos sismicos mundiales No son Alerta en Tiempo Real. Dado que de la exploración se prueba que la mayor paarte de los Tweets, si bien poseen las keywords sismicas, hablan de otras cosas (Claramente no Alerta).

Esta exploración nos da la luz verde de proceder con nuestro método de Etiquetado Automatico, para posteriormente entrenar diversos clasificadores y evaluar su desempeño.

Resultados:

Clasificadores usados:



Support Vector Machine

Se comporta bien con las características de texto ya que son generalmente bag of words (por lo tanto de alta dimensión) y SVM tienen la ventaja de sufrir menos con la "curse-of-dimensionality".

Logistic Regression

Se comporta bien en text mining debido a la definición del modelo en sí, puede definir la salida de una función logística a medida de la similitud de las entradas, en donde la similitud en nuestro problema es el modelo tf-idf. También fue ocupado en un estudio de la emoción en los tweets.

Naive Bayes

También quisimos usar un clasificador probabilístico que se basa en el teorema de Bayes. Es una de las técnicas de clasificación de texto más básicas con diversas aplicaciones como en la detección de spam de correo electrónico, clasificación personal de correo electrónico, categorización de documentos, detección de contenido sexualmente explícito, detección de idioma y detección de sentimientos.

Stochastic Gradient Descent

Este clasificador fue el que dio mejores resultados en el proyecto del año pasado, quisimos comparar con los que habíamos trabajado.

Neural Networks

Breve explicacion

Las redes neuronales se han vuelto un tópico cada vez mas relevante en data mining y machine learning. La literatura se ha vuelto muy extensa, y prácticamente no hay campos donde las redes neuronales no muestren los mejores resultados en el estado del arte. Es por esto que surge la idea de trabajar con este modelo. Para comenzar y por la simplicidad de su implementación se opta por entrenar una red con una capa de input, una capa escondida y una capa de output. Este modelo es denominado Multi Layer Perceptron (MLP).

En cuanto a resultados:

Dado que estaba establecida la idea de trabajar con el modelo MLP, era preciso ahora escoger el número óptimo de neuronas en la capa de input y el número de neuronas en la capa oculta. Hay textos que señalan que una buena práctica es establecer al menos un número de neuronas en la capa de input como atributos hay en el data set, en nuestro caso, la transformación TF*IDF nos entregaba un data set con 5788 atributos (sin las stopwords este número era superior), por lo que dentro de las configuraciones de la red neuronal se deberí­an incluir al menos un par de casos con ese número de neuronas en la capa de input. Los resultados de las diferentes configuraciones se pueden ver en la tabla que se vera al final donde mostraremos los resultados globales de todos los clasificadores.

Resultados testing etiquitado a mano:


Quisimos comprobar como se comportaba nuestro clasificador con datos etiquetados a criterio de los integrantes del equipo y estos fueron los resultados:

metricas-tree-1

Resultados preliminares:


Finalmente, mostramos los resultados de los clasificadores que entrenamos con los datos obtenidos.

Resultados con Neural Networks

metricas-tree-1

Resultados con distintos clasificadores

metricas-sgd-1

Recomendaciones

  1. Es importante hacer un trabajo previo con el texto de los tweets, nosotros recomendamos el proceso TF*IDF.
  2. El problema de Clasificación de Tweets de Alerta podría solucionarse teniendo suficientes datos para entrenar.
  3. (Overfitting)
    La cantidad de datos con los que se entrenó puede haber sido deficiente (3000)
    La cantidad de datos a mano con los que se testeo puede haber sido muy baja (300)
  4. Hay técnicas que superan a las redes neuronales (Multi-layer Perceptron) en las métricas.
  5. Queda propuesto experimentar con redes neuronales (profundas) convolucionales, e incorporar más features del Tweet
  6. Queda propuesto tambien, entrenar el clasificador no solo usando el texto del tweet, si no otros atributos que puedan parecer relevante, como la cantidad de re-tweets por ejemplo.