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 | 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 of the algorithms 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):

from cornac.datasets import movielens

ml_100k = movielens.load_100k()

Split the data based on ratio:

from cornac.eval_methods import RatioSplit

ratio_split = RatioSplit(data=ml_100k, test_size=0.2, rating_threshold=4.0, seed=123)

Here we are comparing Biased MF, PMF, and BPR:

from cornac.models import MF, PMF, BPR

mf = MF(k=10, max_iter=25, learning_rate=0.01, lambda_reg=0.02, use_bias=True)
pmf = PMF(k=10, max_iter=100, learning_rate=0.001, lamda=0.001)
bpr = BPR(k=10, max_iter=200, learning_rate=0.001, lambda_reg=0.01)

Define metrics used to evaluate the models:

mae = cornac.metrics.MAE()
rmse = cornac.metrics.RMSE()
rec_20 = cornac.metrics.Recall(k=20)
ndcg_20 = cornac.metrics.NDCG(k=20)
auc = cornac.metrics.AUC()

Put everything together into an experiment and run it:

from cornac import Experiment

exp = Experiment(eval_method=ratio_split,
                 models=[mf, pmf, bpr],
                 metrics=[mae, rmse, rec_20, ndcg_20, auc],
                 user_based=True)
exp.run()

Output:

MAE RMSE Recall@20 NDCG@20 AUC Train (s) Test (s)
MF 0.7441 0.9007 0.0622 0.0534 0.2952 0.0791 1.3119
PMF 0.7490 0.9093 0.0831 0.0683 0.4660 8.7645 2.1569
BPR N/A N/A 0.1449 0.1124 0.8750 0.8898 1.3769

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
Probabilistic Collaborative Representation Learning (PCRL), paper requirements.txt pcrl_exp.py
Variational Autoencoder for Collaborative Filtering (VAECF), paper requirements.txt
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
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
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
Matrix Factorization (MF), paper N/A biased_mf.py, given_data.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
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.1.2.tar.gz (3.4 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.1.2-cp37-cp37m-manylinux1_x86_64.whl (6.8 MB view details)

Uploaded CPython 3.7m

cornac-1.1.2-cp36-cp36m-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.6mWindows x86-64

cornac-1.1.2-cp36-cp36m-manylinux1_x86_64.whl (6.9 MB view details)

Uploaded CPython 3.6m

cornac-1.1.2-cp36-cp36m-macosx_10_7_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.6mmacOS 10.7+ x86-64

cornac-1.1.2-cp35-cp35m-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.5mWindows x86-64

cornac-1.1.2-cp35-cp35m-manylinux1_x86_64.whl (6.6 MB view details)

Uploaded CPython 3.5m

cornac-1.1.2-cp35-cp35m-macosx_10_6_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.5mmacOS 10.6+ x86-64

File details

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

File metadata

  • Download URL: cornac-1.1.2.tar.gz
  • Upload date:
  • Size: 3.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.36.0 CPython/3.5.6

File hashes

Hashes for cornac-1.1.2.tar.gz
Algorithm Hash digest
SHA256 0a601eb774a68916b84e444e26bbf6a06643faac008fe4c8f8942851cb9983ea
MD5 862b0f631696dfc9c25e05c678161943
BLAKE2b-256 4e0e3268418f2c5f5c4bc4d58104c25566dc81403e5d3e3edbd4638e747e02b5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cornac-1.1.2-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 6.8 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.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.8

File hashes

Hashes for cornac-1.1.2-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 cbda1f92309e0754c983b5fe6836c95d0ee21a0915f99de7c639e6091f378ced
MD5 7f03ee9d08fcd520d6a3d9670c16dff5
BLAKE2b-256 c929dffc270b6cce81399de02be561f9d3bbbdba163372fb03504707e57d60c5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cornac-1.1.2-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.36.0 CPython/3.6.7

File hashes

Hashes for cornac-1.1.2-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 feefbb45b71751ea10c680f1b62a12c934ce87d78cd3bbb8df6597dbaa5034a1
MD5 0ffbe4991b3020a3d2b9b44566b59cad
BLAKE2b-256 0b35f08b5ded29005bc873490ca9b6176c3b9d70b9bc51f6bbfa2342a5cc5c34

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cornac-1.1.2-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 6.9 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.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.8

File hashes

Hashes for cornac-1.1.2-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 d50e61d27c8ffbe81c25ae746291064c69f94706056b631472cb009c9bfc817c
MD5 0ddd7b56c365f6e154e7d69b2e6203f5
BLAKE2b-256 8adbd960ae7e6c1cb65f09f1eb6cbebd96519f266b997e4d035cdc418ca96c2b

See more details on using hashes here.

File details

Details for the file cornac-1.1.2-cp36-cp36m-macosx_10_7_x86_64.whl.

File metadata

  • Download URL: cornac-1.1.2-cp36-cp36m-macosx_10_7_x86_64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: CPython 3.6m, macOS 10.7+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.36.0 CPython/3.6.9

File hashes

Hashes for cornac-1.1.2-cp36-cp36m-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 42f463c69ebcb50a1bc78a541981021825f71893c354f65fe46278b976a7552b
MD5 4e61e10f4feb91883cbfa4cac8773e47
BLAKE2b-256 dbf9bddebe3939bf7fc36a820e46024c121d8158696bad4065534688f9ba1772

See more details on using hashes here.

File details

Details for the file cornac-1.1.2-cp35-cp35m-win_amd64.whl.

File metadata

  • Download URL: cornac-1.1.2-cp35-cp35m-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.5m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.2.0 requests-toolbelt/0.9.1 tqdm/4.36.0 CPython/3.5.6

File hashes

Hashes for cornac-1.1.2-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 1eb07e501da47e7a3a4d148aa8f1c77748c68ade0a21930f21ac4d7b6ae56b0f
MD5 57a7471b005c86700f6e879368955f04
BLAKE2b-256 b989f56d9c348d87478fb696d1da766318e94f6d7c14c0f18d4d436d8144247a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cornac-1.1.2-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 6.6 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.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.8

File hashes

Hashes for cornac-1.1.2-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 9e6d7c7ff4ab5e3b18d80d56d4adce8c4f71b35629f1ea86cf213fd64475417d
MD5 612e62f2c21a01ad9c5dd85c29ef3e69
BLAKE2b-256 56fefb7e1b0828b4497f541a7ce32f7657deeb849376febdb9ad167b2a183904

See more details on using hashes here.

File details

Details for the file cornac-1.1.2-cp35-cp35m-macosx_10_6_x86_64.whl.

File metadata

  • Download URL: cornac-1.1.2-cp35-cp35m-macosx_10_6_x86_64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.5m, macOS 10.6+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.36.0 CPython/3.5.6

File hashes

Hashes for cornac-1.1.2-cp35-cp35m-macosx_10_6_x86_64.whl
Algorithm Hash digest
SHA256 aa35fe5e51b9b93207b077a1d1f1b153e7686200b569ca38cb92804d8dc911a8
MD5 dc786dc86c150e4969b9069c1c823583
BLAKE2b-256 4b58538f26abe3300f3a3956f389c1281aeb33726da3c62ba50706449b49504f

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