sparsesvd | R Documentation |
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.
sparsesvd(M, rank=0L, tol=1e-15, kappa=1e-6)
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 κ of the SVD algorithm (with SVDLIBC default) |
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 |
u |
a column matrix of the first r left singular vectors of |
v |
a column matrix of the first r right singular vectors of |
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.
svd
, sparseMatrix
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
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.