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


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.


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.
  • Additional Information


    [Usage]: omp-pmf-train [options] data_dir [model_filename]
    	-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.

    Developers: Hsiang-Fu Yu   Cho-Jui Hsieh   

    Associated Project: Large-Scale Recommender Systems