Fast Truncated Singular Value Decomposition and Principal Components Analysis for Large Dense and Sparse Matrices

Fast and memory efficient methods for truncated singular value decomposition and principal components analysis of large sparse and dense matrices.


irlba

Implicitly-restarted Lanczos methods for fast truncated singular value decomposition of sparse and dense matrices (also referred to as partial SVD). IRLBA stands for Augmented, Implicitly Restarted Lanczos Bidiagonalization Algorithm. The package provides the following functions (see help on each for details and examples).

  • irlba() partial SVD function
  • ssvd() l1-penalized matrix decomposition for sparse PCA (based on Shen and Huang's algorithm)
  • prcomp_irlba() principal components function similar to the prcomp function in stats package for computing the first few principal components of large matrices
  • svdr() alternate partial SVD function based on randomized SVD (see also the rsvd package by N. Benjamin Erichson for an alternative implementation)
  • partial_eigen() a very limited partial eigenvalue decomposition for symmetric matrices (see the RSpectra package for more comprehensive truncated eigenvalue decomposition)

Help documentation for each function includes extensive documentation and examples. Also see the package vignette, vignette("irlba", package="irlba").

An overview web page is here: https://bwlewis.github.io/irlba/.

New in 2.4.1

  • Re-factored and minimized C code, limiting its use to fast dense matrix multiplication. This change simplifies the package, largely preserves performance for the dense case, and expands Matrix/sparse support to more Matrix classes. It also eliminates direct use of internal hard-to-support SuiteSparse methods. The fastpath option is deprecated.
  • Finally added support for efficient model deflation (see examples). That means that if your partial SVD subspace isn't big enough, you can efficiently carry on the algorithm from where you left off. This works for smallest and largest portions of the subspace. User-facing behavior is unchanged, but runs more efficiently now.
  • Test coverage is expanded.
  • Default tolerance slightly reduced and work dimension slightly increased for better default accuracy with minor performance cost.
  • Despite the significant internal changes and aside from the above tolerance changes, everything should work as before.

New in 2.3.3

  • Several important reported problems with sparse matrices other than class dgCMatrix and prcomp_irlba, and many bug fixes contributed by Aaron Lun, see for instance: https://github.com/bwlewis/irlba/issues/47.

New in 2.3.2

New in Version 2.3.1

Deprecated features

I will remove partial_eigen() in a future version. As its documentation states, users are better off using the RSpectra package for eigenvalue computations (although not generally for singular value computations).

References

  • Baglama, James, and Lothar Reichel. "Augmented implicitly restarted Lanczos bidiagonalization methods." SIAM Journal on Scientific Computing 27.1 (2005): 19-42.
  • Halko, Nathan, Per-Gunnar Martinsson, and Joel A. Tropp. "Finding structure with randomness: Stochastic algorithms for constructing approximate matrix decompositions." (2009).
  • Shen, Haipeng, and Jianhua Z. Huang. "Sparse principal component analysis via regularized low rank matrix approximation." Journal of multivariate analysis 99.6 (2008): 1015-1034.
  • Witten, Daniela M., Robert Tibshirani, and Trevor Hastie. "A penalized matrix decomposition, with applications to sparse principal components and canonical correlation analysis." Biostatistics 10.3 (2009): 515-534.

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.