-
-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add DEMetropolisZ stepper #3784
Conversation
Codecov Report
@@ Coverage Diff @@
## master #3784 +/- ##
===========================================
+ Coverage 62.57% 90.78% +28.21%
===========================================
Files 133 133
Lines 20507 20537 +30
===========================================
+ Hits 12832 18645 +5813
+ Misses 7675 1892 -5783
|
+ improves efficiency in situations with slow initial tuning convergence (see PR pymc-devs#3784)
Here are some plots to better understand the strenghts and weaknesses of TuningThese tests are done with
The When the entire tuning history is removed, the autocorrelation goes up: Similarly, the acceptance rate jumps up: Tuning Efficiency compared to
|
Thanks @michaelosthege - I think comments like #3784 (comment) would be best in our wiki, so we can link it in the docstring if necessary. |
I have two or three notebooks for running these experiments that I would like to contribute in some way. Also I should probably move the "pymc3.ode: Shapes and benchmarking" Example over to that section too. |
Very well written! Thanks for adding to PyMC3! Left some code style comments. Great work!! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
minor details
Co-Authored-By: Thomas Wiecki <thomas.wiecki@gmail.com>
The DE-MCMC-Z is a variant of DE-MCMC that uses its own trace/history to make new proposals instead of using a population of chains.
Compared to
DEMetropolis
this has several advantages:cores > 1
chains=1
alreadyIn the current implementation the history is kept in the instance of the stepper even though the same information is already present in the trace. But memory is cheap compared to inter-process communication & having to fiddle with
sampling.py
,I'm working on a benchmarking/comparison notebook and will also do unit tests..