forum

Combine: a personalized beatmap recommendation system

posted
Total Posts
7
Topic Starter
JoeJev
I am pleased to announce the first version of Combine: a personalized beatmap recommendation system.

Combine trains a unique model for each user by analyzing their replays to make personalized recommendations. This is different from Tillerino which does clustering on the user's top 10 PP scores and does not look at beatmap data at all.

For full usage instructions, see: https://github.com/llllllllll/combine.

In order to make suggestions, users will need to upload their replays to http://combine.jevnik.moe. This works by training a neural network regressor to predict the user's accuracy given a beatmap. I suggest using around 182 training days (6 months). Most players' performance is not stationary so only the last 6 months of replays are relevant for predicting current performance. Feel free to play with this to see if you get better or worse predictions. You don't need to do that date filtering on your end, just fill in the training days field and I will filter on the server.

This website looks absolutely terrible, I know nothing about frontend development. Please PM me if you are interested in helping with the frontend or any part of this project.

To build this, I wrote a Python library for manipulating osu! files and working with the osu! API available under the LGPLv3: https://github.com/llllllllll/slider. This library includes the implementation of the model itself.

Currently I am hosting this on my personal AWS account on an m3.medium, this machine is not that powerful, please don't spam me.
Full Tablet
When uploading .osr files, does the trainer automatically reject replays from other game modes? (Identifying which .osr files belong to which game mode before uploading might take a while)
Topic Starter
JoeJev
I had forgotten about that, I just pushed a change to do that filtering. Thanks!
Topic Starter
JoeJev
I just realized the beatmap fetcher isn't working so it only knows about the beatmaps I have played. I will get this fixed tonight after work.

EDIT: I believe I have corrected the issue, training may now begin!
Full Tablet
It gives an error when submitting any file
Topic Starter
JoeJev
Looks like the internal beatmap cache was corrupted, some invalid filenames existed probably from moving the data to the ebs volume. I rebuilt the cache and tested with a fake user and training seems to work. I also now return the error message if it crashes to make debugging easier. Thanks for trying this out!

I saw there was an error on the irc bot, I hadn't restarted it to upate the code but it should be ready now.
Topic Starter
JoeJev
Update:

Combine now only suggests songs where it predicts a PP higher than your weighted average PP instead of unweighted average PP. This means that the suggestions will be songs that will actually improve your rank by more than 1 or 2 ranks if cleared.

Combine now supports the `/np` command. This will return the song, your predicted accuracy and PP, along with the PP achieved for a no-miss play of 95-100%.

Combine is now running on my private server instead of AWS. This means that Combine now has much more powerful hardware to hopefully make predictions and train faster. Running on my private server also means I am no paying a largeish AWS bill every month.

For interested developers: The combine deploy process has been ported to fabric. You can run your own local version of combine with `fab setup_system --host <host> --user <user> && fab update --host <host> --user <user>`. The host must be an Ubuntu 16.04 LTS server, the `user` should not be root. A few config-file templates will need to be filled in with your osu! credentials and some monitoring script alerting preferences but other than that it should be very turn-key.
Please sign in to reply.

New reply