All Projects → evfro → Recsys19_hybridsvd

evfro / Recsys19_hybridsvd

Accompanying code for reproducing experiments from the HybridSVD paper. Preprint is available at https://arxiv.org/abs/1802.06398.

Projects that are alternatives of or similar to Recsys19 hybridsvd

Movielens
4 different recommendation engines for the MovieLens dataset.
Stars: ✭ 265 (+1052.17%)
Mutual labels:  jupyter-notebook, collaborative-filtering
Recsys
项亮的《推荐系统实践》的代码实现
Stars: ✭ 306 (+1230.43%)
Mutual labels:  jupyter-notebook, recommender-system
Daisyrec
A developing recommender system in pytorch. Algorithm: KNN, LFM, SLIM, NeuMF, FM, DeepFM, VAE and so on, which aims to fair comparison for recommender system benchmarks
Stars: ✭ 280 (+1117.39%)
Mutual labels:  recommender-system, collaborative-filtering
recommender
NReco Recommender is a .NET port of Apache Mahout CF java engine (standalone, non-Hadoop version)
Stars: ✭ 35 (+52.17%)
Mutual labels:  collaborative-filtering, recommender-system
Neural graph collaborative filtering
Neural Graph Collaborative Filtering, SIGIR2019
Stars: ✭ 517 (+2147.83%)
Mutual labels:  recommender-system, collaborative-filtering
Spotify-Song-Recommendation-ML
UC Berkeley team's submission for RecSys Challenge 2018
Stars: ✭ 70 (+204.35%)
Mutual labels:  collaborative-filtering, recommender-system
Cornac
A Comparative Framework for Multimodal Recommender Systems
Stars: ✭ 308 (+1239.13%)
Mutual labels:  recommender-system, collaborative-filtering
Recommender-System
In this code we implement and compared Collaborative Filtering algorithm, prediction algorithms such as neighborhood methods, matrix factorization-based ( SVD, PMF, SVD++, NMF), and many others.
Stars: ✭ 30 (+30.43%)
Mutual labels:  collaborative-filtering, recommender-system
Vae cf
Variational autoencoders for collaborative filtering
Stars: ✭ 386 (+1578.26%)
Mutual labels:  jupyter-notebook, collaborative-filtering
Rspapers
A Curated List of Must-read Papers on Recommender System.
Stars: ✭ 4,140 (+17900%)
Mutual labels:  recommender-system, collaborative-filtering
recsys spark
Spark SQL 实现 ItemCF,UserCF,Swing,推荐系统,推荐算法,协同过滤
Stars: ✭ 76 (+230.43%)
Mutual labels:  collaborative-filtering, recommender-system
Newsrecommendsystem
个性化新闻推荐系统,A news recommendation system involving collaborative filtering,content-based recommendation and hot news recommendation, can be adapted easily to be put into use in other circumstances.
Stars: ✭ 557 (+2321.74%)
Mutual labels:  recommender-system, collaborative-filtering
Recommender-Systems-with-Collaborative-Filtering-and-Deep-Learning-Techniques
Implemented User Based and Item based Recommendation System along with state of the art Deep Learning Techniques
Stars: ✭ 41 (+78.26%)
Mutual labels:  collaborative-filtering, recommender-system
Neural Collaborative Filtering
pytorch version of neural collaborative filtering
Stars: ✭ 263 (+1043.48%)
Mutual labels:  jupyter-notebook, collaborative-filtering
BARS
Towards open benchmarking for recommender systems https://openbenchmark.github.io/BARS
Stars: ✭ 157 (+582.61%)
Mutual labels:  collaborative-filtering, recommender-system
Summary Of Recommender System Papers
阅读过的推荐系统论文的归类总结,持续更新中…
Stars: ✭ 288 (+1152.17%)
Mutual labels:  recommender-system, collaborative-filtering
Awesome-Machine-Learning-Papers
📖Notes and remarks on Machine Learning related papers
Stars: ✭ 35 (+52.17%)
Mutual labels:  collaborative-filtering, recommender-system
BPR MPR
BPR, Bayesian Personalized Ranking (BPR), extremely convenient BPR & Multiple Pairwise Ranking
Stars: ✭ 77 (+234.78%)
Mutual labels:  collaborative-filtering, recommender-system
Recommendation Systems Paperlist
Papers about recommendation systems that I am interested in
Stars: ✭ 308 (+1239.13%)
Mutual labels:  recommender-system, collaborative-filtering
Music recommender
Music recommender using deep learning with Keras and TensorFlow
Stars: ✭ 528 (+2195.65%)
Mutual labels:  jupyter-notebook, recommender-system

Reproducing HybridSVD paper

This repository contains full source code for reproducing results from the HybridSVD paper. If you want to run it on your own machine, make sure to prepare conda environment according to this configuation file, which contains the list of all required packages (including their versions).

You can also interactively run experiments directly in your browser with the help of Binder cloud technologies. Simply click on the badge below to get started:

badge

This will launch interactive JupyterLab environment with access to all repository files. By default it starts with the HybridSVD.ipynb notebook that contains the code for HybridSVD model evaluated on the Movielens and Bookcrossing datasets.

Mind cloud environment restrictions

Due to restrictions on Binder's cloud resources only small datasets, e.g., Movielens-1M or Amazon Video Games, allow performing full experiments without interruption. Attempts to work with larger files will likely crash the environment. Originally all experiments were conducted on HPC servers with much larger amount of hardware resources. It is, therefore, advised to make the following modifications to run jupyter notebooks safely in the Binder cloud:

Working with Movielens-1M data

Experiments with this dataset are available in the following files:

  • Baselines.ipynb
  • HybridSVD.ipynb
  • FactorizationMachines.ipynb
  • LCE.ipynb
  • ScaledSVD.ipynb
  • ScaledHybridSVD.ipynb

You need to change the data_labels variable in the Experiment setup section of each notebook from

data_labels = ['ML1M', 'ML10M', 'BX']

to

data_labels = ['ML1M']

Accordingly, do not run cells under Movielens10M and BookCrossing headers (these datasets are not provided in the cloud environment). Also make sure that the first argument to the get_movielens_data is ../datasets/movielens/ml-1m.zip (originally the notebooks were executed on several machines that's why the path may vary), e.g., it should start as:

data_dict[lbl], meta_dict[lbl] = get_movielens_data('../datasets/movielens/ml-1m.zip',
                                                     <other arguments>

Working with Amazon Video Games data

Experiments with this dataset are available in the following files:

  • Baselines_AMZ.ipynb
  • HybridSVD_AMZ.ipynb
  • FactorizationMachines_AMZ.ipynb
  • LCE_AMZ.ipynb
  • ScaledSVD_AMZ.ipynb
  • ScaledHybridSVD_AMZ.ipynb

You need to change the data_labels variable in the Experiment setup section from

data_labels = ['AMZe', 'AMZvg']

to

data_labels = ['AMZvg']

Accordingly, do not run cells under AMZe header. Again, make sure to provide correct input arguments to the get_amazon_data. In this case they are:

data_dict[lbl], meta_dict[lbl] = get_amazon_data('../datasets/amazon/ratings_Video_Games.csv',
                                                 meta_path='../datasets/amazon/meta/meta_Video_Games.json.gz',
                                                 <other arguments>

Reducing training time

Keep in mind that some models require much longer training time than others. For example, the whole experiment for HybridSVD in both standard and cold start scenarios on the Movielens-1M dataset completes even before the initial tuning of Factorization Machines is done for standard scenario. As Binder automatically shuts down long running tasks you may not be able to perform all computations before the timeout. To reduce the risk of such shutdown you may want to run different notebooks (different models) in independent Binder sessions. You may also want to reduce the number of points to consider in the random grid search for tuning non SVD-based models. For example, in the FM case you can change the ntrial=60 input to ntrials=30 in the fine_tune_fm(model, params, label, ntrials=60) function calls. This may, however, slightly decrease the resulting quality of FM.

Alternatively, you can skip parameter tuning sections for long-running models and reuse previously found set of nearly optimal hyper-parameters. They are printed in the end of each section with model tuning. You can also find them in the View optimal parameters notebook.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].