This project contains implementations of a collaborative filter and a multi-armed bandit.
- learners/cf.py: This code implements a collaborative filter for a location-based recommendation system as described in "Location-based and Preference-aware Recommendation using Sparse Geo-Social Networking Data".
- learners/container_mab.py and temporal_mab.py: This code implements a UCB1 Multi-Armed Bandit. The class is a collection of bandits which optimizes for the container they represent (in this case, hour of day).
- simulate1.py: runs a simulation using only the collaborative filter.
- simulate2.py: runs a simulation using the collaborative filter and multi-armed bandit in parallel.
- categories_hierarchy.py: create an in-memory representation of the Foursquare venues categories hierarchy.
- data/categories_hierarchy.json: json of categories hierarchy obtained from Foursquare's API.
The code is implemented in Python.
Data to run the simulations should be obtained from Dingqi Yang.
My findings are summarized in this paper. I used the New York and Tokyo dataset.