OsuGalaxy: Rhythm Game Beatmap Recommender using Machine Learning
Daniel Rachfal, BSc. Computer Science, Department of Computer and Information SciencesProject Aims
• To investigate the suitability and use recommender systems in new domains
• Develop a web application to help osu! players find new rhythm game levels - beatmaps
Research
● Investigated various recommender system methodologies including collaborative filtering and content-based filtering
● Found their key features, advantages and disadvantages to establish Collaborative Filtering as a suitable method for producing tailored recommendations
● Researched implicit datasets, challenges with their implicit noisiness and how to derive preferences from user-item interactions.
Dataset
● The dataset used for testing and training the models consisted of 10’000 osu! players and their play history. The data used was the number of times they played each beatmap, no personal data was used.
● The dataset was provided by Dean Herbert, the lead developer of osu!
● Players included in the dataset were random and the dataset was processed to remove users who weren’t likely to provide insight into the data. This resulted in the final sparsity of the dataset of 99.62%.
● BM25 algorithm was used for pre-processing to reduce bias towards popularity, it was later dropped to improve interpretability of the model confidence
Algorithms
Using a Python library “Implicit”, Alternative Least Squares, Bayesian Personalized Ranking and Logistic Matrix Factorization algorithms were implemented and evaluated using Leave K Out Split with following results:
Web Application
● Using a PHP framework, Laravel, along with JavaScript, a Web Application was produced to allow a user to input their osu! profile and be provided with recommendations.
● The application gives the user an overview of the beatmaps one by one as well as a link to the appropriate official osu! website to try them out.
● The frontend is produced in Bootstrap, resulting in a responsive interface that works well on mobile.
● For retrieving user and beatmap data, an API wrapper was created to communicate with the osu! API.
The Result
A web application that can provide osu! players with personalised recommendations of beatmaps that they haven’t played before, aware of their skill level and music preferences!
Future Work
• Scalability and performance that can handle hundreds or thousands of users
• History and favourites system
Recommender System
A Python recommender system using ALS was implemented, capable of recommending beatmaps directly from a MySQL database or JSON data.
The recommender uses the argparse library to be callable and customised from the console – the number of recommendations and user can be changed to retrieve recommendations. This is where the recommender can also accept JSON data.
• Caching and pre-processing of recommendations to improve responsiveness
• Content-based recommendations as a separate feature of the website to allow users to find more beatmaps based on genre or artist
• Larger dataset to improve recommendation quality
Bibliography
• Hu, Y., Koren, Y. and Volinsky, C. (2008). Collaborative Filtering for Implicit Feedback Datasets. 2008 Eighth IEEE International Conference on Data Mining. doi:https://doi.org/10.1109/icdm.2008.22.