polylearn

A library for factorization machines and polynomial networks for classification and regression in Python.

Github repository.

https://travis-ci.org/scikit-learn-contrib/polylearn.svg?branch=master https://ci.appveyor.com/api/projects/status/g9xnar9081l3vsw7/branch/master?svg=true https://coveralls.io/repos/scikit-learn-contrib/polylearn/badge.svg?branch=master&service=github https://circleci.com/gh/scikit-learn-contrib/polylearn/tree/master.svg?style=shield&circle-token=:circle-token

Factorization machines and polynomial networks are machine learning models that can capture feature interaction (co-occurrence) through polynomial terms. Because feature interactions can be very sparse, it’s common to use low rank, factorized representations; this way, we can learn weights even for feature co-occurrences that haven’t been observed at training time.

Factorization machines are popular for recommender systems, as they are a generalization of matrix completion models.

This package provides:

Installation

Binary packages are not yet available.

The development version of polylearn can be installed from its git repository. In this case it is assumed that you have a working C++ compiler.

  1. Obtain the sources by:

    git clone https://github.com/scikit-learn-contrib/polylearn.git
    

or, if git is unavailable, download as a ZIP from GitHub.

  1. Install the dependencies:

    # via pip
    
    pip install numpy scipy scikit-learn nose
    pip install sklearn-contrib-lightning
    
    
    # via conda
    
    conda install numpy scipy scikit-learn nose
    conda install -c conda-forge sklearn-contrib-lightning
    
  2. Build and install polylearn:

    cd polylearn
    python setup.py build
    sudo python setup.py install
    

References

The solvers implemented are introduced in [1]. Factorization machines are introduced in [2] and polynomial networks in [3].

[1]Mathieu Blondel, Masakazu Ishihata, Akinori Fujino, Naonori Ueda. Polynomial Networks and Factorization Machines: New Insights and Efficient Training Algorithms. In: Proc. of ICML 2016. [PDF]
[2]Steffen Rendle. Factorization machines. In: Proc. of IEEE ICDM 2010. [PDF]
[3]Roi Livni, Shai Shalev-Shwartz, Ohad Shamir. On the computational efficiency of training neural networks. In: Proc. of NIPS 2014. [arXiv]

Authors

  • Vlad Niculae, 2016-present