Skip to main content

A Comparative Framework for Multimodal Recommender Systems

Project description

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 | Preferred.AI

TravisCI CircleCI AppVeyor Codecov Docs
Release PyPI Conda Conda Recipe
Python License

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 Cython
git clone https://github.com/PreferredAI/cornac.git
cd cornac
python3 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:

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 cornac

ml_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()
recall = cornac.metrics.Recall(k=[10, 20])
ndcg = cornac.metrics.NDCG(k=[10, 20])
auc = cornac.metrics.AUC()

Put everything together into an experiment and run it:

cornac.Experiment(eval_method=rs,
                  models=[mf, pmf, bpr],
                  metrics=[mae, rmse, recall, ndcg, auc],
                  user_based=True).run()

Output:

MAE RMSE AUC NDCG@10 NDCG@20 Recall@10 Recall@20 Train (s) Test (s)
MF 0.7430 0.8998 0.7445 0.0479 0.0556 0.0352 0.0654 0.13 1.57
PMF 0.7534 0.9138 0.7744 0.0617 0.0719 0.0479 0.0880 2.18 1.64
BPR N/A N/A 0.8695 0.0975 0.1129 0.0891 0.1449 3.74 1.49

For more details, please take a look at our examples.

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.

License

Apache License 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cornac-1.5.0.tar.gz (7.0 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

cornac-1.5.0-cp37-cp37m-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.7mWindows x86-64

cornac-1.5.0-cp37-cp37m-manylinux1_x86_64.whl (9.9 MB view details)

Uploaded CPython 3.7m

cornac-1.5.0-cp37-cp37m-macosx_10_9_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

cornac-1.5.0-cp36-cp36m-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.6mWindows x86-64

cornac-1.5.0-cp36-cp36m-manylinux1_x86_64.whl (10.0 MB view details)

Uploaded CPython 3.6m

cornac-1.5.0-cp36-cp36m-macosx_10_9_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.6mmacOS 10.9+ x86-64

cornac-1.5.0-cp35-cp35m-manylinux1_x86_64.whl (9.7 MB view details)

Uploaded CPython 3.5m

File details

Details for the file cornac-1.5.0.tar.gz.

File metadata

  • Download URL: cornac-1.5.0.tar.gz
  • Upload date:
  • Size: 7.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3.post20200330 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.10

File hashes

Hashes for cornac-1.5.0.tar.gz
Algorithm Hash digest
SHA256 e133451234dd1518108a0b7219817473095f192ed6ffebef9c8bb17bcc892211
MD5 2cd4ad6721398c52688ef21b5c4d0880
BLAKE2b-256 34d65c03e5a674a99e7a7ff223c66ab3c7153a8e4e171f3d8454c7caa9fe591b

See more details on using hashes here.

File details

Details for the file cornac-1.5.0-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: cornac-1.5.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 2.0 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3.post20200330 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.7

File hashes

Hashes for cornac-1.5.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 8ef4b8794f78e923031939d328872c697f5d0fb74c84bceb9186aba73efbe18a
MD5 df7e696e63b1ce85dae5e81b4a993837
BLAKE2b-256 1d84e07559675efd134c8d334219c3d6ff2550bed40327daec0caf19ced74e10

See more details on using hashes here.

File details

Details for the file cornac-1.5.0-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

  • Download URL: cornac-1.5.0-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 9.9 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.6.8

File hashes

Hashes for cornac-1.5.0-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 9afc0a15725238cd45d15c309a911b5ac8016eeda7e0db5321f7ee407e5f2d0e
MD5 462c2482173ac6cc37800a7c76a4b076
BLAKE2b-256 10efcaf03d3324eb754d4230dc86af309b3d4ade5f29fc92bb1ab60fa333c47e

See more details on using hashes here.

File details

Details for the file cornac-1.5.0-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: cornac-1.5.0-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 3.0 MB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3.post20200330 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.7

File hashes

Hashes for cornac-1.5.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c16ea046c260ad20c57a4b9863a45aeb65e998fc7dd120a15be70a22007a07cf
MD5 1785dd3d9a609e298704f4da0c4e3228
BLAKE2b-256 7e0f2b978d1ef22088b74b9fe6c0199fd8d0cad9fdff11d9105a498fab5c7fcb

See more details on using hashes here.

File details

Details for the file cornac-1.5.0-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: cornac-1.5.0-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 2.0 MB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3.post20200330 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.10

File hashes

Hashes for cornac-1.5.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 b799d6288d767289dc9828722b40df7bdd1a422a51d3586d7fb62c4eee5129a2
MD5 b02faba6254e11852e440b19e36e2ab9
BLAKE2b-256 b9b91c805cac75351208bcc5110c11d30269b7b5e26587b8a3cb8a8297762732

See more details on using hashes here.

File details

Details for the file cornac-1.5.0-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

  • Download URL: cornac-1.5.0-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 10.0 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.6.8

File hashes

Hashes for cornac-1.5.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 aa1ebfcadcc4b2c184967d5c25a105821e20adce65041fd22b75f641b09e132b
MD5 26d6c5e193042e324b56541658d36db4
BLAKE2b-256 91e8b5479500eef6baeb057d3031757e5ea0ae266324e57152a10be8323e8710

See more details on using hashes here.

File details

Details for the file cornac-1.5.0-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: cornac-1.5.0-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 3.0 MB
  • Tags: CPython 3.6m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3.post20200330 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.10

File hashes

Hashes for cornac-1.5.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e082a4217c7360fd7590496aff3837894445bde921e53f794b8a5c51f684de38
MD5 7426ba88ee559d0364a5182938612618
BLAKE2b-256 4e2ae74d48bd80423cac6aa9929bb7c9134c6bac688bd565a3daa9837ca8621f

See more details on using hashes here.

File details

Details for the file cornac-1.5.0-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

  • Download URL: cornac-1.5.0-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 9.7 MB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.6.8

File hashes

Hashes for cornac-1.5.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 c4c3b6c7e3f8e3ae8932a17522c844cc13d6b28983f658a7cd9af6eeb39ca097
MD5 b7b7e02ae691e071ebb5d1f175d36adc
BLAKE2b-256 7b6eac4db4b943c9b1270d979bb5fb5478f0101f9f00dad62cb68ca71725477c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page