Como ya sabéis, Agilia está desarrollando un servicio de Car Sharing para mejorar la calidad de vida en las ciudades pero, además, Agilia tiene experiencia en el desarrollo de proyectos de inteligencia artificial y ha aprovechado para construir un modelo que sea capaz de predecir donde usuarios y compañías deben aparcar sus vehículos para obtenerles el mejor rendimiento. A continuación, explicamos cómo se ha realizado todo el proyecto de inteligencia artificial.

Un proyecto de data science siempre debe constar, al menos, de siete pasos si quieres finalizarlo con éxito: marcar un objetivo, obtener los datos, prepararlos, visualizarlos, desarrollar el proyecto de machine/deep learning, evaluarlo y, finalmente, iterar una y otra vez.

Estableciendo el objetivo de un proyecto de inteligencia artificial

El primer paso lo tenemos: en el negocio del car sharing, la administración de la flota es uno de los pilares para obtener beneficios, por tanto, nosotros queremos saber dónde aparcar nuestros coches para que sean alquilados lo antes posible. De esta manera, la pregunta que queremos responder es “¿Dónde se alquilan más coches?” Ese es nuestro primer paso, nuestro objetivo.

Después, tenemos que obtener los datos. Nuestro proyecto de car sharing se encuentra en un entorno simulado ahora mismo, con datos simulados. Estos son lo más reales posibles pero, aún así, no son válidos para hacer predicciones. Para resolver este problema, hemos buscado datos reales de grandes compañias del negocio de la movilidad como Uber o Cabify. En Kaggle, encontramos datos de Uber del año 2014, tienen un tiempo, pero nos pueden valer. Sin embargo, nosotros querríamos añadir datos de una ciudad Europea. Después de mucho buscar, encontramos datos de recogidas de una compañía de taxis en Porto. ¡Genial! nosotros conocemos Porto y, además, uno de nuestros compañeros en ARTICONF tiene su sede allí. Por fin, tenemos datos suficientes, un año y medio de datos reales para entrenar nuestros algoritmos.

Luchando con los datos

Los siguientes dos pasos están muy unidos y saltaremos entre ellos durante su ejecución. Primero, preparamos los datos. Hay dos features que son importantes para nosotros: tiempo y geolocalización. Pensamos que las recogidas de car sharing dependerán de la hora del día y del día de la semana. No es lo mismo un día entresemana a las 5:00 p.m, cuando la gente sale de la oficina, que un Sábado, cuando se van al centro. Por tanto, tenemos que pelearnos un poco con los datos y Python para crear un nuevo set de datos con las propiedades modificadas. Al final, tenemos varias features para entrenar nuestros algoritmos: la semana del año, el día de la semana, la hora y la latitud y la longitud donde el taxi recogió a los pasajeros.

Durante todo este proceso, mostramos y estudiamos algunas gráficas que confirmaban nuestras sospechas: hay zonas con más actividad y horas con más movimientos.

Mapa de calor de Porto
Mapa de calor de recogidas en Porto

Desarrollando el algoritmo de machine/deep learning

Finalmente, tenemos que entrenar nuestros algoritmos y evaluarlos. No entraremos en detalles porque este post ya es demasiado largo pero nos gustaría explicar que hemos desarrollado nuestro algoritmo de machine learning con Python, usando librerías como pandas o numpy para gestionar los datos, sklearn para usar algoritmos de machine learning y la librería geohash para etiquetar las diferentes zonas.

Además, hemos entrenado y desplegado un algoritmo de deep learning usando las librerías de tensorflow y keras. Este algoritmo de deep learning tiene distintas capas en su red neuronal con diferentes funciones de activación. Entrenando los dos algoritmos con el 80% de los datos (el 20% se reserva para los test), hemos obtenido resultas mejorables pero bastante buenos que hemos comprobado usando las métricas correspondientes: medias, coeficiente r2 cuadrado… Durante todo el proceso, hemos vuelto sobre los otros pasos, obteniendo, preparando, visualizando y añadiendo más datos relevantes (como los datos del tiempo en Porto para las fechas seleccionadas) y hemos modificado y evaluado los algoritmos para afinarlos y mejorarlos.

Media de los errores cuadrados
Media de los errores cuadrados en una de las pruebas

Resumiendo

En conclusión, hacer un algoritmo de inteligencia artificial no es tarea fácil. Necesitas sumergirte en conceptos complejos de deep learning, redes neuronales, machine learning… pero, lo que es más importante, necesitas obtener buenos datos, prepararlos, jugar con ello hasta tener un total entendimiento de los mismos y entonces, solo entonces, empezar a desarrollar el algoritmo para facilitar tus tareas o maximizar los beneficios de tu compañía.