[scikit-learn] Does NMF optimise over observed values

Andreas Mueller t3kcit at gmail.com
Mon Aug 29 11:50:24 EDT 2016

On 08/28/2016 01:16 PM, Raphael C wrote:
> On Sunday, August 28, 2016, Andy <t3kcit at gmail.com 
> <mailto:t3kcit at gmail.com>> wrote:
>     On 08/28/2016 12:29 PM, Raphael C wrote:
>>     To give a little context from the web, see e.g.
>>     http://www.quuxlabs.com/blog/2010/09/matrix-factorization-a-simple-tutorial-and-implementation-in-python/
>>     <http://www.quuxlabs.com/blog/2010/09/matrix-factorization-a-simple-tutorial-and-implementation-in-python/> where
>>     it explains:
>>     "
>>     A question might have come to your mind by now: if we find two
>>     matrices \mathbf{P} and \mathbf{Q} such that \mathbf{P} \times
>>     \mathbf{Q} approximates \mathbf{R}, isn’t that our predictions of
>>     all the unseen ratings will all be zeros? In fact, we are not
>>     really trying to come up with \mathbf{P} and \mathbf{Q} such that
>>     we can reproduce \mathbf{R} exactly. Instead, we will only try to
>>     minimise the errors of the observed user-item pairs.
>>     "
>     Yes, the sklearn interface is not meant for matrix completion but
>     matrix-factorization.
>     There was a PR for some matrix completion for missing value
>     imputation at some point.
>     In general, scikit-learn doesn't really implement anything for
>     recommendation algorithms as that requires a different interface.
> Thanks Andy. I just looked up that PR.
> I was thinking simply producing a different factorisation optimised 
> only over the observed values wouldn't need a new interface. That in 
> itself would be hugely useful.
Depends. Usually you don't want to complete all values, but only compute 
a factorization. What do you return? Only the factors?
The PR implements completing everything, and that you can do with the 
transformer interface. I'm not sure what the status of the PR is,
but doing that with NMF instead of SVD would certainly also be interesting.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scikit-learn/attachments/20160829/047ba6f7/attachment-0001.html>

More information about the scikit-learn mailing list