A library for factorization machines and polynomial networks for classification and regression in Python.
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:
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.
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.
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
Build and install polylearn:
cd polylearn
python setup.py build
sudo python setup.py install
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] |