Objective: Provide recommendations for new games that are similar to a game that the user liked��
User will enter game name in a text search and will be returned with a list of games in order of "similarity" score
3 of 7
User Perspective
User searches for game by name
Query on MongoDB of games
Game ID returned to Redis
Redis contains sorted sets of Game IDs for each game
Sort weight is the "similarity" value
Contains (1000 choose 2)*2 records
UI
Redis Datastore
MongoDB
4 of 7
Expert Perspective
Expert presented grid of games
Expert selects which games they are familiar with
Expert is then presented two of those games and asked how likely they would be to recommend the second if a player enjoyed the first
Slider input with values (0 = would never recommend, 1 = would definitely recommend)
5 of 7
Expert Perspective
Recommendation values stored in a separated MongoDB
Expert should not be presented same game twice
Game combinations may have more than one rating by separate users, so some sort of authentication is necessary
Ratings across experts will be averaged to generate training set
6 of 7
Machine Learning Backend
When this training set is developed:�{ GameIDA, GameIDB, Similarity } �we can then train a machine learning system to provide suggestions in a similar way in which the experts provided suggestions
In order to accomplish this, game records must be converted into vectors
Some values translate well (ex. # players), however values such as category will need to be converted to binary (ex. 0 = not in category A, 1 = in category A) or via other methods
7 of 7
Machine Learning Backend
A script will be written to periodically run the training algorithm as the experts add to the training set over time
Once the network has been sufficiently trained, the vector values for every game combination must be fed through the network
This is not trivial: (1000 choose 2)*2 input space