Hi,
Is it true to say that : 1) Any matrix factorisation of a given matrix X can be done via truncated SVD (i.e. by projecting X onto the K first left singular vectors of X)?
2) In particular, a matrix factorisation for a given sparse matrix X (of dimension D*N) for a recommender system for instance (with missing values) can be done using truncated SVD , where missing values are replaced by null or random values ?
Yes, if you want to factorize (or approximate) X as the product of two low-rank matrices A B^T, computing the SVD of X and only keeping the top singular values is can be a good approach.
For recommender systems, the problem with the missing entries, is that you don't really know how to fill those in. I don't think just filling in zeros or random values is a good solution. (it would not give the same result as the methods discussed in class.) SVD is also quite an expensive operation (comparable to matrix inversion). If your matrix is very sparse, it would be wasteful to use SVD on a filled-in matrix for this purpose.
matrix factorisation with SVD
Hi,
Is it true to say that : 1) Any matrix factorisation of a given matrix X can be done via truncated SVD (i.e. by projecting X onto the K first left singular vectors of X)?
2) In particular, a matrix factorisation for a given sparse matrix X (of dimension D*N) for a recommender system for instance (with missing values) can be done using truncated SVD , where missing values are replaced by null or random values ?
Thanks
Yes, if you want to factorize (or approximate) X as the product of two low-rank matrices A B^T, computing the SVD of X and only keeping the top singular values is can be a good approach.
For recommender systems, the problem with the missing entries, is that you don't really know how to fill those in. I don't think just filling in zeros or random values is a good solution. (it would not give the same result as the methods discussed in class.) SVD is also quite an expensive operation (comparable to matrix inversion). If your matrix is very sparse, it would be wasteful to use SVD on a filled-in matrix for this purpose.
Hope this answers your question.
1
You can also read this for missing entries
Add comment