Hello all,

in what cases would a decomposition with FluidBufNNDSVD before BufNMF prove to be an advantageous over just using the latter? Is it to estimate the number of components on a given buffer?

Thanks!

Jan

Hello all,

in what cases would a decomposition with FluidBufNNDSVD before BufNMF prove to be an advantageous over just using the latter? Is it to estimate the number of components on a given buffer?

Thanks!

Jan

Hi @jan,

Good question! We definitely need to find a way of making this clearer. Itâs not only for estimating the number of components, but also for providing some better-than-random initial values for the `bases`

and `activations`

buffers using a less expensive process. By default NMF will use random matrices as its initial conditions. But, because the possible solutions arenât unique, random initialisation can mean that it doesnât always converge to a âgoodâ solution.

Using NNDSVD allows one to use a reasonably criterion (how much of the variance of the source to preserve) to come up with a number of components and some starting values that would help NMF converge more quickly to a useful decomposition.

Better documentation is still in progress, but the sklearn NMF page has some explanation of what the tradeoffs for each mode are.

1 Like

Hi @weefuzzy,

thanks for the explanation, iâll look into the page youâve linked!

Would that also mean for example that using NNDSVD on buffer A, providing bases & activations for NMF on audio buffer B that would results in a sort of âcross synthesisâ in which the convergence moves from A to B?

Jan

I fear it wouldnât work reliably

- because NMF will converge to the nearest decent looking âsolutionâ, thereâs no guarantee it would be one that made much sense for âBâ from a starting point of âAâ
- the rate of converge isnât very uniform: it tends to get much of the adjustment done in the first few iterations, so even if you go a single iteration at a time, there may well not be a satisfying sense of translation from one to the other