Skip to content
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

SVD decomposition #57

Closed
odunbar opened this issue Jun 25, 2020 · 0 comments · Fixed by #63
Closed

SVD decomposition #57

odunbar opened this issue Jun 25, 2020 · 0 comments · Fixed by #63
Assignees

Comments

@odunbar
Copy link
Collaborator

odunbar commented Jun 25, 2020

In the papers to be released on the GCM use of CES we use an SVD decomposition to transform the space in which we learn with GP. I suggest we implement this here.

Primarily this allows the learning of noise to be exact and reguralization to be precise, as we transform into a space where the observational noise is not only diagonal but we can normalize it to be exactly the identity. Then the built in alpha or observational_noise parameters in the GP are more naturally chosen.

This will involve firstly an SVD implementation within the GPEmulator class, and secondly a modified MCMC class to work in the transformed variables.

@odunbar odunbar mentioned this issue Jun 29, 2020
2 tasks
bors bot added a commit that referenced this issue Jul 21, 2020
63: WIP: add SVD functionality r=odunbar a=odunbar

Resolves #57 . We add the ability for the Gaussian process to learn non - diagonal covariance matrix for the observational noise by applying and SVD.

Resolve #58 We add functionality to toggle whether we wish to learn the observational noise. and add (mathematically correct) default values when we are not.

We also have 2 examples:

- [x] Gaussian process plot. We train a GP on some training points in 2D space, and plot the mean and variance (compared with the underlying model and observational noise) - in the untransformed space

- [x] Noise learning test. We train a GP with known noise, with `learn_noise = false` and with `learn_noise = true` we compare the learned `WhiteKernel`  parameters to the true unlearned parameters.

Coauthored with @bielim 

Co-authored-by: odunbar <odunbar@caltech.edu>
Co-authored-by: Melanie Bieli <melanie.bieli@bluewin.ch>
Co-authored-by: bielim <bielim@users.noreply.github.com>
Co-authored-by: odunbar <47412152+odunbar@users.noreply.github.com>
@bors bors bot closed this as completed in 39bb370 Jul 22, 2020
@bors bors bot closed this as completed in #63 Jul 22, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants