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 Argentina, Ciudad de Buenos Aires, Chile, Colombia, México, Perú, 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:
No hay comentarios.:
Publicar un comentario