/review-on-collaborative-filtering

This repository presents a comprehensive implementation of collaborative filtering recommender systems.

Primary LanguageJupyter Notebook

Open In Colab

This repository presents a comprehensive implementation of collaborative filtering recommender systems, from memory-based collaborative filtering to more advanced machine learning algorithms. It starts by implementing basics collaborative filtering algorithms such as user-based collaborative filering also known as user-to-user collaborative filtering and item-based collaborative filtering (item-to-item collaborative filtering). This repository also goes through dimensionality reduction based recommendation system. It presents models such as Singular Value Decomposition (SVD), Matrix Factorization (MF), Non Negative Matrix Factorization (NMF) and Explainable Matrix Factorization (EMF).

Requirements

  • matplotlib==3.2.2
  • numpy==1.19.2
  • pandas==1.0.5
  • python==3.7
  • scikit-learn==0.24.1
  • scikit-surprise==1.1.1
  • scipy==1.6.2

Content

The topics covered in this repository are as follows : We first explore the movielen data

  1. Data exploration : this notebook explore the movielen lasted small dataset. This dataset is used throughout this repository to build collaborative filtering recommender systems.

Then the model we implemented are the followings

1. Memory-based Collaborative Filtering

Two main algorithms :

  1. User-based (or user to user) Collaborative Filtering : implements user-based collaborative filtering.

  2. Item-based (or item to item) Collaborative Filtering : implements item-based collaborative filtering.

2. Dimensionality reduction

Here the explored models are :

  1. Singular Value Decomposition (SVD) : implements dimensionality reduction with Singular Value Decomposition for collaborative filtering recommender systems

  2. Matrix Factorization : builds and trains a Matrix Factorization based recommender system.

  3. Non Negative Matrix Factorization: applying non negativity to the learnt factors of matrix factorization.

  4. Explainable Matrix Factorization: add explainability to matrix factorization factors in order to improve recommendation performances.

3. Performances comparison

  1. Performances comparison: this notebook presents an overall performance comparaison of all the models listed before.

References

  1. Daniel Billsus and Michael J. Pazzani (1998). Learning Collaborative Information Filters
  2. Herlocker et al. (1999) An Algorithmic Framework for Performing Collaborative Filtering
  3. Daniel D. Lee & H. Sebastian Seung (1999). Learning the parts of objects by non-negative matrix factorization
  4. Sarwar et al. (2000). Application of Dimensionality Reduction in Recommender System -- A Case Study
  5. George Karypis (2001)Evaluation of Item-Based Top-N Recommendation Algorithms
  6. Sarwar et al. (2001) Item-based collaborative filtering recommendation algorithms
  7. Greg Linden, Brent Smith, and Jeremy York (2003) Amazon.com Recommendations : Item-to-Item Collaborative Filtering
  8. Deng Cai et al. (2008). Non-negative Matrix Factorization on Manifold
  9. Yehuda Koren et al. (2009). Matrix Factorization Techniques for Recommender Systems
  10. Michael D. Ekstrand, et al. (2011). Collaborative Filtering Recommender Systems
  11. Yu-Xiong Wang and Yu-Jin Zhang (2011). Non-negative Matrix Factorization: a Comprehensive Review
  12. J. Bobadilla et al. (2013) Recommender systems survey
  13. Nicolas Gillis (2014). The Why and How of Nonnegative Matrix Factorization
  14. Dziugaite and Roy (2015), Neural Network Matrix Factorization
  15. Abdollahi and Nasraoui (2016). Explainable Matrix Factorization for Collaborative Filtering
  16. Abdollahi and Nasraoui (2017). Using Explainability for Constrained Matrix Factorization
  17. Xiangnan He et al. (2017), Neural Collaborative Filtering
  18. Shuo Wang et al, (2018). Explainable Matrix Factorization with Constraints on Neighborhood in the Latent Space

Author

Carmel WENGA,
PhD student at Université de la Polynésie Française,
Applied Machine Learning Research Engineer,
ShoppingList, NzhinuSoft.