View source: R/vorob_optim_parallel.R
vorob_optim_parallel | R Documentation |
Evaluation of the parallel Vorob'ev criterion for some candidate points. To be used in optimization routines, like in max_vorob_parallel
.
To avoid numerical instabilities, the new points are evaluated only if they are not too close to an existing observation, or if there is some observation noise.
The criterion is the integral of the posterior Vorob'ev uncertainty.
vorob_optim_parallel(x, integration.points, integration.weights = NULL, intpoints.oldmean, intpoints.oldsd, precalc.data, model, T, new.noise.var = NULL, batchsize, alpha, current.vorob, penalisation=NULL,typeEx=">")
x |
Input vector of size batchsize*d at which one wants to evaluate the criterion. This argument is NOT a matrix. |
integration.points |
p*d matrix of points for numerical integration in the X space. |
integration.weights |
Vector of size p corresponding to the weights of these integration points. |
intpoints.oldmean |
Vector of size p corresponding to the kriging mean at the integration points before adding the batchsize points |
intpoints.oldsd |
Vector of size p corresponding to the kriging standard deviation at the integration points before adding the batchsize points |
precalc.data |
List containing useful data to compute quickly the updated kriging variance. This list can be generated using the |
model |
Object of class |
T |
Target value (scalar). The criterion CANNOT be used with multiple thresholds. |
new.noise.var |
Optional scalar value of the noise variance for the new observations. |
batchsize |
Number of points to sample simultaneously. The sampling criterion will return batchsize points at a time for sampling. |
alpha |
The Vorob'ev threshold. |
current.vorob |
Current value of the vorob criterion (before adding new observations) |
penalisation |
Optional penalization constant for type I errors. If equal to zero, computes the Type II criterion. |
typeEx |
A character (">" or "<") identifying the type of excursion |
The first argument x
has been chosen to be a vector of size batchsize*d (and not a matrix with batchsize rows and d columns) so that an optimizer like genoud can optimize it easily.
For example if d=2, batchsize=3 and x=c(0.1,0.2,0.3,0.4,0.5,0.6)
, we will evaluate the parallel criterion at the three points (0.1,0.2),(0.3,0.4) and (0.5,0.6).
Parallel vorob value
Clement Chevalier (University of Neuchatel, Switzerland)
Dario Azzimonti (IDSIA, Switzerland)
Chevalier C., Ginsbouger D., Bect J., Molchanov I. (2013) Estimating and quantifying uncertainties on level sets using the Vorob'ev expectation and deviation with gaussian process models mODa 10, Advances in Model-Oriented Design and Analysis, Contributions to Statistics, pp 35-43
Chevalier C. (2013) Fast uncertainty reduction strategies relying on Gaussian process models Ph.D Thesis, University of Bern
Azzimonti, D., Ginsbourger, D., Chevalier, C., Bect, J., and Richet, Y. (2018). Adaptive design of experiments for conservative estimation of excursion sets. Under revision. Preprint at hal-01379642
EGIparallel
, max_vorob_parallel
#vorob_optim_parallel set.seed(9) N <- 20 #number of observations T <- 80 #threshold testfun <- branin #a 20 points initial design design <- data.frame( matrix(runif(2*N),ncol=2) ) response <- testfun(design) #km object with matern3_2 covariance #params estimated by ML from the observations model <- km(formula=~., design = design, response = response,covtype="matern3_2") ###we need to compute some additional arguments: #integration points, and current kriging means and variances at these points integcontrol <- list(n.points=50,distrib="vorob",init.distrib="MC") obj <- integration_design(integcontrol=integcontrol, lower=c(0,0),upper=c(1,1),model=model,T=T) integration.points <- obj$integration.points integration.weights <- obj$integration.weights alpha <- obj$alpha pred <- predict_nobias_km(object=model,newdata=integration.points, type="UK",se.compute=TRUE) intpoints.oldmean <- pred$mean ; intpoints.oldsd<-pred$sd #another precomputation precalc.data <- precomputeUpdateData(model,integration.points) batchsize <- 4 x <- c(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8) #one evaluation of the vorob_optim_parallel criterion #we calculate the expectation of the future "vorob" uncertainty #when 4 points are added to the doe #the 4 points are (0.1,0.2) , (0.3,0.4), (0.5,0.6), (0.7,0.8) vorob_optim_parallel(x=x,integration.points=integration.points, integration.weights=integration.weights, intpoints.oldmean=intpoints.oldmean,intpoints.oldsd=intpoints.oldsd, precalc.data=precalc.data,T=T,model=model, batchsize=batchsize,alpha=alpha,current.vorob=Inf) #the function max_vorob_parallel will help to find the optimum: #ie: the batch of 4 minimizing the expectation of the future uncertainty
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.