All Projects → artem-oppermann → Restricted-Boltzmann-Machine

artem-oppermann / Restricted-Boltzmann-Machine

Licence: other
Restricted Boltzmann Machine for collaborative filtering of movies.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Restricted-Boltzmann-Machine

Recommender
A C library for product recommendations/suggestions using collaborative filtering (CF)
Stars: ✭ 238 (+495%)
Mutual labels:  collaborative-filtering
svae cf
[ WSDM '19 ] Sequential Variational Autoencoders for Collaborative Filtering
Stars: ✭ 38 (-5%)
Mutual labels:  collaborative-filtering
Quick-Data-Science-Experiments-2017
Quick-Data-Science-Experiments
Stars: ✭ 19 (-52.5%)
Mutual labels:  collaborative-filtering
matrix-completion
Lightweight Python library for in-memory matrix completion.
Stars: ✭ 94 (+135%)
Mutual labels:  collaborative-filtering
RecommendationEngine
Source code and dataset for paper "CBMR: An optimized MapReduce for item‐based collaborative filtering recommendation algorithm with empirical analysis"
Stars: ✭ 43 (+7.5%)
Mutual labels:  collaborative-filtering
raptor
A lightweight product recommendation system (Item Based Collaborative Filtering) developed in Haskell.
Stars: ✭ 34 (-15%)
Mutual labels:  collaborative-filtering
Tutorials
AI-related tutorials. Access any of them for free → https://towardsai.net/editorial
Stars: ✭ 204 (+410%)
Mutual labels:  collaborative-filtering
Recommendation.jl
Building recommender systems in Julia
Stars: ✭ 42 (+5%)
Mutual labels:  collaborative-filtering
oboe
An AutoML pipeline selection system to quickly select a promising pipeline for a new dataset.
Stars: ✭ 76 (+90%)
Mutual labels:  collaborative-filtering
collaborative-filtering-in-mysql
collaborative filtering in mysql
Stars: ✭ 13 (-67.5%)
Mutual labels:  collaborative-filtering
LR-GCCF
Revisiting Graph based Collaborative Filtering: A Linear Residual Graph Convolutional Network Approach, AAAI2020
Stars: ✭ 99 (+147.5%)
Mutual labels:  collaborative-filtering
disentangled graph collaborative filtering
Disentagnled Graph Collaborative Filtering, SIGIR2020
Stars: ✭ 118 (+195%)
Mutual labels:  collaborative-filtering
TwoTowers
A configurable, tunable, and reproducible library for deep matching models
Stars: ✭ 66 (+65%)
Mutual labels:  collaborative-filtering
Recommendationsystem
Book recommender system using collaborative filtering based on Spark
Stars: ✭ 244 (+510%)
Mutual labels:  collaborative-filtering
SLRC
WWW'2019: Modeling Item-Specific Temporal Dynamics of Repeat Consumption for Recommender Systems
Stars: ✭ 32 (-20%)
Mutual labels:  collaborative-filtering
Recommender System
A developing recommender system in tensorflow2. Algorithm: UserCF, ItemCF, LFM, SLIM, GMF, MLP, NeuMF, FM, DeepFM, MKR, RippleNet, KGCN and so on.
Stars: ✭ 227 (+467.5%)
Mutual labels:  collaborative-filtering
tf-recsys
tf-recsys contains collaborative filtering (CF) model based on famous SVD and SVD++ algorithm. Both of them are implemented by tensorflow in order to utilize GPU acceleration.
Stars: ✭ 91 (+127.5%)
Mutual labels:  collaborative-filtering
recommender system with Python
recommender system tutorial with Python
Stars: ✭ 106 (+165%)
Mutual labels:  collaborative-filtering
datatheque.com
a data science blog
Stars: ✭ 12 (-70%)
Mutual labels:  collaborative-filtering
Social-Recommendation
Summary of social recommendation papers and codes
Stars: ✭ 143 (+257.5%)
Mutual labels:  collaborative-filtering

Restricted-Boltzmann-Machine

Collaborative Filtering is a method used by recommender systems to make predictions about an interest of an specific user by collecting taste or preferences information from many other users. The technique of Collaborative Filtering has the underlying assumption that if a user A has the same taste or opinion on an issue as the person B, A is more likely to have B’s opinion on a different issue.

In this project I use a Restricted Boltzmann to predict whether a user would like a movie or not based on this user's taste and the taste of other users who watched and rated the same and similar movies.

Prerequisites

  • Python 3.6
  • TensorFlow 1.5 or higher
  • NumPy 1.11 or higher

Datasets

The current version support only the MovieLens ml-1m.zip dataset obtained from https://grouplens.org/datasets/movielens/.

How to Use

  • Download the ml-1m.zip dataset from https://grouplens.org/datasets/movielens/.

  • Save ratings.dat under DATA_DIR. Devide the ratings.dat into training and testing datasets train.dat and test.dat with the shell command:

       python train_test_split.py DATA_DIR OUTPUT_DIR_TRAIN OUTPUT_DIR_TEST
    
  • Use shell to make TF_Record files out of the both train.dat and test.dat files by executing the command:

      python tf_record_writer.py OUTPUT_DIR_TRAIN OUTPUT_DIR_TEST OUTPUT_DIR_TF_TRAIN OUTPUT_DIR_TF_TEST
    
  • Use shell to start the training by executing the command (optionally parse your hyperparameters):

      python train.py \
           --tf_records_train_path=OUTPUT_DIR_TF_TRAIN \
           --tf_records_test_path=OUTPUT_DIR_TF_TEST \
    

Performance of the Model

During the training process we can examine the progress of the accuracy on training and test sets. The accuracy gives the ratio of correctly predicted binary movie ratings. It can be seen that after 16 epochs the model predicts 78,4% of the time correctly if a user would like a movie or not.

         epoch_nr: 0, batch: 50/188, acc_train: 0.721, acc_test: 0.709
         epoch_nr: 0, batch: 100/188, acc_train: 0.744, acc_test: 0.704
         epoch_nr: 0, batch: 150/188, acc_train: 0.748, acc_test: 0.736
         epoch_nr: 1, batch: 50/188, acc_train: 0.767, acc_test: 0.764
         epoch_nr: 1, batch: 100/188, acc_train: 0.758, acc_test: 0.733
         epoch_nr: 1, batch: 150/188, acc_train: 0.756, acc_test: 0.732
         epoch_nr: 2, batch: 50/188, acc_train: 0.772, acc_test: 0.773
         epoch_nr: 2, batch: 100/188, acc_train: 0.758, acc_test: 0.769
         epoch_nr: 2, batch: 150/188, acc_train: 0.754, acc_test: 0.771
         epoch_nr: 3, batch: 50/188, acc_train: 0.767, acc_test: 0.725
         epoch_nr: 3, batch: 100/188, acc_train: 0.758, acc_test: 0.757
         epoch_nr: 3, batch: 150/188, acc_train: 0.756, acc_test: 0.760
         epoch_nr: 4, batch: 50/188, acc_train: 0.768, acc_test: 0.717
         epoch_nr: 4, batch: 100/188, acc_train: 0.756, acc_test: 0.743
         epoch_nr: 4, batch: 150/188, acc_train: 0.759, acc_test: 0.781
         epoch_nr: 5, batch: 50/188, acc_train: 0.772, acc_test: 0.769
         epoch_nr: 5, batch: 100/188, acc_train: 0.762, acc_test: 0.774
         epoch_nr: 5, batch: 150/188, acc_train: 0.760, acc_test: 0.775
         epoch_nr: 6, batch: 50/188, acc_train: 0.774, acc_test: 0.771
         epoch_nr: 6, batch: 100/188, acc_train: 0.764, acc_test: 0.776
         epoch_nr: 6, batch: 150/188, acc_train: 0.765, acc_test: 0.775
         epoch_nr: 7, batch: 50/188, acc_train: 0.779, acc_test: 0.780
         epoch_nr: 7, batch: 100/188, acc_train: 0.765, acc_test: 0.778
         epoch_nr: 7, batch: 150/188, acc_train: 0.766, acc_test: 0.775
         epoch_nr: 8, batch: 50/188, acc_train: 0.777, acc_test: 0.785
         epoch_nr: 8, batch: 100/188, acc_train: 0.768, acc_test: 0.785
         epoch_nr: 8, batch: 150/188, acc_train: 0.764, acc_test: 0.766
         epoch_nr: 9, batch: 50/188, acc_train: 0.779, acc_test: 0.787
         epoch_nr: 9, batch: 100/188, acc_train: 0.763, acc_test: 0.784
         epoch_nr: 9, batch: 150/188, acc_train: 0.765, acc_test: 0.783
         epoch_nr: 10, batch: 50/188, acc_train: 0.775, acc_test: 0.763
         epoch_nr: 10, batch: 100/188, acc_train: 0.766, acc_test: 0.750
         epoch_nr: 10, batch: 150/188, acc_train: 0.771, acc_test: 0.784
         epoch_nr: 11, batch: 50/188, acc_train: 0.776, acc_test: 0.768
         epoch_nr: 11, batch: 100/188, acc_train: 0.765, acc_test: 0.783
         epoch_nr: 11, batch: 150/188, acc_train: 0.767, acc_test: 0.789
         epoch_nr: 12, batch: 50/188, acc_train: 0.783, acc_test: 0.789
         epoch_nr: 12, batch: 100/188, acc_train: 0.768, acc_test: 0.762
         epoch_nr: 12, batch: 150/188, acc_train: 0.764, acc_test: 0.774
         epoch_nr: 13, batch: 50/188, acc_train: 0.776, acc_test: 0.786
         epoch_nr: 13, batch: 100/188, acc_train: 0.767, acc_test: 0.778
         epoch_nr: 13, batch: 150/188, acc_train: 0.764, acc_test: 0.785
         epoch_nr: 14, batch: 50/188, acc_train: 0.777, acc_test: 0.786
         epoch_nr: 14, batch: 100/188, acc_train: 0.764, acc_test: 0.765
         epoch_nr: 14, batch: 150/188, acc_train: 0.767, acc_test: 0.767
         epoch_nr: 15, batch: 50/188, acc_train: 0.778, acc_test: 0.786
         epoch_nr: 15, batch: 100/188, acc_train: 0.769, acc_test: 0.783
         epoch_nr: 15, batch: 150/188, acc_train: 0.770, acc_test: 0.783
         epoch_nr: 16, batch: 50/188, acc_train: 0.783, acc_test: 0.790
         epoch_nr: 16, batch: 100/188, acc_train: 0.766, acc_test: 0.787
         epoch_nr: 16, batch: 150/188, acc_train: 0.767, acc_test: 0.786
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].