En busca de la recomendación perfecta: Almundo Recommendation Challenge 2018

Almundo blog
Nerds Almundo
Published in
4 min readSep 3, 2018

Por Agustín Montero, Data Scientist en ALMUNDO

“Un viaje típico en Almundo muchas veces comienza con una buena recomendación” Con esta frase abríamos el Almundo Recommendation Challenge 2018, un desafío que organizamos desde Almundo para la comunidad técnica de Argentina.

¿Por qué una buena recomendación?

Hoy en día, los sistemas de recomendación están muy presentes en la vida de las personas. Desde Netflix, sugiriendo que veamos alguna serie o película en particular; Spotify, mostrándonos canciones o bandas que seguro nos interesan escuchar; o Amazon, proponiendo que compremos determinado libro dando por sentado que será perfecto para nosotros.

A través de la recomendación online (en tiempo real) u offline (facilitando la construcción de campañas dirigidas a segmentos particulares, por ejemplo), los sistemas de recomendación se han transformado en un commodity más que todos desean tener.

En Almundo trabajamos para construir sistemas de recomendación que nos ayuden a descubrir qué destinos le interesa a cada uno de nuestros viajeros.

La recomendación en Almundo

Desde el equipo de Personalización, conformado por Luis Brassara, German Guzelj y yo, estudiamos día a día este y otro tipo de problemas relacionados con Data Science y Machine Learning, y desarrollamos soluciones con el fin de personalizar la experiencia de cada viajero.

Actualmente estamos trabajando en diferentes proyectos que involucran la personalización a través de recomendaciones online y offline, campañas inteligentes de segmentación de usuarios, modelos de ranking bayesianos, learning to rank y otros más que están aún en etapa de evaluación.

Todas estas soluciones basadas en algoritmos de aprendizaje automático dependen de la calidad de los datos. Es por esto que en el equipo también trabajamos mucho para asegurarnos de tener una excelente arquitectura que nos permita tener datos de mucha calidad, manteniendo siempre una alta disponibilidad de los mismos.

Sobre el desafío

Este año estuvimos presentes nuevamente en la Escuela de Ciencias Informáticas (ECI)[1] del Departamento de Computación de la UBA. En el contexto de este evento, que se organizó desde fines de julio a principios de agosto, decidimos organizar una charla sobre sistemas de recomendación[2] y un desafío para la comunidad técnica. Nos pareció interesante que estuviera relacionado con Data Science y Machine Learning, en particular sistemas de recomendación.

Quisimos armar una versión simple del problema, con datos que resultaran de interés, donde hubiera lugar para probar diferentes algoritmos, además de que resultase un ejercicio desafiante.

La versión final del problema planteaba lo siguiente: dada una lista de viajeros (con edad, género y país de origen), y los destinos que buscaron (por ejemplo, Miami, Nueva York y Cancún), se debía construir una lista de destinos para recomendar a cada uno de ellos.

Los participantes contaban con una lista de casi 400.000 viajeros para entrenar sus algoritmos, y debían enviar recomendaciones para una lista de más de 150.000. Además, podían acceder a un catálogo con los destinos válidos para recomendar, con información particular de cada destino. Incluso podían incorporar datos extra que sean de ayuda para desarrollar soluciones, siempre y cuando sean datos públicos.

El objetivo era claro y preciso: había distintas métricas que otorgaban puntos según la calidad de las recomendaciones; quien sumara más puntos al final de la competencia, se llevaría de premio un viaje a Madrid para dos personas.

Es importante decir que, antes de publicar los datos, quitamos algunas búsquedas de cada viajero y las guardamos en privado sin que los competidores pudieran acceder a ellas. De esta manera, cuando los participantes enviaban las listas de recomendaciones para viajeros, podíamos comparar contra las búsquedas que quitamos, de manera de comprobar si había coincidencia, entre otras cosas.

Era posible enviar hasta tres listas con recomendaciones por día durante una semana. Se podía utilizar cualquier lenguaje de programación, y cualquiera de los métodos conocidos de recomendación basados en Collaborative Filtering o Content-based Filtering[3]. Incluso versiones híbridas de estos, así como también ideas innovadoras o ad-hoc para resolver el problema, eran bienvenidas.

Luis Brassara dando la charla del Challenge en la ECI 2018, Escuela de Ciencias Informáticas (UBA)

La solución ganadora

En total hubo casi 450 inscriptos y los competidores hasta último momento pelearon por el podio. El ganador fue Rodolfo Edelmann. Pueden acceder al código de la solución que él mismo compartió acá. ¡Felicitaciones una vez más, estimado Rodolfo!

Creemos que estos eventos son muy importantes, en particular dentro de la comunidad técnica, para fomentar el trabajo de disciplinas relacionadas con la ciencia de datos en el país. Además, generan mucha visibilidad sobre el tipo de trabajo que hacemos en Almundo para personalizar las búsquedas de los usuarios.

Estamos muy contentos por la repercusión que tuvo el desafío, que incluso tuvimos que reabrir en modo playground para que algunos competidores pudieran seguir probando soluciones. (Ya sin el premio de los pasajes a Madrid, claro).

Agradecemos a todos por el tiempo y las ganas que pusieron durante el desafío. Creemos sin dudas que esta es una de las mejores maneras de aprender.

Ya estamos pensando ideas para el desafío del año próximo.

— — — -

[1] https://www.dc.uba.ar/events/eci/2018

[2] https://es.slideshare.net/LuisBrassara/evaluacion-de-sistemas-de-recomendacion

[3] https://en.wikipedia.org/wiki/Recommender_system#Approaches

--

--

Almundo blog
Nerds Almundo

Primera Comunidad Global de Expertos en Viajes. ¡Comparte tu “Small Data”: los pequeños detalles que hacen grande tu viaje con #AlmundoCommunity!