Implementation of Gaussian process regression with interval arithmetic. We use algorithm 2.1 from "Gaussian Processes for Machine Learning" by Rasmussen and Williams. Interval arithmetic relies on the PyInterval package.
A Gaussian process (GP) is a type of machine learning model. A good reference is "Gaussian Processes for Machine Learning", which can be found here:
http://gaussianprocess.org/gpml/
When computers perform a computation, they frequently return inexact results due to rounding. In most cases these errors are very small and unimportant, but sometimes they can compound in order to give highly inaccurate results. Interval arithmetic gives rigorous bounds on these errors by outputting an interval which is guaranteed to contain the true output of the function.
For instance, suppose we have a real-valued function
For more information, check out http://fab.cba.mit.edu/classes/S62.12/docs/Hickey_interval.pdf
CMGDB is a software tool that uses Conley-Morse theory in order to analyze dynamical systems. It gives rigorous information about the long-run (asymptotic) behavior of the system. There's a lot to unpack there, and for more details check out https://www.math.fau.edu/files/kalies_papers/dsagdms.pdf
From a practical perspective, CMGDB takes as input a function
In order to guarantee that the output of the software is a rigorous description of the dynamics of
Assuming a prior mean function of zero, the Gaussian Process regression function (the mean function of the posterior process) is an explicit (and relatively simple) formula: $$ \mu^* = K(X_*,X)(K(X,X)+\sigma^2 I)^{-1}\hat{y} $$
Letting
Note that, for fixed input data,
is just an
Assuming that we are using the common squared exponential kernal, the entries of the covariance matrix
Our interest is in performing interval arithmetic with respect to the test data
First, we compute
The second step (and where we break from the sklearn code) is to solve for the vector
I also want to note that this code is a somewhat limited product; it is not be nearly as robust as the sklearn function; in particular, it is limited to only the use of the squared exponential kernal. It also only tracks the mean of the process, and not the variance.
But it does perform interval arithmetic, and give us rigorously bounded output :)