I'd say it this way: the matrix is *approximately* factored as Vapprox
= W * H'. Vapprox is like V but has slightly different values. But it
has values everywhere, not just where the 1s were. And so you just
look at the user's row in Vapprox and pick the top values (ignoring
items that were already known -- 1 in V) because there are the ones
that are inferred to be most like 1, which means you infer they
"should be" clicked and so are good recs.

You don't add a new row in this process. You just multiply the
existing row Wu times H' to make a vector of estimates, and take the
top values.

Are you asking how you fold in a new value, for brand-new users? Yes,
you certainly don't need to re-run the factorization, although
eventually you have to do that to "really" incorporate the new info
correctly. But you can fold in an approximation very quickly. It
involves computing a right inverse of H'. Here's my explanation of
that, towards the end of these slides:
http://www.slideshare.net/srowen/matrix-factorization

PS regarding your input model, I think you will want to use a slightly
more sophisticated model that can, say, incorporate the fact that you
viewed a video 10 times, and more. This is exactly what I'm using in
Myrrix -- see http://myrrix.com/design/. (In fact, you might be
interested in the ALS implementation which does something like NNMF;
it's open source.)

I recommend the Hu / Koren / Volinsky paper. They're doing exactly
what you are but the input model is smarter than just ignoring
everything but the association's existence.


On Wed, Jun 20, 2012 at 12:07 PM, janpm <[email protected]> wrote:
> Hello, I am doing my bachelor thesis and I have a question about non-negative
> matrix factorization.
>
> I am trying to use NNMF for a recommender system, but I am not sure how to
> make recommendations for new users. As an example, for every user there is a
> row, and the columns are the available videos. If the user watched a video,
> the corresponding column has a 1 in it, if not there is a 0. There are no
> user ratings.
>
> This matrix V gets factorized into W and H (V= W*H + Error). How can I use W
> and H to make recommendations for new users? Let´s say I already know some
> videos that the user watched. Do I have to add this user as a new row to V,
> and then re-run the NNMF algorithm? With the new W' and H' matrices, I could
> approximate V' = W' * H', and in the row of the new user, there should be
> videos that could be recommended. Do I understand this right? And is there a
> better way to do this than to re-run NNMF for every new user? (Another
> approach that I thought could work, if I compare the new-user-row with the
> feature matrix H, I could search for features that share similarities with
> the new-user-row.)
>
> With best regards,
> Jan
>
> --
> View this message in context: 
> http://lucene.472066.n3.nabble.com/NNMF-Recommendations-tp3990505.html
> Sent from the Mahout User List mailing list archive at Nabble.com.

Reply via email to