# 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).

### Download

Please download the file from here.### 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. - Scalable Coordinate Descent Approaches to Parallel Matrix Factorization for Recommender Systems (pdf, software)

H. Yu, C. Hsieh, S. Si, I. Dhillon.

In*IEEE International Conference on Data Mining (ICDM)*, pp. 765-774, December 2012. (**Oral**)

### Additional Information

## 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) -n threads : set the number of threads (default 4) -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.