This library implements Gaussian Process regression also known as Kriging models, it is a port of SMT Kriging and KPLS surrogate models.
A GP regression is an interpolation method where the
interpolated values are modeled by a Gaussian process with a mean
governed by a prior covariance kernel, which depends on some
parameters to be determined.
The interpolated output is modeled as stochastic process as follows:
Y(x) = mu(x) + Z(x)
where:
mu(x)is the trend acting as the mean of the processZ(x)the realization of stochastic Gaussian process ~Normal(0, sigma^2)
which in turn is written as:
Y(x) = betas.regr(x) + sigma^2*corr(x, x')
where:
betasis a vector of linear regression parameters to be determinedregr(x)a vector of polynomial basis functionssigma^2is the process variancecorr(x, x')is a correlation function which depends ondistance(x, x')and a set of unknown parametersthetasto be determined.
Implementation highlights:
- This library is based on ndarray and linfa and strive to follow linfa guidelines
- GP mean model can be constant, linear or quadratic
- GP correlation model can be build the following kernels: squared exponential, absolute exponential, matern 3/2, matern 5/2
cf. SMT Kriging - For high dimensional problems, the classic GP algorithm does not perform well as it depends on the inversion of a correlation (n, n) matrix which is an O(n3) operation. To work around this problem the library implements dimension reduction using Partial Least Squares method upon Kriging method also known as KPLS algorithm
- GP models can be saved and loaded using serde.
Reference:
- Bouhlel, Mohamed Amine, et al. Improving kriging surrogates of high-dimensional design models by Partial Least Squares dimension reduction Structural and Multidisciplinary Optimization 53.5 (2016): 935-952.