后台小程序开发的全方位指南
849
2022-10-22
Cornac:推荐系统实验框架库
Cornac
Cornac is a comparative framework for multimodal recommender systems. It focuses on making it convenient to work with models leveraging auxiliary data (e.g., item descriptive text and image, social network, etc). Cornac enables fast experiments and straightforward implementations of new models. It is highly compatible with existing machine learning libraries (e.g., TensorFlow, PyTorch).
Quick Links
Website | Documentation | Tutorials | Examples | Models | Datasets | Paper | Preferred.AI
Installation
Currently, we are supporting python 3. There are several ways to install Cornac:
From PyPI (you may need a C++ compiler):
pip3 install cornac
From Anaconda:
conda install cornac -c conda-forge
From the GitHub source (for latest updates):
pip3 install Cythongit clone https://github.com/PreferredAI/cornac.gitcd cornacpython3 setup.py install
Note:
Additional dependencies required by models are listed here.
Some algorithm implementations use OpenMP to support multi-threading. For OSX users, in order to run those algorithms efficiently, you might need to install gcc from Homebrew to have an OpenMP compiler:
brew install gcc | brew link gcc
If you want to utilize your GPUs, you might consider:
TensorFlow installation instructions.PyTorch installation instructions.cuDNN (for Nvidia GPUs).
Getting started: your first Cornac experiment
Flow of an Experiment in Cornac
Load the built-in MovieLens 100K dataset (will be downloaded if not cached):
import cornacml_100k = cornac.datasets.movielens.load_feedback(variant="100K")
Split the data based on ratio:
rs = cornac.eval_methods.RatioSplit(data=ml_100k, test_size=0.2, rating_threshold=4.0, seed=123)
Here we are comparing Biased MF, PMF, and BPR:
mf = cornac.models.MF(k=10, max_iter=25, learning_rate=0.01, lambda_reg=0.02, use_bias=True, seed=123)pmf = cornac.models.PMF(k=10, max_iter=100, learning_rate=0.001, lambda_reg=0.001, seed=123)bpr = cornac.models.BPR(k=10, max_iter=200, learning_rate=0.001, lambda_reg=0.01, seed=123)
Define metrics used to evaluate the models:
mae = cornac.metrics.MAE()rmse = cornac.metrics.RMSE()prec = cornac.metrics.Precision(k=10)recall = cornac.metrics.Recall(k=10)ndcg = cornac.metrics.NDCG(k=10)auc = cornac.metrics.AUC()mAP = cornac.metrics.MAP()
Put everything together into an experiment and run it:
cornac.Experiment( eval_method=rs, models=[mf, pmf, bpr], metrics=[mae, rmse, recall, ndcg, auc, mAP], user_based=True).run()
Output:
MAE | RMSE | AUC | MAP | NDCG@10 | Precision@10 | Recall@10 | Train (s) | Test (s) | |
---|---|---|---|---|---|---|---|---|---|
MF | 0.7430 | 0.8998 | 0.7445 | 0.0407 | 0.0479 | 0.0437 | 0.0352 | 0.13 | 1.57 |
PMF | 0.7534 | 0.9138 | 0.7744 | 0.0491 | 0.0617 | 0.0533 | 0.0479 | 2.18 | 1.64 |
BPR | N/A | N/A | 0.8695 | 0.0753 | 0.0975 | 0.0727 | 0.0891 | 3.74 | 1.49 |
For more details, please take a look at our examples as well as tutorials.
Models
The recommender models supported by Cornac are listed below. Why don't you join us to lengthen the list?
Year | Model and paper | Additional dependencies | Examples |
---|---|---|---|
2018 | Collaborative Context Poisson Factorization (C2PF), paper | N/A | c2pf_exp.py |
Multi-Task Explainable Recommendation (MTER), paper | N/A | mter_exp.py | |
Probabilistic Collaborative Representation Learning (PCRL), paper | requirements.txt | pcrl_exp.py | |
Variational Autoencoder for Collaborative Filtering (VAECF), paper | requirements.txt | vaecf_citeulike.py | |
2017 | Collaborative Variational Autoencoder (CVAE), paper | requirements.txt | cvae_exp.py |
Generalized Matrix Factorization (GMF), paper | requirements.txt | ncf_exp.py | |
Indexable Bayesian Personalized Ranking (IBPR), paper | requirements.txt | ibpr_exp.py | |
Matrix Co-Factorization (MCF), paper | N/A | mcf_office.py | |
Multi-Layer Perceptron (MLP), paper | requirements.txt | ncf_exp.py | |
Neural Matrix Factorization (NeuMF) / Neural Collaborative Filtering (NCF), paper | requirements.txt | ncf_exp.py | |
Online Indexable Bayesian Personalized Ranking (Online IBPR), paper | requirements.txt | ||
Visual Matrix Factorization (VMF), paper | requirements.txt | vmf_clothing.py | |
2016 | Collaborative Deep Ranking (CDR), paper | requirements.txt | cdr_exp.py |
Collaborative Ordinal Embedding (COE), paper | requirements.txt | ||
Convolutional Matrix Factorization (ConvMF), paper | requirements.txt | convmf_exp.py | |
Spherical K-means (SKM), paper | N/A | ||
Visual Bayesian Personalized Ranking (VBPR), paper | requirements.txt | vbpr_tradesy.py | |
2015 | Collaborative Deep Learning (CDL), paper | requirements.txt | cdl_exp.py |
Hierarchical Poisson Factorization (HPF), paper | N/A | ||
2014 | Explicit Factor Model (EFM), paper | N/A | efm_exp.py |
Social Bayesian Personalized Ranking (SBPR), paper | N/A | sbpr_epinions.py | |
2013 | Hidden Factors and Hidden Topics (HFT), paper | N/A | hft_exp.py |
2012 | Weighted Bayesian Personalized Ranking (WBPR), paper | N/A | bpr_netflix.py |
2011 | Collaborative Topic Modeling (CTR), paper | N/A | ctr_citeulike.py |
Earlier | Baseline Only, paper | N/A | svd_exp.py |
Bayesian Personalized Ranking (BPR), paper | N/A | bpr_netflix.py | |
Global Average (GlobalAvg), paper | N/A | biased_mf.py | |
Item K-Nearest-Neighbors (ItemKNN), paper | N/A | knn_movielens.py | |
Matrix Factorization (MF), paper | N/A | biased_mf.py, given_data.py | |
Maximum Margin Matrix Factorization (MMMF), paper | N/A | mmmf_exp.py | |
Most Popular (MostPop), paper | N/A | bpr_netflix.py | |
Non-negative Matrix Factorization (NMF), paper | N/A | nmf_exp.py | |
Probabilistic Matrix Factorization (PMF), paper | N/A | pmf_ratio.py | |
Singular Value Decomposition (SVD), paper | N/A | svd_exp.py | |
Social Recommendation using PMF (SoRec), paper | N/A | sorec_filmtrust.py | |
User K-Nearest-Neighbors (UserKNN), paper | N/A | knn_movielens.py | |
Weighted Matrix Factorization (WMF), paper | requirements.txt | wmf_exp.py |
Support
Your contributions at any level of the library are welcome. If you intend to contribute, please:
Fork the Cornac repository to your own account.Make changes and create pull requests.
You can also post bug reports and feature requests in GitHub issues.
Citation
If you use Cornac in a scientific publication, we would appreciate citations to the following paper:
Cornac: A Comparative Framework for Multimodal Recommender Systems, Salah et al., JMLR 21, pp. 1-5, 2020.
Bibtex entry:
@article{cornac, author = {Aghiles Salah and Quoc-Tuan Truong and Hady W. Lauw}, title = {Cornac: A Comparative Framework for Multimodal Recommender Systems}, journal = {Journal of Machine Learning Research}, year = {2020}, volume = {21}, number = {95}, pages = {1-5}, url = {http://jmlr.org/papers/v21/19-805.html}}
License
Apache License 2.0
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~