Big Data en los tiempos del Coronavirus. Medición del impacto en las movilidades según dispositivos móviles.

Por Jguerra

Por Leo Lucianna (Especialista en Explotación de Datos y Descubrimiento del Conocimiento – UBA y Docente de la materia Data Mining).

De más está decir que los tiempos que estamos viviendo están muy alejados de lo común. Allá en la lejana época de apenas unos meses atrás, nadie imaginaría estar inmersos en un confinamiento masivo, ni temerosos de una curva maligna. Quizá esta no sea ni la primera ni última vez en la historia que se haya dado una alteración repentina semejante en nuestros hábitos. Pero lo interesante de esto, es que nunca se había dado en la reciente época del Big Data, es decir, nunca con este nivel de registro de datos. Y así los datos, como un espejo virtual de nuestra realidad, están registrando cambios sin precedentes.

Hace poco más de un año que formo parte del equipo de Data Science de Retargetly, y ahora que lo pienso digo ¡qué grande! Sí, grande por el gran equipo con quienes tengo la suerte de trabajar, y grande por la cantidad de datos a analizar, con más de 40 TB de data proveniente del comportamiento online de más de 200 millones de dispositivos diarios.

Naturalmente, estamos en un momento de muchos interrogantes, por eso en Retargetly nos hicimos muchas preguntas que se podían responder con datos. Por ejemplo, respecto a las movilidades urbanas: ¿cuál es el nivel de impacto del coronavirus?, ¿cómo se refleja a lo largo del tiempo?, ¿cómo responden las sociedades a la pandemia y a las medidas tomadas por los gobiernos?, ¿en qué regiones se registran mayores o menores efectos?, o ¿cuál es efecto en los distintos países y ciudades latinoamericanas?

¿Con qué datos contamos para responder estas preguntas? Con señales anonimizadas de GPS que surgen de las apps de los teléfonos celulares. Y además contamos con un cluster de Spark con 45 servidores para poder procesar toda la información. Habitualmente utilizamos estos datos para generar y modelar segmentos de marketing que ayuden a direccionar publicidades o comunicaciones hacia los dispositivos correctos. Otro uso es la generación de mapas de intereses por regiones geográficas basados en el comportamiento de navegación de dispositivos por zona, información muy relevante para las marcas a la hora de determinar la ubicación de nuevo local, o publicitar en la vía pública. Sin embargo, en este desafío contamos con una dimensión adicional a considerar: el movimiento de los dispositivos. Por eso ensayamos varios enfoques hasta dar con una metodología que se ajuste tanto al dominio como al volumen de datos.

Empecemos determinando cómo mensurar el movimiento de un único dispositivo según sus señales de GPS registradas a lo largo del tiempo, como se muestra en el ejemplo de la figura A. Un primer y natural enfoque sería medir el movimiento tomando la suma de distancias entre puntos cronológicamente consecutivos (figura B). Ahora, como los puntos están definidos por latitudes y longitudes, expresados en ángulos, el cálculo de distancias se vuelve un poco más complejo que tomar distancias euclidianas, ya que hay que tener en consideración la geometría de la tierra. Para esto se podría asumir un modelo de tierra esférico y aplicar la fórmula de haversine [1]. Si bien con este tratamiento lograríamos un alto nivel precisión, en relación al costo del procesamiento, implica un complejidad innecesaria para el dominio de aplicación. Asumiendo un mayor margen de error, se pueden simplificar los cálculos proyectando primero los puntos en un plano (proyección equirectangular), y luego sí calcular distancias euclidianas. Pero aún así, se vuelve muy costoso si lo llevamos a la escala de todas las señales de millones de dispositivos.

Un nuevo enfoque, que es el que finalmente usamos en este trabajo, es utilizar el algoritmo de discretización espacial Geohash. Geohash divide al mundo en grillas de casilleros identificados por códigos llamados Geohashes. La figura C muestra esquemáticamente el trazado de una grilla, de esta manera cada localización queda codificada según su Geoghash de pertenencia. En este esquema, la tarea de medir movimiento se limita a contar la cantidad de Geohashes distintos registrados por cada dispositivo. Ahora en el ejemplo mostrado en D, la trayectoria queda cuantificada en 9 Geohashes. Claro, no se está calculando exactamente la distancia recorrida, pero sí tenemos una medida que refleja la cantidad de movimiento de los usuarios. Además este algoritmo tiene otra ventaja: permite ajustar el tamaño de grilla según la cantidad de movimiento que nos interesa medir. Esto lo logra gracias a su estructura jerárquica de codificación, así un Geoghash pertenece a otro Geoghash más grande y así sucesivamente formando una gran matrioshka espacial planetaria. Un Geohash es un código de hasta 12 caracteres con un alfabeto de 32 símbolos [2]. Si se utilizan los 12 caracteres se consigue una granularidad de grilla de 37.2mm × 18.6mm, en el otro extremo con un único caracter, cada Geohash cubre hasta 25 millones de km². En este proyecto utilizamos 7 caracteres, teniendo una discretización de 153m × 153m, lo cual se ajusta muy bien a nuestro propósito de medir movilidades, es decir, sólo tenemos en cuenta desplazamientos a nivel de cuadras, descartando todos los movimientos menores que se puede dar incluso dentro de un domicilio, al mismo tiempo de eliminar pequeñas variaciones producidas por ruido en la señales de GPS.

Utilizar Geohash fue un antes y un después, este tipo de herramientas son las que se necesitan para resolver un problema de Big Data. Por un lado reduce considerablemente los tiempos y recursos necesarios para el procesamiento, y al mismo tiempo, la simplificación nos aporta un mayor potencial de análisis. Así que con esta codificación, generamos series temporales del movimiento medio de los dispositivos, agrupándolos por divisiones territoriales según los Geohashes que cubran estas regiones.

Hasta este punto la cosa se pone más fácil, descargamos las series en una máquina local y continuamos el análisis en Python. ¡Y ahora sí! graficando las mediciones vemos una marcada caída del movimiento en todos los lugares analizados. En Argentina la caída se detecta después del 13 de marzo, una semana antes de la cuarentena obligatoria. Para ese entonces la curva de contagios empezaba a superar los 10 casos diarios, y empezamos a adoptar los primeras medidas de reducción de movilidad. En mi caso, como muchos otros, en esa semana dejé de ir a la oficina y de hacer ejercicios al aire libre, también se anunciaba la postergación de los inicios de las clases, y comenzaban las extrañas largas colas para comprar alimentos.

Perfecto, estamos entusiasmados con las series temporales de Geoghashes, es clara la caída de movimiento, pero el problema es que ahora las curvas quedan expresadas en unidades difíciles de interpretar. Sí, podríamos aproximar la idea de tomar cuadras recorridas, aunque sabemos que no es exactamente eso. Entonces, para mejorar la interpretación utilizamos una escala relativa, tomando como referencia al movimiento medio en las semanas previas al descenso de movilidad. Así podemos estar diciendo, basado en el comportamiento de los dispositivos celulares, que en Argentina llegamos a reducir los niveles de movilidad en más del 75% desde que se instaló la amenaza del virus.

Todo este estudio está publicado de forma abierta y actualizada en formato de visualizaciones con mapas interactivos desagregados en distintos niveles de divisiones territoriales. Actualmente se cuenta con tableros para ArgentinaCiudad de Buenos AiresChileColombiaMéxicoPerú, y Uruguay. Conocemos muchas historias de empresas, organizaciones, universidades y gobiernos que utilizan estos mapas para el estudio y toma decisiones. En el último tiempo, con el inicio del descongelamiento en la movilidad, surgen nuevas preguntas que van desde el estudio de movimiento por grupos etarios o clases sociales, a la optimización en la distribución de combustible en estaciones de servicios. Así que regresando al punto de partida, volvemos a más preguntas y desafíos para responder con ciencia de datos.

[1] Calculate distance and bearing between two Latitude/Longitude points using haversine formula in JavaScript. Movable Type Ltd. https://www.movable-type.co.uk/scripts/latlong.html

[2] Geohash encoding/decoding. Movable Type Ltd. https://www.movable-type.co.uk/scripts/geohash.html

Fuente: