Mientras en los últimos años la data de ubicaciones de usuarios crece con la expansión y mayor disponibilidad de tecnología que incluye dispositivos de geolocalización (como nuestros smartphones) se valora cada vez más los servicios basados en geolocalización (fuente).
Mientras las posibilidades de este, relativamente nuevo, tipo de información son amplias en el campo del transporte (desde predicción de tráfico hasta la planificación urbana) este año se han puesto en marcha diversas iniciativas para recomendación de lugares:
Un paper interesante al respecto de cómo lograrlo y hasta recomendar amigos basados en patrones similares de lugares(o tipos de lugares) visitados es el siguiente: https://dl.acm.org/citation.cfm?id=1921596
Un modelo de filtrado colaborativo es el que usa google para las recomendaciones de videos de youtube, basándose en data de duación vista, duración total, antiguedad y otras.
Su algoritmo empezó a utilizar deep neural networks desde que adquirió deepmind en 2016 (la compañía que construyó el software que venció a campeones mundiales de GO).
El algoritmo consta de 2 fases:
1. Usando filtrado colaborativo basándose en features simples como la cantidad de vistas y datos demográficos filtra de entre toda su base de daots dando como output una lista de cientos de videos.
2. De la lista anterior. Usando muchas más features como tema, canal y duración vista optimiza la cantidad de tiempo visto del video y obtiene alrededor de una docena de videos a ser recomendados.
Otra técnica para construir sistemas de recomendación es content-based. Un ejemplo es:
Sistema de recomendación de películas.
Input:
- Ratings de cada usuario a cada actor(o simplemente lista de actores favoritos, los cuales tendrán el rating 1 y los demás rating 0).
- Lista de actores por cada película.
Usando similaridad por coseno centrado se calcula la similaridad entre una pelicula Y y un usuario X comparando sus vectores de ratings de actores.
Para este tipo de técnicas se extraen previamente features de los items (en el caso anterior actores de las películas).
Ventajas de esta técnica: - No se necesita un historial o rating previo de películas vistas de los usuarios. (ratings previos de items)
- Las recomendaciones hechas suelen caber bien para gustos únicos. Desventajas: - Encontrar la feature apropiada puede ser difícil.
Otra técnica es el filtrado colaborativo, donde el input es: ratings de usuarios a películas (o historial de películas vistas), usando similaridad por coseno centralizado se predice el rating de un usuario X a una película Y en base a los K vecinos (usuarios) más similares a X y cómo éstos calificaron a esa película Y.
CartoDB
Por otro lado, dado que el tema se centra en recomendación de lugares, estuve explorando el software cartodb que permite aplicar clusters (con K-means) entre otros algoritmos. Para ver la configuración que me funcionó en el despliegue sobre un ubuntu 16.04: https://github.com/j05u3/docker-cartodb