mahout-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jake Mannix <>
Subject Re: Understanding the SVD recommender
Date Thu, 10 Jun 2010 07:18:40 GMT
On Thu, Jun 10, 2010 at 12:11 AM, Jake Mannix <> wrote:

> The second term is just the row-average of row-i times v.zSum(), and the
> last term is a constant for all values in the output vector, and is just (A
> . v).zSum().
> So no additional map-reduces are needed to incorporate this - it's just
> that the Lanczos solver will need to be told about the row and column
> averages of the
input and optionally at each Lanczos iteration, modify the resultant vector
> as above.

I should caution here: the simple form of my modification only would work in
exactly that way if the input matrix is symmetric.  When it's not symmetric,
the inner loop of Lanczos isn't A . v, but A.timesSquared(v) = (A' . A).v,
and so if you shift A, you will need to be slightly more clever about how
you peel out the matrix of mean values.  It can certainly be done sparsely
still (at worst, compute (A - B).v, then (A - B)'.v !), but I'm not sure if
you can do it in the k mapreduce steps that you can do it in the uncentered
form (it might take the 2k that the previous parenthetical remark implies).


  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message