R: Singular Value Decomposition of a Sparse Matrix.

sparsesvd {sparsesvd} | R Documentation

## 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 κ 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

http://tedlab.mit.edu/~dr/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

[Package sparsesvd version 0.2 Index]