| Type: | Package |
| Title: | A Fast Global-Local Gaussian Process Approximation |
| Version: | 1.0.0 |
| Date: | 2024-08-24 |
| Copyright: | See the file COPYRIGHTS for copyright details |
| Description: | A global-local approximation framework for large-scale Gaussian process modeling. Please see Vakayil and Joseph (2024) <doi:10.1080/00401706.2023.2296451> for details. This work is supported by U.S. NSF grants CMMI-1921646 and DMREF-1921873. |
| License: | Apache License (== 2.0) |
| Depends: | R (≥ 3.0.2) |
| Imports: | Rcpp, nloptr (≥ 1.2.0) |
| LinkingTo: | Rcpp, RcppEigen, nloptr (≥ 1.2.0) |
| RoxygenNote: | 7.2.3 |
| Encoding: | UTF-8 |
| NeedsCompilation: | yes |
| Packaged: | 2024-08-31 15:47:29 UTC; akhil |
| Author: | Akhil Vakayil |
| Maintainer: | Akhil Vakayil <akhilv@gatech.edu> |
| Repository: | CRAN |
| Date/Publication: | 2024-09-20 13:40:02 UTC |
A Global-Local Approximation Framework for Large-Scale Gaussian Process Modeling
Description
For further details on the methodology, please refer to Vakayil and Joseph (2024). The package uses nlopt (Johnson, 2007) C++ library for hyperparameter optimization, nanoflann (Blanco and Rai, 2014) C++ library for nearest neighbor queries, and Eigen (Guennebaud and Jacob, 2010) C++ library for matrix operations.
References
Vakayil, A., & Joseph, V. R. (2024). A Global-Local Approximation Framework for Large-Scale Gaussian Process Modeling. Technometrics, 66(2), 295-305.
Johnson, S. G. (2007), The NLopt nonlinear-optimization package. http://github.com/stevengj/nlopt
Guennebaud, G., Jacob, B., & Others. (2010). Eigen v3. http://eigen.tuxfamily.org
Blanco, J. L. & Rai, P. K. (2014). nanoflann: a C++ header-only fork of FLANN, a library for nearest neighbor (NN) with kd-trees. https://github.com/jlblancoc/nanoflann
A Fast Global-Local Gaussian Process Approximation
Description
A Fast Global-Local Gaussian Process Approximation
Usage
twingp(
x,
y,
x_test,
nugget = TRUE,
twins = 5,
g_num = NULL,
l_num = NULL,
v_num = NULL,
num_threads = NULL
)
Arguments
x |
|
y |
|
x_test |
|
nugget |
Boolean indicating if a nugget to model observation noise is included in the model, the default is |
twins |
Number of twinning samples computed to identify the best set of global points, the default is |
g_num |
Number of global points included in the model, the default is |
l_num |
Number of local points included in the model, the default is |
v_num |
Number of validation points, the default is |
num_threads |
Number of threads for parallel computation, the default is all available threads |
Details
We employ a combined global-local approach in building the Gaussian process approximation. Our framework uses a subset-of-data approach where the subset is a union of a set of global points designed to capture the global trend in the data, and a set of local points specific to a given testing ___location. We use Twinning (Vakayil and Joseph, 2022) to identify the set of global points. The local points are identified as the nearest neighbors to the testing ___location. The correlation function is also modeled as a combination of a global, and a local kernel. For further details on the methodology, please refer to Vakayil and Joseph (2024).
Value
A list of two t * 1 vectors mu, and sigma representing the mean prediction and associated standard error corresponding to x_test
References
Vakayil, A., & Joseph, V. R. (2024). A Global-Local Approximation Framework for Large-Scale Gaussian Process Modeling. Technometrics, 66(2), 295-305.
Vakayil, A., & Joseph, V. R. (2022). Data Twinning. Statistical Analysis and Data Mining: The ASA Data Science Journal, 15(5), 598-610.
Examples
grlee12 = function(x) {
term1 = sin(10 * pi * x) / (2 * x)
term2 = (x - 1)^4
y = term1 + term2
return(y)
}
x = matrix(seq(0.5, 2.5, length=500), ncol=1)
y = apply(x, 1, grlee12) + rnorm(nrow(x)) * 0.1
x_test = matrix(seq(0.5, 2.5, length=2000), ncol=1)
y_test = apply(x_test, 1, grlee12)
result = twingp(x, y, x_test, num_threads=2)
rmse = sqrt(mean((y_test - result$mu)^2))