Hi Olivier,

Just a quick answer (I am on holidays, skying :} ). Please forget me for
being a bit direct in this email: I don't have much time in front of the
computer.

My gut feeling is that the algorithms that you propose are in the scope
of the scikit. I do not think that they are a duplication of the existing
work either. So in general, I think that they are eligible for
inclusion. However, they need to be implementatble with a reasonnable
amount of lines of code: as usual it is a tradeof between features added
and maintenance in the long run. I don't have enough knowledge on these
problems to know whether they are going to bring in thousands of lines of
code or simply hundreds. Also, another important question is whether
these algorithms can be made efficient with a Python implementation.

Maybe before submitting a pull request, you have some code to show that
we could study a bit to have a better idea of what this entails.

Thanks a lot for your proposal, it is interesting,

Gael

On Tue, Mar 13, 2012 at 10:32:58AM +0100, Olivier Mangin wrote:
> Hello,

> Since I am currently using NMF for my robotics research, I have an 
> implementation of some algorithms from [1]_ that could extend 
> scikit-learn current implementation.

> More precisely the current implementation covers the Frobenius norm case 
> (for measuring the reconstruction error), and the sparsity enforcement 
> method introduced on [2]_. [1]_ describes algorithms that generalize to 
> all the beta-divergences (Frobenius norm corresponds to beta = 2), and 
> adaptation of some of these algorithms to L_1 regularization (amongst 
> other things).

> My implementation covers algorithms for beta-divergence minimization 
> based on three kind of approaches presented in [1]_:
> * gradient descent
> * maximization-minimization (that leads to multiplicative updates)
> * heuristic update (generalizes to all beta, multiplicative updates 
> commonly used for NMF with Frobenius (beta = 2) norm, Kullback-Leibler 
> (beta = 1) and Itakura-Saito (beta = 0) divergences)

> I was planning to integrate my code into a BetaNMF class in 
> 'sklearn/decomposition/nmf.py' as an alternative to the existing 
> ProjectedGradientNMF, and to enable access to the various algorithms 
> through arguments to the fit and transform method (I think default 
> should be heuristic multiplicative updates).

> Is this duplicated work ? Is it the right way to do it ?

> Thanks,

> Olivier Mangin


> .. [1] Févotte, C., & Idier, J. (2011). Algorithms for nonnegative 
> matrix factorization with the β-divergence. Neural Computation, 29(9), 
> 2421-2456. doi:http://dx.doi.org/10.1162/NECO_a_00168
> .. [2] Hoyer, P. O. (2004). Non-negative Matrix Factorization with 
> Sparseness Constraints. Journal of Machine Learning Research, 5, 1457-1469.

> ------------------------------------------------------------------------------
> This SF email is sponsosred by:
> Try Windows Azure free for 90 days Click Here 
> http://p.sf.net/sfu/sfd2d-msazure
> _______________________________________________
> Scikit-learn-general mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/scikit-learn-general

-- 
    Gael Varoquaux
    Researcher, INRIA Parietal
    Laboratoire de Neuro-Imagerie Assistee par Ordinateur
    NeuroSpin/CEA Saclay , Bat 145, 91191 Gif-sur-Yvette France
    Phone:  ++ 33-1-69-08-79-68
    http://gael-varoquaux.info

------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Scikit-learn-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/scikit-learn-general

Reply via email to