Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ylongqi/openrec
OpenRec is an open-source and modular library for neural network-inspired recommendation algorithms
https://github.com/ylongqi/openrec
deep-learning deep-neural-networks machine-learning ml recommendation recommendation-algorithm recommendation-system
Last synced: about 1 month ago
JSON representation
OpenRec is an open-source and modular library for neural network-inspired recommendation algorithms
- Host: GitHub
- URL: https://github.com/ylongqi/openrec
- Owner: ylongqi
- License: apache-2.0
- Created: 2017-11-29T16:04:40.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2023-03-24T23:54:19.000Z (over 1 year ago)
- Last Synced: 2024-08-03T23:18:23.050Z (4 months ago)
- Topics: deep-learning, deep-neural-networks, machine-learning, ml, recommendation, recommendation-algorithm, recommendation-system
- Language: Python
- Homepage: http://www.openrec.ai
- Size: 9.77 MB
- Stars: 411
- Watchers: 36
- Forks: 85
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-marketing-machine-learning - openrec
- graph-networks - OpenRec
README
[**OpenRec**](http://www.openrec.ai/) is an open-source and modular library for neural network-inspired recommendation algorithms. Each recommender is modeled as a computational graph that consists of a structured ensemble of reusable modules connected through a set of well-defined interfaces. OpenRec is built to ease the process of extending and adapting state-of-the-art neural recommenders to heterogeneous recommendation scenarios, where different users', items', and contextual data sources need to be incorporated.
**For the structure and the design philosophy of OpenRec, please refer to the following paper published in WSDM'18:**
[Longqi Yang](https://ylongqi.com/), Eugene Bagdasaryan, Joshua Gruenstein, Cheng-Kang Hsieh, and [Deborah Estrin](http://destrin.smalldata.io/). 2018. [OpenRec: A Modular Framework for Extensible and Adaptable Recommendation Algorithms.](https://ylongqi.com/paper/YangBGHE18.pdf) In Proceedings of WSDM’18, February 5–9, 2018, Marina Del Rey, CA, USA.
**2020-02-17** OpenRec now uses Tensorflow 2.0 by default. Supports for Tensorflow 1.x are deprecated (all prior APIs have been moved to `openrec.tf1`). Currently supported recommendation algorithms include:
* BPR (`openrec.tf2.recommenders.BPR`): Bayesian Personalized Ranking (Rendle et al., 2009)
* WRMF (`openrec.tf2.recommenders.WRMF`): Weighted Regularized Matrix Factorization (Hu et al., 2008)
* UCML (`openrec.tf2.recommenders.UCML`): Collaborative Metric Learning with uniformly sampled triplets (Hsieh et al., 2017)
* GMF (`openrec.tf2.recommenders.GMF`): Generalized Matrix Factorization, a.k.a., Neural Collaborative Filtering (He et al., 2017)
* DLRM (`openrec.tf2.recommenders.DLRM`): Deep Learning Recommendation Model, developed by Facebook (Naumov et al., 2019)**2019-07-12** OpenRec is being migrated to [Tensorflow 2.0](https://www.tensorflow.org/beta). Major changes to expect:
- All OpenRec modules will be compatible with [tf.keras.layers.Layer](https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/keras/layers/Layer), so that they can be used seamlessly with any Tensorflow 2.0 code base.
- All OpenRec models will be compatible with [tf.keras.Model](https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/keras/Model).
- All input data pipelines will be compatible with [tf.data.Dataset](https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/data/Dataset) but are made much more friendly for recommendation models.
- Minimizing boilerplate while keeping the modularity and adaptability of OpenRec.To get things started, we introduce OpenRec (Tensorflow 2.0) implementations of [deep learning recommendation model (DLRM)](https://github.com/facebookresearch/dlrm). Check out `tf2_examples/dlrm_criteo.py`.
To experiment with these new features, do `pip3 install .` inside the repo and then `import openrec.tf2`. You need to have Tensorflow 2.0 installed (Follow the instructions [here](https://www.tensorflow.org/beta)).
More examples, tutorials and documents will be available soon. Check out `tf2_examples/`.
**2018-08-31** Introducing new modular interfaces for OpenRec. Major changes:
- A new paradigm for defining, extending, and building recommenders.
- Remove boilerplate class structure of recommenders.
- Introduce a macro-based recommender construction paradigm.
- Disentangle module construction and connection.
- Support module construction directly using Tensorflow and Keras APIs.
- A more efficient and customizable pipeline for recommender training and evaluation.
- A new Dataset class for complex data input.
- A customizable ModelTrainer handling complex training/evaluation scenarios.
- Caching mechanism to speed up evaluation of complex recommenders.
- Provide model training and evaluation examples for new interfaces.More recommenders, examples, documents and tutorials are under development. Please checkout following events where we will present OpenRec new features:
*Strata Data Conference 2018:* https://conferences.oreilly.com/strata/strata-ny/public/schedule/detail/68280
*Recsys 2018:* https://recsys.acm.org/recsys18/tutorials/#content-tab-1-1-tab
**To use original openrec, simply import `openrec.legacy`**.
## Installation
Before installing OpenRec, please install [TensorFlow backend](https://www.tensorflow.org/install/) (GPU version is recommended).
- **Install OpenRec from PyPI (recommended):**
```sh
pip install openrec
```- **Install OpenRec from source code:**
First, clone OpenRec using `git`:
```sh
git clone https://github.com/ylongqi/openrec
```Then, `cd` to the OpenRec folder and run the install command:
```sh
cd openrec
python setup.py install
```## Dataset download
All datasets can be downloaded from Google drive [here](https://drive.google.com/drive/folders/1taJ91txiMAWBMUtezc_N5gaYuTEpvW_e?usp=sharing).
## Get started
* [OpenRec website](http://www.openrec.ai/)
* [OpenRec legacy documents](http://openrec.readthedocs.io/en/latest/)
* [OpenRec legacy tutorials](https://github.com/ylongqi/openrec/tree/master/legacy_tutorials)
* [OpenRec legacy examples](https://github.com/ylongqi/openrec/tree/master/legacy_examples)## How to cite
```
@inproceedings{yang2018openrec,
title={OpenRec: A Modular Framework for Extensible and Adaptable Recommendation Algorithms},
author={Yang, Longqi and Bagdasaryan, Eugene and Gruenstein, Joshua and Hsieh, Cheng-Kang and Estrin, Deborah},
booktitle={Proceedings of the Eleventh ACM International Conference on Web Search and Data Mining},
year={2018},
organization={ACM}
}
```## License
[Apache License 2.0](LICENSE)
## Funders