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

New LCurve class to estimate regularization parameters #90

Merged
merged 13 commits into from Apr 11, 2014

Conversation

Projects
None yet
1 participant
@leouieda
Member

leouieda commented Feb 24, 2014

The new class was added to fatiando.inversion.regularization. It behaves like any other solver but under the hood it runs the L-curve and finds the corner value when fit() is called.

The L-curve is built using user-specified values of the regularization parameter. The corner value is found using the "triangle method" of Castellanos et al (2002).

This gist was the first prototype developed.

Notes:

  • So far it's not behaving well for total variation regularization. Update: got this working on the SrTomo recipe. It was just a matter of adjusting the search range of regularization parameters. Very large values were giving errors.

TODO:

  • Use it in recipes
  • Fill docstrings
  • Compute the curve in parallel when possible
  • Changelog entry

leouieda added some commits Feb 24, 2014

New LCurve class to estimate regularization params
The new class behaves like any other solver but under the hood it runs
the L-curve and finds the corner value when fit() is called.
Too much precision in LCurve test
The test of the residuals mean and stddev had too many significant
digits
SrTomo recipes use LCurve
Also switched the model to a square. This way they don't have to
download the tomo image all the time.
LCurve computes in parallel
Uses multiprocessing when given `jobs` argument.
@leouieda

This comment has been minimized.

Member

leouieda commented Feb 28, 2014

Note: There is a problem with multiprocessing and numpy liked against threaded BLAS (like in Anaconda Accelerate). See numpy/numpy#654 and numpy/numpy#4194. TL;DR: don't use multiprocessing if threaded or vice-versa.

This is pertinent to #91

leouieda added some commits Feb 28, 2014

Scaling in LCurve and opt out of loglog
Scaling before estimating the corner in LCurve for better identification
and added an option to not use a loglog scale.
Filled in docstrings for LCurve
Also fixed some issues with doc formats.

leouieda added a commit that referenced this pull request Apr 11, 2014

Merge pull request #90 from leouieda/lcurve
New LCurve class to estimate regularization parameters

@leouieda leouieda merged commit 0517938 into master Apr 11, 2014

@leouieda leouieda deleted the lcurve branch Jul 3, 2014

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment