All Projects → RUCAIBox → Recbole

RUCAIBox / Recbole

Licence: mit
A unified, comprehensive and efficient recommendation library

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Recbole

Elliot
Comprehensive and Rigorous Framework for Reproducible Recommender Systems Evaluation
Stars: ✭ 49 (-93.72%)
Mutual labels:  knowledge-graph, collaborative-filtering
recommender system with Python
recommender system tutorial with Python
Stars: ✭ 106 (-86.41%)
Mutual labels:  collaborative-filtering, recommendation-system
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 (-70.9%)
Mutual labels:  knowledge-graph, collaborative-filtering
Movie Recommender System
Basic Movie Recommendation Web Application using user-item collaborative filtering.
Stars: ✭ 85 (-89.1%)
Mutual labels:  collaborative-filtering, recommendation-system
WhySoMuch
knowledge graph recommendation
Stars: ✭ 67 (-91.41%)
Mutual labels:  knowledge-graph, recommendation-system
Tutorials
AI-related tutorials. Access any of them for free → https://towardsai.net/editorial
Stars: ✭ 204 (-73.85%)
Mutual labels:  collaborative-filtering, recommendation-system
datatheque.com
a data science blog
Stars: ✭ 12 (-98.46%)
Mutual labels:  collaborative-filtering, recommendation-system
raptor
A lightweight product recommendation system (Item Based Collaborative Filtering) developed in Haskell.
Stars: ✭ 34 (-95.64%)
Mutual labels:  collaborative-filtering, recommendation-system
Person-Recommendation-Algorithms
推荐算法个人学习笔记以及代码实战
Stars: ✭ 50 (-93.59%)
Mutual labels:  collaborative-filtering, recommendation-system
TIFUKNN
kNN-based next-basket recommendation
Stars: ✭ 38 (-95.13%)
Mutual labels:  collaborative-filtering, recommendation-system
Movie
Personalized real-time movie recommendation system
Stars: ✭ 37 (-95.26%)
Mutual labels:  collaborative-filtering, recommendation-system
recommender
NReco Recommender is a .NET port of Apache Mahout CF java engine (standalone, non-Hadoop version)
Stars: ✭ 35 (-95.51%)
Mutual labels:  collaborative-filtering, recommendation-system
Deeprec
An Open-source Toolkit for Deep Learning based Recommendation with Tensorflow.
Stars: ✭ 954 (+22.31%)
Mutual labels:  collaborative-filtering, recommendation-system
Recommendationsystem
Book recommender system using collaborative filtering based on Spark
Stars: ✭ 244 (-68.72%)
Mutual labels:  collaborative-filtering, recommendation-system
Recsys2019 deeplearning evaluation
This is the repository of our article published in RecSys 2019 "Are We Really Making Much Progress? A Worrying Analysis of Recent Neural Recommendation Approaches" and of several follow-up studies.
Stars: ✭ 780 (+0%)
Mutual labels:  collaborative-filtering, recommendation-system
Recommendation-System-Baseline
Some common recommendation system baseline, with description and link.
Stars: ✭ 34 (-95.64%)
Mutual labels:  collaborative-filtering, recommendation-system
Knowledge Graph based Intent Network
Learning Intents behind Interactions with Knowledge Graph for Recommendation, WWW2021
Stars: ✭ 116 (-85.13%)
Mutual labels:  knowledge-graph, recommendation-system
Cornac
A Comparative Framework for Multimodal Recommender Systems
Stars: ✭ 308 (-60.51%)
Mutual labels:  collaborative-filtering, recommendation-system
Graphin
A React toolkit for graph visualization based on G6
Stars: ✭ 482 (-38.21%)
Mutual labels:  knowledge-graph
Research
novel deep learning research works with PaddlePaddle
Stars: ✭ 609 (-21.92%)
Mutual labels:  knowledge-graph

RecBole Logo


RecBole (伯乐)

“世有伯乐,然后有千里马。千里马常有,而伯乐不常有。”——韩愈《马说》

PyPi Latest Release Conda Latest Release License

HomePage | Docs | Datasets | Paper | Blogs | 中文版

RecBole is developed based on Python and PyTorch for reproducing and developing recommendation algorithms in a unified, comprehensive and efficient framework for research purpose. Our library includes 65 recommendation algorithms, covering four major categories:

  • General Recommendation
  • Sequential Recommendation
  • Context-aware Recommendation
  • Knowledge-based Recommendation

We design a unified and flexible data file format, and provide the support for 28 benchmark recommendation datasets. A user can apply the provided script to process the original data copy, or simply download the processed datasets by our team.

RecBole v0.1 architecture
Figure: RecBole Overall Architecture

Feature

  • General and extensible data structure. We design general and extensible data structures to unify the formatting and usage of various recommendation datasets.

  • Comprehensive benchmark models and datasets. We implement 65 commonly used recommendation algorithms, and provide the formatted copies of 28 recommendation datasets.

  • Efficient GPU-accelerated execution. We optimize the efficiency of our library with a number of improved techniques oriented to the GPU environment.

  • Extensive and standard evaluation protocols. We support a series of widely adopted evaluation protocols or settings for testing and comparing recommendation algorithms.

RecBole News

01/15/2021: We release RecBole v0.2.0.

12/10/2020: 我们发布了RecBole小白入门系列中文博客(持续更新中)

12/06/2020: We release RecBole v0.1.2.

11/29/2020: We constructed preliminary experiments to test the time and memory cost on three different-sized datasets and provided the test result for reference.

11/03/2020: We release the first version of RecBole v0.1.1.

Installation

RecBole works with the following operating systems:

  • Linux
  • Windows 10
  • macOS X

RecBole requires Python version 3.6 or later.

RecBole requires torch version 1.6.0 or later. If you want to use RecBole with GPU, please ensure that CUDA or cudatoolkit version is 9.2 or later. This requires NVIDIA driver version >= 396.26 (for Linux) or >= 397.44 (for Windows10).

Install from conda

conda install -c aibox recbole

Install from pip

pip install recbole

Install from source

git clone https://github.com/RUCAIBox/RecBole.git && cd RecBole
pip install -e . --verbose

Quick-Start

With the source code, you can use the provided script for initial usage of our library:

python run_recbole.py

This script will run the BPR model on the ml-100k dataset.

Typically, this example takes less than one minute. We will obtain some output like:

INFO ml-100k
The number of users: 944
Average actions of users: 106.04453870625663
The number of items: 1683
Average actions of items: 59.45303210463734
The number of inters: 100000
The sparsity of the dataset: 93.70575143257098%

INFO Evaluation Settings:
Group by user_id
Ordering: {'strategy': 'shuffle'}
Splitting: {'strategy': 'by_ratio', 'ratios': [0.8, 0.1, 0.1]}
Negative Sampling: {'strategy': 'full', 'distribution': 'uniform'}

INFO BPRMF(
    (user_embedding): Embedding(944, 64)
    (item_embedding): Embedding(1683, 64)
    (loss): BPRLoss()
)
Trainable parameters: 168128

INFO epoch 0 training [time: 0.27s, train loss: 27.7231]
INFO epoch 0 evaluating [time: 0.12s, valid_score: 0.021900]
INFO valid result:
[email protected]: 0.0073  [email protected]: 0.0219  [email protected]: 0.0093  [email protected]: 0.0795  [email protected]: 0.0088

...

INFO epoch 63 training [time: 0.19s, train loss: 4.7660]
INFO epoch 63 evaluating [time: 0.08s, valid_score: 0.394500]
INFO valid result:
[email protected]: 0.2156  [email protected]: 0.3945  [email protected]: 0.2332  [email protected]: 0.7593  [email protected]: 0.1591

INFO Finished training, best eval result in epoch 52
INFO Loading model structure and parameters from saved/***.pth
INFO best valid result:
[email protected]: 0.2169  [email protected]: 0.4005  [email protected]: 0.235  [email protected]: 0.7582  [email protected]: 0.1598
INFO test result:
[email protected]: 0.2368  [email protected]: 0.4519  [email protected]: 0.2768  [email protected]: 0.7614  [email protected]: 0.1901

If you want to change the parameters, such as learning_rate, embedding_size, just set the additional command parameters as you need:

python run_recbole.py --learning_rate=0.0001 --embedding_size=128

If you want to change the models, just run the script by setting additional command parameters:

python run_recbole.py --model=[model_name]

Time and Memory Costs

We constructed preliminary experiments to test the time and memory cost on three different-sized datasets (small, medium and large). For detailed information, you can click the following links.

NOTE: Our test results only gave the approximate time and memory cost of our implementations in the RecBole library (based on our machine server). Any feedback or suggestions about the implementations and test are welcome. We will keep improving our implementations, and update these test results.

RecBole Major Releases

Releases Date Features
v0.2.0 01/15/2021 RecBole
v0.1.1 11/03/2020 Basic RecBole

Contributing

Please let us know if you encounter a bug or have any suggestions by filing an issue.

We welcome all contributions from bug fixes to new features and extensions.

We expect all contributions discussed in the issue tracker and going through PRs.

We thank the insightful suggestions from @tszumowski, @rowedenny, @deklanw et.al.

We thank the nice contributions through PRs from @rowedenny@deklanw et.al.

Cite

If you find RecBole useful for your research or development, please cite the following paper:

@article{recbole,
    title={RecBole: Towards a Unified, Comprehensive and Efficient Framework for Recommendation Algorithms},
    author={Wayne Xin Zhao and Shanlei Mu and Yupeng Hou and Zihan Lin and Kaiyuan Li and Yushuo Chen and Yujie Lu and Hui Wang and Changxin Tian and Xingyu Pan and Yingqian Min and Zhichao Feng and Xinyan Fan and Xu Chen and Pengfei Wang and Wendi Ji and Yaliang Li and Xiaoling Wang and Ji-Rong Wen},
    year={2020},
    journal={arXiv preprint arXiv:2011.01731}
}

The Team

RecBole is developed and maintained by RUC, BUPT, ECNU.

License

RecBole uses MIT License.

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].