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 |
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 |
exclude singular values whose magnitude is smaller than |
kappa |
accuracy parameter |
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 |
u |
a column matrix of the first |
v |
a column matrix of the first |
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