ALC_deepICMGP: Active Learning Cohn for deepICMGP

View source: R/ALC.R

ALC_deepICMGPR Documentation

Active Learning Cohn for deepICMGP

Description

Select the next design point by minimizing the Active Learning Cohn (ALC) criterion implemented in deepICMGP over a set of candidate inputs. The criterion is averaged over reference inputs and retained MCMC samples.

Usage

ALC_deepICMGP(object, Xcand = NULL, Xref = NULL)

Arguments

object

An object of class deepICMGP returned by fit_deepICMGP or trim_deepICMGP, containing at least two retained MCMC samples.

Xcand

Numeric matrix of candidate inputs, with one row per candidate and the same column order and original units as the training inputs. A vector is accepted for one input dimension. Default is NULL, which generates 100 candidates using maximinLHS(100, d), where d is the number of input dimensions, and maps them to the observed training input ranges.

Xref

Numeric matrix of reference inputs over which the criterion is averaged. Use the same column order and original units as the training inputs. A vector is accepted for one input dimension. Default is NULL, which uses Xcand. The number of reference inputs can be different from the number of candidates.

Details

To select the next design point that provides information about all outputs jointly, ALC uses a determinant-based measure of the predictive uncertainty remaining after adding a candidate. This measure is averaged over reference inputs and retained MCMC samples. The candidate with the smallest value is selected.

The returned x_next is the row of Xcand corresponding to the lowest ALC value. Candidate inputs and the selected point are returned in their original units.

Value

A list containing:

  • value: Numeric vector of ALC values at the candidate points, in the same row order as Xcand.

  • Xcand: Matrix of candidate inputs supplied by the user or generated by the function, in original input units.

  • x_next: One-row matrix containing the candidate with the smallest ALC value, in original input units.

  • time: Computation time in seconds.

Code provenance

This implementation adapts code from the deepgp package and extends it to deep intrinsic coregionalization models. See Sauer, Gramacy, and Higdon (2023) for the underlying deep GP methodology, and https://CRAN.R-project.org/package=deepgp for the source package.

References

Chang, C.-Y. and Sung, C.-L. (2026). Deep Intrinsic Coregionalization Multi-Output Gaussian Process Surrogate with Active Learning. International Journal for Uncertainty Quantification, 16(4), 29–52. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1615/Int.J.UncertaintyQuantification.2026062570")}.

Sauer, A., Gramacy, R. B., and Higdon, D. (2023). Active Learning for Deep Gaussian Process Surrogates. Technometrics, 65(1), 4–18. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1080/00401706.2021.2008505")}.

See Also

pred_deepICMGP, trim_deepICMGP

Examples

library(lhs)

# Branin Function: 2d input with 3 outputs
f1 <- function(x) {
  x1 <- x[, 1] * 15 - 5
  x2 <- x[, 2] * 15
  10 * sqrt(
    (-1.275 * (1.2 * x1 + 0.4)^2 / pi^2 +
       5 * (1.2 * x1 + 0.4) / pi + (1.2 * x2 + 0.4) - 6)^2 +
      (10 - 5 / (4 * pi)) * cos(1.2 * x1 + 0.4) + 10
  ) + 2 * (1.2 * x1 + 1.9) - 3 * (3 * (1.2 * x2 + 2.4) - 1) -
    1 - 3 * x2 + 1
}
f2 <- function(x) {
  x1 <- x[, 1] * 15 - 5
  x2 <- x[, 2] * 15
  10 * sqrt(
    (-1.275 * (x1 + 2)^2 / pi^2 + 5 * (x1 + 2) / pi + (x2 + 2) - 6)^2 +
      (10 - 5 / (4 * pi)) * cos(x1 + 2) + 10
  ) + 2 * (x1 - 0.5) - 3 * (3 * x2 - 1) - 1
}
f3 <- function(x) {
  x1 <- x[, 1] * 15 - 5
  x2 <- x[, 2] * 15
  (-1.275 * x1^2 / pi^2 + 5 * x1 / pi + x2 - 6)^2 +
    (10 - 5 / (4 * pi)) * cos(x1) + 10
}
response <- function(x) cbind(f1(x), f2(x), f3(x))
set.seed(2025)
X <- maximinLHS(30, 2)
Y <- response(X)

Xcand <- maximinLHS(50, 2)

# Fit a deepICMGP model with 500 MCMC samples and set nugget to 1e-8 for deterministic case.
# For actual analysis, use a longer MCMC chain and assess convergence.
fit <- fit_deepICMGP(X, Y, nmcmc = 500, true_g = 1e-8)

# Compute ALC and select the next design point from Xcand
alc <- ALC_deepICMGP(fit, Xcand = Xcand)
alc$x_next


# Optionally, supply a separate reference grid.
Xref <- maximinLHS(200, 2)
alc <- ALC_deepICMGP(fit, Xcand = Xcand, Xref = Xref)
alc$x_next

# If candidates are not given, 100 candidate inputs will be generated automatically.
alc <- ALC_deepICMGP(fit)
nrow(alc$Xcand)
alc$x_next


deepICMGP documentation built on Nov. 3, 2026, 5:08 p.m.