pints-team / pints

Probabilistic Inference on Noisy Time Series
http://pints.readthedocs.io
Other
225 stars 33 forks source link

Hierarchy of methods #209

Closed sanmitraghosh closed 6 years ago

sanmitraghosh commented 6 years ago

As requested by @MichaelClerx :

MCMC : i)AdaptiveCovariance, DREAM ii) Netsed sampling iii) Particle based ones--PopulationMCMC, SMC iv) Likelihood free ---ABCMCMC, ABCSMC v) Score function based---MALA, HMC, NUTS vi) DifferentialGeomtric ones---smMALA, RMHMC

Optimisation : i)PSO, GA ii) Info Geometric ones ---CMAES, XNES, SNES.

I have given an exhaustive list, probably all of these wont be implemented (or needed). But you can organise them these way.

ben18785 commented 6 years ago

Thanks Sanmitra. Although think this is a more apt division:

Since, for example, SMC is not MCMC, nor is nested sampling, etc. So think, keep the same two-division thing but call one 'sampling'.

Sound ok?

On 1 Feb 2018, at 16:51, Sanmitra Ghosh notifications@github.com wrote:

As requested by @MichaelClerx :

MCMC : i)AdaptiveCovariance, DREAM ii) Netsed sampling iii) Particle based ones--PopulationMCMC, SMC iv) Likelihood free ---ABCMCMC, ABCSMC v) Score function based---MALA, HMC, NUTS vi) DifferentialGeomtric ones---smMALA, RMHMC

Optimisation : i)PSO, GA ii) Info Geometric ones ---CMAES, XNES, SNES.

I have given an exhaustive list, probably all of these wont be implemented (or needed). But you can organise them these way.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.

sanmitraghosh commented 6 years ago

Sounds good to me, as there are overlaps anyway.

MichaelClerx commented 6 years ago

I remember there was some structure in the information that MCMC methods needed? So an order from likelihood free up to methods needing fisher information?

ben18785 commented 6 years ago

Yep!

On 1 Feb 2018, at 18:23, Michael Clerx notifications@github.com wrote:

I remember there was some structure in the information that MCMC methods needed? So an order from likelihood free up to methods needing fisher information?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

MichaelClerx commented 6 years ago

Well what was it? :D

sanmitraghosh commented 6 years ago

For MCMC methods i)---iii) only need logPosterior. Methods v) needs derivative of logPosterior and vi) Hessian of logPosterior. iv) is a bit tricky, ideally the user should define a distance function between data and states. However, least squares is a good distance function for time series problems.

Hope this helps @MichaelClerx @ben18785

MichaelClerx commented 6 years ago

@sanmitraghosh @ben18785 can you have a look here: http://pints.readthedocs.io/en/latest/#hierarchy-of-methods and see if you agree?

To edit the file, look in docs/source/index.rst

sanmitraghosh commented 6 years ago

I think this is okay.

ben18785 commented 6 years ago

Ok, I think we need to move 'PopulationMCMC' to be under the MCMC heading. We also need to add emcee hammer and simple 'Metropolis' (i.e. the unadapted version) to the MCMC samplers.

Finally, I'm not a fan of 'score function based' as a heading. It's not just using the score (i.e. the derivative of the log likelihood) but also the derivative of the log priors; in other words, it uses the derivative of the log posterior. I would call it something like '1st order sensitivity MCMC samplers'. Then perhaps just call what used to be 'MCMC' as 'MCMC without gradients'?

MichaelClerx commented 6 years ago

Is it just 'Metropolis'? Or 'Metropolis-Hastings' ? (I've put Metropolis-Hastings for now)

ben18785 commented 6 years ago

At the moment we only do 'random walk Metropolis' not 'Metropolis-Hastings'. That's because we don't allow parameters to have one-sided boundaries when sampling from them. Is that right? In that, we currently don't have MCMC methods which allow for had boundaries...

On 21 Feb 2018, at 12:08, Michael Clerx notifications@github.com wrote:

Is it just 'Metropolis'? Or 'Metropolis-Hastings' ? (I've put Metropolis-Hastings for now)

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

MichaelClerx commented 6 years ago

Yeah that's right! Priors, but no boundaries

mirams commented 6 years ago

I think Hastings added capability to have asymmetric proposal distributions, is that right? And one example/application of that is implementing hard 'boundaries' so that no points are proposed outside a bound?

ben18785 commented 6 years ago

Yes, that's right. It just has asymmetric proposals, whose most useful purpose is to deal with (single) boundaries in parameter space. I think we should - at some point - perhaps consider implementing this.

All it'd mean is we log transform the variables, apply the Jacobian to the log posterior and sample, then apply the inverse transform back. The reason for doing this is that often it is much easier and more intuitive to set priors on untransformed variables.

On 21 Feb 2018, at 23:02, Gary Mirams notifications@github.com wrote:

I think Hastings added capability to have asymmetric proposal distributions, is that right? And one example/application of that is implementing hard 'boundaries' so that no points are proposed outside a bound?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

MichaelClerx commented 6 years ago

We should probably mention this in the AdaptiveCovarianceMCMC file somewhere then?

At the moment the proposal distribution is hardcoded.

Sounds like it also ties in to #31 a bit :-D