Awesome Open Source
Awesome Open Source

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



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.


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

Matrix Factorization

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

Multi-Layer Perceptron

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


Here are the 6 different Autoencoders models for Collaborative Filtering:

Boltzmann Machines

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

Production App

Django Web Service

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:

Alternatives To Metarec
Select To Compare

Alternative Project Comparisons
Related Awesome Lists
Top Programming Languages

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Python (888,878
Deep Learning (39,275
Django (36,060
Tensorflow (22,886
Pytorch (22,609
Paper (18,768
Matrix (10,863
Collaboration (6,212
Recommendation (4,997
Filtering (4,191
Ranking (2,719
Recommendation System (2,627
Autoencoder (2,027
Tensorboard (1,325
Collaborative Filtering (734
Matrix Factorization (568
Meta Learning (392
Multilayer Perceptron (120
Wandb (76
Movielens Dataset (40
Boltzmann Machines (25
Comet Ml (12