NestedKriging
Description
Create a NestedKriging object: a divide-and-conquer Kriging for large
designs (\(n \sim 10^4\)–\(10^6\)). The design is partitioned into nb_groups
groups (k-means on the inputs, or random), one Kriging submodel is fitted
per group — all sharing a common prior after hyper-parameter unification —
and predictions are aggregated with:
aggregation = "NK"(default): the optimal nested-kriging aggregation of Rullière, Durrande, Bachoc & Chevalier (Statistics & Computing, 2018). It is itself a kriging predictor: it interpolates the design and provides consistent variances;aggregation = "PoE","gPoE","BCM"or"rBCM": precision-weighted products of experts (cheaper, no interpolation guarantee).
The fit cost drops from \(O(n^3)\) to \(O(n^3/p^2)\) per likelihood evaluation for \(p\) groups.
Usage
Python
k = NestedKriging(y, X, kernel="matern5_2", nb_groups=8, aggregation="NK", partition="kmeans", seed=123, regmodel="constant", optim="BFGS", objective="LL", parameters=None, warping=[])
R
k <- NestedKriging(y, X, kernel = "matern5_2", nb_groups = 8, aggregation = "NK", partition = "kmeans", seed = 123, regmodel = "constant", optim = "BFGS", objective = "LL", parameters = NULL, warping = NULL)
Matlab/Octave
k = NestedKriging(y, X, "matern5_2", 8, "NK", "kmeans", 123, ... "constant", "BFGS", "LL", [], {})
Julia
k = NestedKriging(y, X, "matern5_2", 8; aggregation="NK", partition="kmeans", seed=123, regmodel="constant", optim="BFGS", objective="LL", warping=String[])
Arguments
Argument |
Description |
|---|---|
|
Numeric vector of response values. |
|
Numeric matrix of input design. |
|
Character defining the covariance model: |
|
Number of submodels; each group holds about |
|
|
|
|
|
Integer seed for the partition (and hyper-parameter subsampling), for reproducibility. |
|
Universal Kriging linear trend. |
|
Optimization method for the submodel hyper-parameters: |
|
|
|
Initial or fixed values for the hyper-parameters (named list with |
|
Optional per-dimension warp specs (see |
Details
The hyper-parameter unification builds the common GP prior required by all
aggregations: with objective="LL" (default), \(\theta\) is the group-size
weighted geometric mean of the per-group estimates and \(\sigma^2, \beta_0\)
weighted means, then every submodel is refitted with optim="none". The NK
aggregation then kriges \(Y(x)\) on the submodel predictors \(M_i(x)\), using
their exact cross-covariances under the common prior.
Value
A NestedKriging object, to be used with its
predict method. Accessors: kernel(),
aggregation(), nb_groups(), groups(), theta(), sigma2(), beta0(),
warping().
Examples
f <- function(X) apply(X, 1, function(x) sin(3 * x[1]) + cos(5 * x[2]))
set.seed(123)
X <- matrix(runif(2 * 1000), ncol = 2)
y <- f(X)
k <- NestedKriging(y, X, kernel = "matern5_2", nb_groups = 10)
print(k)
x <- matrix(runif(2 * 100), ncol = 2)
p <- predict(k, x)
See also
predict.NestedKriging —
vecchia.Kriging for the Vecchia approximated
log-likelihood, the complementary large-\(n\) tool (fastest hyper-parameter
estimation in low dimension, while NestedKriging is dimension-robust).