Space: Apache Mahout (https://cwiki.apache.org/confluence/display/MAHOUT)
Page: Stochastic Singular Value Decomposition
(https://cwiki.apache.org/confluence/display/MAHOUT/Stochastic+Singular+Value+Decomposition)
Edited by Dmitriy Lyubimov:
---------------------------------------------------------------------
Stochastic SVD method in Mahout produces reduced rank Singular Value
Decomposition output in its strict mathematical definition: A=USV'.
h5. The benefits over other methods are:
* reduced flops required compared to Krylov subspace methods
* In map-reduce world, a fixed number of MR iterations required regardless of
rank requested
* Tweak precision/speed balance with options.
* A is a Distributed Row Matrix where rows may be identified by any Writable
(such as a document path). As such, it would work directly on the output of
seq2sparse.
map-reduce characteristics:
SSVD uses at most 3 MR _sequential_ steps (map-only + map-reduce + 2 optional
parallel map-reduce jobs) to produce reduced rank approximation of U, V and S
matrices. Additionally, two more map-reduce steps are added for each power
iteration step if requested.
h5. Potential drawbacks:
* potentially less precise (but adding even one power iteration seems to fix
that quite a bit).
h5. Documentation
[Overview and Usage|^SSVD-CLI.pdf]
Note: Please use 0.6 trunk or later!
h5. R simulation
[SSVD implementation flow in R with power iterations and PCA options|^ssvd.R].
Note that this implementation is not most optimal for sequential flow solver,
but it is for demonstration purposes only.
However, this is an R code to simulate a meaningful input:
{code:title=tests.R}
n<-1000
m<-2000
k<-10
qi<-1
#simulated input
svalsim<-diag(k:1)
usim<- qr.Q(qr(matrix(rnorm(m*k, mean=3), nrow=m,ncol=k)))
vsim<- qr.Q(qr( matrix(rnorm(n*k,mean=5), nrow=n,ncol=k)))
x<- usim %*% svalsim %*% t(vsim)
{code}
and try to compare ssvd.svd\(x\) and stock svd\(x\) performance for the same
rank k, notice the difference in the running time.
Change your notification preferences:
https://cwiki.apache.org/confluence/users/viewnotifications.action