pod.build_kriging_candidate_kernels

build_kriging_candidate_kernels(n_features)

Builds the candidate covariance kernels evaluated for the Kriging surrogate.

Every candidate has the form C * R(u, u') + WhiteKernel, evaluated on standardised inputs u (see ScaledGaussianProcessRegressor):

  • C is the process variance sigma^2 ([M26] Eq. 3).
  • R is the correlation function, with one length scale per input (anisotropic, [M26] Eq. 5; [UQLab] Corr.Type = 'Ellipsoidal'). The families are those compared in [M26] Sec. 4.3.1: exponential (Matérn 1/2), Matérn 3/2, Matérn 5/2 and Gaussian. [digiqual] omits UQLab’s “linear” correlation because scikit-learn does not provide it.
  • WhiteKernel is the observation-noise (nugget) variance tau^2, learned by maximum likelihood alongside the length scales. This follows [M25-code] (Regression.SigmaNSQ = 'auto'). [M26] instead treats the response as deterministic and interpolates it exactly; a learned nugget reduces to that case when the data has no scatter.

Learning the nugget is essential when the chosen inputs do not fully determine the response (e.g. a model trained on Area and Offset when the response also depends on flaw shape). If the noise were fixed too small, the likelihood would be maximised by shrinking a length scale until the surface interpolates the scatter. That produces a spiky surface whose slices revert to the prior mean away from data and whose bootstrap refits are unstable.

Length-scale initial value (1) and lower bound (1e-3) follow [UQLab]. The upper bound is 1e3 rather than UQLab’s 10 [digiqual], so that an input with no influence can take a length scale far longer than its range (an effectively flat direction) instead of sitting on the bound.

The kernels are intended for use with normalize_y=True, so C and the noise level are expressed relative to the variance of the training response.

Parameters

Name Type Description Default
n_features int Number of input dimensions. required

Returns

Name Type Description
dict[str, Any] dict[str, Kernel]: Mapping of human-readable kernel name to an unfitted
dict[str, Any] scikit-learn kernel.