Skip to content

PyTorch Implementations For A Series Of Deep Learning-Based Recommendation Models

Notifications You must be signed in to change notification settings

khanhnamle1994/MetaRec

Repository files navigation

Welcome to the research code repository for my Master's Thesis work on Deep Learning Based Recommendation Systems. This work is still in progress.

header-image

Background

Recommendation systems are technologies and techniques that can provide recommendations for items to be of use to a user. The recommendations provided are aimed at supporting their users in various decision-making processes, such as what products to purchase, what music to listen, or what routes to take. Correspondingly, various techniques for recommendation generation have been proposed and deployed in commercial environments. The goal of this research is to impose a degree of order upon this diversity by presenting a coherent and unified repository of the most common recommendation methods to solve the collaborative filtering problem: from classic matrix factorization to cutting-edge deep neural networks.

Dataset

For my experiments thus far, I worked with the MovieLens1M Dataset, a famous dataset within the recommendation systems research community. The data contains 1,000,209 anonymous ratings of approximately 3,900 movies made by 6,040 MovieLens users who joined MovieLens in 2000.

Research Models

Here are the 7 different Matrix Factorization models for Collaborative Filtering:

Here are the 5 different Multilayer Perceptron models for Collaborative Filtering:

Here are the 6 different Autoencoders models for Collaborative Filtering:

Here are the 3 different Boltzmann Machines models for Collaborative Filtering:

Production App

Here I built a recommendation web service with Python 3.6 and Django 2.2.4. It has these properties:

  • Can handle many API endpoints,
  • Each API endpoint can have several research algorithms with different versions,
  • Research code and artifacts (files with model parameters) are stored in the code repository (git),
  • Supports fast deployments and continuous integration (tests for both: server and research code),
  • Supports monitoring and algorithm diagnostic (support A/B tests),
  • Is scalable (deployed with containers),
  • Has a user interface.

Blog Posts

I have written a series of blog posts documenting my experiments on my website: