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.
