Title: Sparse Truncated Singular Value Decomposition (from 'SVDLIBC')
Version: 0.2-2
Date: 2023-01-14
Description: Wrapper around the 'SVDLIBC' library for (truncated) singular value decomposition of a sparse matrix. Currently, only sparse real matrices in Matrix package format are supported.
Depends: R (≥ 3.0)
Imports: Matrix (≥ 1.3), methods
License: BSD_3_clause + file LICENSE
URL: https://github.com/lucasmaystre/svdlibc, http://wordspace.r-forge.r-project.org/
NeedsCompilation: yes
Packaged: 2023-01-14 18:45:27 UTC; ex47emin
Author: Doug Rohde [aut], Michael Berry [aut], Theresa Do [aut], Gavin O'Brien [aut], Vijay Krishna [aut], Sowmini Varadhan [aut], University of Tennessee Research Foundation [cph] (files src/las2.c, src/svdlib.[ch], src/svdutil.[ch]), Stephanie Evert [cre, aut, cph] (copyright holder for files src/main.c, R/*, man/*, tests/*)
Maintainer: Stephanie Evert <stephanie.evert@fau.de>
Repository: CRAN
Date/Publication: 2023-01-14 19:40:02 UTC

Singular Value Decomposition of a Sparse Matrix.

Description

Compute the (usually truncated) singular value decomposition (SVD) of a sparse real matrix. This function is a shallow wrapper around the SVDLIBC implementation of Berry's (1992) single Lanczos algorithm.

Usage

  sparsesvd(M, rank=0L, tol=1e-15, kappa=1e-6)

Arguments

M

a sparse real matrix in Matrix package format. The preferred format is a dgCMatrix and other storage formats will automatically be converted if possible.

rank

an integer specifying the desired number of singular components, i.e. the rank of the truncated SVD. Specify 0 to return all singular values of magnitude larger than tol (default).

tol

exclude singular values whose magnitude is smaller than tol

kappa

accuracy parameter \kappa of the SVD algorithm (with SVDLIBC default)

Value

The truncated SVD decomposition

M_r = U_r D V_r^T

where M_r is the optimal rank r approximation of M. Note that r may be smaller than the requested number rank of singular components.

The returned value is a list with components

d

a vector containing the first r singular values of M

u

a column matrix of the first r left singular vectors of M

v

a column matrix of the first r right singular vectors of M

References

The SVDLIBC homepage http://tedlab.mit.edu/~dr/SVDLIBC/ seems to be no longer available. A copy of the source code can be obtained from https://github.com/lucasmaystre/svdlibc.

Berry, Michael~W. (1992). Large scale sparse singular value computations. International Journal of Supercomputer Applications, 6, 13–49.

See Also

svd, sparseMatrix

Examples

M <- rbind(
  c(20, 10, 15,  0,  2),
  c(10,  5,  8,  1,  0),
  c( 0,  1,  2,  6,  3),
  c( 1,  0,  0, 10,  5))
M <- Matrix::Matrix(M, sparse=TRUE)
print(M)

res <- sparsesvd(M, rank=2L) # compute first 2 singular components
print(res, digits=3)

M2 <- res$u %*% diag(res$d) %*% t(res$v) # rank-2 approximation
print(M2, digits=1)

print(as.matrix(M) - M2, digits=2) # approximation error