Usos inverosímiles del Open Data: dónde aterrizar con tu paracaídas

Tuesday, 25 April 2017

Usos inverosímiles del Open Data: dónde aterrizar con tu paracaídas


Escrito por Antonio Sanchez Chinchón, Data Scientist en Telefónica España y fundador de Fronkonstin, un blog de experimentos, matemáticas y ciencia de datos en R.

No es ningún secreto que Internet guarda datos muy interesantes esperando a ser analizados y desbloquear así toda las posibilidades infinitas de información que llevan dentro. Sin embargo, aún no hemos conseguido que la explotación de estos datos se haga “mainstream”, en otras palabras, hay mucha gente que todavía desconoce las posibilidades de los datos abiertos

En este post analizaremos qué encontraría a su alrededor un paracaidista que aterrizara en un punto cualquiera de ciertos países. Aunque no lo necesites para tu día a día, este experimento te valdrá para conocer la riqueza de los datos de Google Places y saber si te pueden ayudar en tus propios proyectos.

Puntos de aterrizaje con el paracaídas
Figura 1: ¿Donde es el mejor lugar para realizar un aterrizaje de paracaidismo en función de los lugares que rodean al punto de aterrizaje?

Sacar los datos


La primera incógnita que te debes de estar preguntado es ¿de dónde sacas los datos? Lo cierto es que existen multitud de sitios web de dónde puedes obtener datos de todo tipo. Además, muchos de estos sitios web te lo ponen aún más fácil para que descargues paquetes de datos, pues disponen de las famosas APIs. Éstas facilitan mucho el trabajo de programación ya que te permiten utilizar funciones ya predefinidas y no tengas que empezar a escribir códigos desde cero. Ya no tienes excusa si quieres utilizar sus datos para algo. Algunos de mis sitios favoritos donde encontrar datos interesantes son los siguientes:

  • Enigma, un sitio alucinante que contiene más de 100.000 datasets acerca de gobiernos, empresas, universidades y organizaciones de diversos tipos. Puedes encontrar desde el registro de visitantes a la Casa Blanca hasta datos diarios de la temperatura registrada en las estaciones meteorológicas de todo el planeta durante los últimos 10 años o la ubicación de todas las cárceles de Estados Unidos.
  • Twitter, para analizar de qué habla un tuitero en particular, qué opina gente de algún tema, o de qué se habla en algún sitio concreto del mundo. Si quieres entrenarte con algoritmos de text mining, éste es tu sitio. Yo lo he usado para este caso de uso., 
  • Genderize permite determinar el género (masculino o femenino) de un nombre propio. Actualmente su base de datos contiene más de 215.000 nombres de 79 países y 89 idiomas distintos. Su versión gratuita permite hasta 1.000 consultas al día y el resultado de la búsqueda viene acompañado de medidas de certeza muy útiles. El siguiente ejemplo te puede ayudar a comprender para qué nos sirve esta información. 
  • UN Data reúne datos de 35 organismos dependientes de Naciones Unidas y está mantenido por el Departamento de Asuntos Económicos y Sociales de la propia Organización. Es una web perfecta para conocer un poco mejor el mundo en que vivimos.
  • Wikipedia comparte estadísticas sobre el número de visitas a sus páginas. Con esos datos se puede medir el efecto colateral que tiene algún hecho relevante sobre la notoriedad de sus protagonistas. Por ejemplo, ¿tuvo impacto la aprobación de la Ley Turing en el número de visitas a la página de wikipedia de Alan Turing? La respuesta, aquí.
  • Google, sobre el que hablaré en detalle a continuación.

Estas APIs casi siempre tienen un límite de uso, bien en el número de consultas o en el volumen de datos que puedes descargar durante un periodo de tiempo. Por ejemplo, Google no te deja geolocalizar más de 2.500 direcciones al día en la opción gratuita. Por supuesto, siempre existe la opción de pago para aumentar el límite. A veces, incluso existen paquetes específicos para R o Python, que hacen más fácil la consulta y el trabajo posterior con los datos. Es el caso por ejemplo de Enigma, Twitter o Genderize.

Además, Google pone a tu disposición mucha información interesante, como las tendencias de búsquedas a través de su buscador, la posibilidad de geolocalizar una dirección o la de saber qué hay alrededor de unas coordenadas cualesquiera de la tierra. Para consultar esto último pone a nuestra disposición el API de Google Places. Esta es la que vamos a utilizar para jugar a ser paracaidistas.

Nuestro experimento de paracaidismo


Imagina que te lanzas sobre un país cualquiera de la tierra: ¿qué probabilidad hay de que encuentres un bar a menos de 10 kilómetros de distancia de tu punto de aterrizaje? ¿Y un gimnasio? Con Google Places es muy fácil de calcular. Sin embargo, antes de ponernos manos a la obra, hay que tener a contar con una serie de premisas:

  • He elegido seis países: Brasil, Alemania, España, Gran Bretaña, Perú y Estados Unidos.
  • Fijaremos el radio de búsqueda a 10 km por ser un equilibrio razonable entre distancia que puede recorrer un paracaidista y número de aterrizajes a simular, que serán 1.100 para cada país.
Los lugares de alrededor se clasifican en seis categorías:

  • Salud y belleza: salón de belleza, dentista, doctor, gimnasio, peluquería, salud, hospital, farmacia, fisioterapia y spa.
  • Comida y bebida: panadería, bar, cafetería, tienda de conveniencia, alimentación, tienda de comestibles o supermercado, licorería, reparto de comida, comida para llevar, club nocturno y restaurante.
  • Cultura y educación: acuario, galería de arte, librería, biblioteca, museo, escuela, universidad y zoo.
  • Transporte: aeropuerto, estación de autobuses, venta de coches, alquiler de coches, gasolinera, estación de metro, parada de taxis y estación de tren.
  • Alojamiento: sólo contiene el tipo del mismo nombre.
  • Establecimiento: al igual que el anterior sólo contiene el tipo homónimo.

Para generar coordenadas aleatorias de un país he utilizado el paquete rworldmap de R, que contiene datos espaciales de las fronteras de los países del mundo de Natural Earth, otro sitio web con datos abiertos muy útiles, esta vez cartográficos. Después de generar una coordenada (o lo que es lo mismo, simular un aterrizaje), hago una llamada al API de Google Places para ver qué hay en un radio de 10 kilómetros alrededor.

Los resultados


¿Qué probabilidad hay de encontrar algún lugar a 10 km en un aterrizaje azar? El siguiente gráfico lo muestra:

Gráfico de probabilidad

Si nuestro paracaidista aterrizara en España, Alemania o Gran Bretaña, siempre encuentra algún sitio alrededor. Uno de cada cuatro aterrizajes en EEUU serían en áreas sin ningún lugar registrado en Google Places. Este número sube aproximadamente a dos de cada cuatro aterrizajes en el caso de Brasil y Perú. Es fácil suponer que esto depende en gran medida de la densidad de población en el país, y así parece pero con una excepción a la norma: España. Su densidad es notablemente inferior a la de Alemania y Gran Bretaña pero nuestro paracaidista siempre encuentra lugares alrededor en los tres países. Una posible explicación es que España aprovecha bien su territorio y su población no se concentra excesivamente en grandes ciudades a expensas de las zonas rurales. Es interesante también el caso de Perú y Estados Unidos, con densidades de población similares pero con muy diferentes probabilidades de éxito en los aterrizajes.

Ahora que sabemos qué opciones tenemos de aterrizar en un sitio no desértico, ¿cuántos sitios encontraríamos alrededor? Este gráfico muestra el número de sitios alrededor de un aterrizaje exitoso (es decir, descartando los aterrizajes sin sitios alrededor):

Gráfico Google Places


Los resultados de Alemania son verdaderamente impresionantes, donde nuestro paracaidista encontraría cerca de 200 sitios alrededor de su punto de aterrizaje. En el otro extremo está Perú, donde sólo encontraría unos 20. Por otro lado, la densidad de población explica la diferencia de sitios entre Gran Bretaña y España. Es también interesante ver el tipo de sitios que encontraríamos en un aterrizaje exitoso como muestra el siguiente gráfico:

Gráfico por categoría y lugar

Es muy interesante el caso de Perú, donde los pocos sitios que encontraría nuestro paracaidista estarían la mayoría categorizados como establishment, un tipo genérico que Google utiliza hasta que reúne datos suficientes del sitio para saber de qué tipo de lugar es.

Por el contrario, en Alemania encontraríamos siempre de todo. Si aterrizamos con hambre, habrá un restaurante cerca. Si aterrizamos con sueño, habrá un hotel. España y Gran Bretaña también son buenos lugares donde aterrizar. Comparando ambos países, en España nuestro paracaidista quizás tendría alguna dificultad más para encontrar un sitio de la categoría transportes que en Gran Bretaña. Brasil y Estados Unidos presentan similitudes aunque nuestro paracaidista tendría más fácil encontrar hotel y transporte en éste último.

Conclusion


Internet ofrece infinitas posibilidades al usuario y programar te da las herramientas necesarias para dar rienda suelta a tu imaginación: jugar a ser paracaidista por el mundo y ver qué hay alrededor es sólo cuestión de un poco de entrenamiento (en mi caso, con R), de curiosidad, y de un poco de paciencia. No hace mucho hacer algo así sería prácticamente imposible pero cada vez tenemos más información al alcance de nuestra mano. Por ejemplo, hará un tiempo utilicé Google Places para crear esta aplicación que ayuda a encontrar un lugar para quedar a tomar algo con alguien. Como ya hemos dicho, las posibilidades son infinitas. Los datos abiertos nos ayudan a conocer mucho más nuestro mundo y con ello estoy seguro de que nos permitirá mejorarlo con el tiempo.

1 comment:

  1. Un artículo muy ameno, que mezcla a la perfección creatividad, datos y formación. ¡Enhorabuena, Antonio!

    ReplyDelete