R: Find the Largest k Singular Values/Vectors of a Matrix

svds {rARPACK} | R Documentation

## Find the Largest k Singular Values/Vectors of a Matrix

### Description

This function is a simple wrapper of the `svds()` function in the RSpectra package. Also see the documentation there.

Given an m by n matrix A, function `svds()` can find its largest k singular values and the corresponding singular vectors. It is also called the Truncated Singular Value Decomposition since it only contains a subset of the whole singular triplets.

Currently `svds()` supports matrices of the following classes:

`matrix` | The most commonly used matrix type, defined in base package.
`dgeMatrix` | General matrix, equivalent to `matrix`, defined in Matrix package.
`dgCMatrix` | Column oriented sparse matrix, defined in Matrix package.
`dgRMatrix` | Row oriented sparse matrix, defined in Matrix package.
`dsyMatrix` | Symmetrix matrix, defined in Matrix package.

Note that when A is symmetric, SVD reduces to eigen decomposition, so you may consider using `eigs()` instead.

### Usage

    svds(A, k, nu = k, nv = k, opts = list(), ...)

### Arguments

`A` | The matrix whose truncated SVD is to be computed.
`k` | Number of singular values requested.
`nu` | Number of left singular vectors to be computed. This must be between 0 and `k`.
`nv` | Number of right singular vectors to be computed. This must be between 0 and `k`.
`opts` | Control parameters related to the computing algorithm. See Details below.
`...` | Currently not used.

### Details

The `opts` argument is a list that can supply any of the following parameters:

`ncv`

  Number of Lanzcos basis vectors to use. More vectors will result in faster convergence, but with greater memory use. `ncv` must be satisfy k < ncv <= p where `p = min(m, n)`. Default is `min(p, max(2*k+1, 20))`.

`tol`

  Precision parameter. Default is 1e-10.

`maxitr`

  Maximum number of iterations. Default is 1000.

### Value

A list with the following components:

`d` | A vector of the computed singular values.
`u` | An `m` by `nu` matrix whose columns contain the left singular vectors. If `nu == 0`, `NULL` will be returned.
`v` | An `n` by `nv` matrix whose columns contain the right singular vectors. If `nv == 0`, `NULL` will be returned.
`nconv` | Number of converged singular values.
`niter` | Number of iterations used.
`nops` | Number of matrix-vector multiplications used.

### Author(s)

Yixuan Qiu <http://statr.me>

### See Also

`eigen()`, `svd()`, `eigs()`.

### Examples

    m = 100
    n = 20
    k = 5
    set.seed(111)
    A = matrix(rnorm(m * n), m)

    svds(A, k)
    svds(t(A), k, nu = 0, nv = 3)

    ## Sparse matrices
    library(Matrix)
    A[sample(m * n, m * n / 2)] = 0
    Asp1 = as(A, "dgCMatrix")
    Asp2 = as(A, "dgRMatrix")

    svds(Asp1, k)
    svds(Asp2, k, nu = 0, nv = 0)

[Package rARPACK version 0.11-0 Index]