Then, for the user in question, find the highest valued game that the user has not played yet. Simply multiply the latent factors for the users and the latent factors for the items together to the user-item matrix. It also makes the algorithm for making recommendations trivial. This makes recommendations for users who have only played a couple games possible. This approach attempts to find latent factors that describe all games and users in the dataset. One approach to solving this is Matrix Factorization. The algorithm was unable to make predictions for these users. However, one area is struggled was with users who hadn't played enough games to be correlated with enough users. This is usually a characteristic of a good recommendation engine (most recommendation engines don't really try to get the user to branch out). While I can't 100% verify that the recommendation made for a user is perfect, the games recommended do seem to be similar to the games a user has already played. Testing both these collaborative filtering algorithms, I found that they performed very well. This process is largely similar to user-based, except I must construct an item-item (game-game) correlation matrix for the algorithm. Recommend game with highest predicted rating Get top n users by magnitude of correlation Get subset of those users who have a similarity rating w/ U A rough description of the collaborative filtering algorithm is: This value can be adjusted in the code to test for the best recommendations. For two users to have a correlation coefficient, they must have at least n games in common, where n > 2. This may not be completely accurate every time, but it should be good enough.įor user-based filtering, I must first construct a user-user correlation matrix. One key assumption is being made here: the more a user plays a game, the more they like the game. While this may bring some challenges, it should be able to serve in a pretty similar manner as ratings. So, I will use hours played as the metric. However, I do not have access to rating data, just hours played. Now, collaborative filtering is usually done with ratings, where users rate movies/games/songs/shows/etc out of 5 or maybe 10. I was then able to begin a User-based Collaborative Filtering approach. I chose to log normalize the data so that the distribution looked mostly normal. There were a lot of extreme outliers (think a couple users playing a few games for a very long time). Here, I am really only interesting in hours played so we can remove the purchase data. The original data is structured such that a one user-game pair can have 2 rows: one row that says he/she purchased the game and one row that says how many hours he/she played the game. This is accomplished in 3 different ways: User-based Collaborative Filtering, Item-based Collaborative Filtering, and Matrix Factorization. The goal of this project is to make appropriate recommendations to gamers. The dataset for this project can be found here. Creating a Video Game Recommender System from Scratch
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |