# LIBPMF

• A library for large-scale parallel matrix factorization.
LIBPMF is a library for large-scale parallel matrix factorization.  Current it implements the CCD++ algorithm, which aims to solve large-scale matrix factorization problems for recommender systems. The software supports several programming languages (e.g., C/C++, Matlab, Python, and R).

### Version Information

• Version 1.4 is released on Sep 23, 2013. A Matlab interface is included.
• Version 1.3 is released on Aug 28, 2013. The option to support nonnegative constraints is included.
• Version 1.2 is released on July 18, 2013. We fix some bugs and include both Python and R interfaces.
• Version 1.1 is released on April 27, 2013. We improve the efficiency, fix the compile issue on Mac machines, and support arbitrary input ordering of ratings.

### Citation

This software is released under the GNU General Public License but please acknowledge its use with a citation to at least one of the following publications:
• Parallel Matrix Factorization for Recommender Systems (pdf, software)
H. Yu, C. Hsieh, S. Si, I. Dhillon.
Knowledge and Information Systems (KAIS) 41(3), pp. 793-819, December 2014.

## Usage

[Usage]: omp-pmf-train [options] data_dir [model_filename]
options:
-s type : set type of solver (default 0)
0 -- CCDR1 with a fundec stopping condition
-k rank : set the rank (default 10)
-l lambda : set the regularization parameter lambda (default 0.1)
-t max_iter: set the number of iterations (default 5)
-T max_iter: set the number of inner iterations used in CCDR1 (default 5)
-e epsilon : set inner termination criterion epsilon of CCDR1 (default 1e-3)
-p do_predict: do prediction or not (default 0)
-q verbose: show information or not (default 0)
-N do_nmf: do nmf (default 0)

For example, to train with the data toy-example/ with 4 threads, you can use

> ./omp-pmf-train -n 4 toy-example/

Please see REAEME attached in the tarball for more details.
For the users of Python and R, please refer the detailed README in each separate subdirectory.