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

Allow user to toggle between noise-free and noisy observations #9

Closed
edaub opened this issue Apr 23, 2019 · 4 comments · Fixed by #153
Closed

Allow user to toggle between noise-free and noisy observations #9

edaub opened this issue Apr 23, 2019 · 4 comments · Fixed by #153
Assignees
Labels
enhancement New feature or request

Comments

@edaub
Copy link
Collaborator

edaub commented Apr 23, 2019

At present, the code assumes the inputs/targets are noise-free, and attempts to exactly interpolate between them. If this cannot be done due to a nearly singular covariance matrix, the method adds an increasing noise term to the diagonal successively until the matrix can be inverted. One improvement to this would be to allow the user to choose between several options: (1) noise-free, do not add noise if matrix is singular and raise an exception, (2) noise-free, add noise only as needed to stabilize the matrix inversion [this is the current behavior], (3) noise-free but let noise be a hyperparameter to be optimized [likely to be similar to the current behavior but included as an option to give user more control], (4) noisy observations with a single noise level specified by the user and not changed during hyperparameter optimization, and (5) noisy observations with the noise value potentially different for each target value but still not changed during hyperparameter optimization.

@edaub
Copy link
Collaborator Author

edaub commented May 1, 2019

Additionally, a nice feature along these lines would be to implement (6) pivoting to stabilize Cholesky decomposition and automatically omit data points that are too close to each other. I have a simple Python implementation that does this, and it works very nicely. There is a LAPACK version of the Cholesky algorithm with pivoting (dpstrf), but it is more recent and thus is not supported in Scipy at the moment. So this will involve writing the glue code that is needed to use the LAPACK routine and ensuring that we have an appropriate LAPACK version.

@edaub
Copy link
Collaborator Author

edaub commented Jun 11, 2019

Better handling of the noise term has been added on a feature branch and will be merged into devel -- the code exposes an option to set the jitter parameter to either zero (fit the data exactly), a fixed noise level (the case where the observations have a known uncertainty level), or the adaptive approach implemented previously. This feature is needed to do the MICE procedure for experimental design, as the procedure adds a fixed noise level to smooth the observations to stabilize the MICE criterion.

@edaub edaub self-assigned this Jul 19, 2019
@edaub
Copy link
Collaborator Author

edaub commented Sep 11, 2019

Pivoted Cholesky decomposition now implemented with tests on a topic branch. Should be able to merge into devel once I can look it over again.

@edaub
Copy link
Collaborator Author

edaub commented Apr 7, 2020

This has been mostly addressed in PR #81. Still need to work on the pivoted Cholesky factorization.

@edaub edaub added the enhancement New feature or request label Jun 12, 2020
@edaub edaub linked a pull request Feb 1, 2021 that will close this issue
@edaub edaub closed this as completed Mar 4, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant