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    

Reply via email to