A mask generator which masks the entries based on sampling provided 1D masks with corresponding probabilities. Used for Shapley value estimation when only a subset of coalitions are used to compute the Shapley values.

specified_masks_mask_generator(masks, masks_probs, paired_sampling = FALSE)

Arguments

masks

Matrix/Tensor of possible/allowed 'masks' which we sample from.

masks_probs

Array of 'probabilities' for each of the masks specified in 'masks'. Note that they do not need to be between 0 and 1 (e.g. sampling frequency). They are scaled, hence, they only need to be positive.

paired_sampling

Boolean. If we are doing paired sampling. So include both S and \(\bar{S}\). If TRUE, then batch must be sampled using 'paired_sampler' which creates batches where the first half and second half of the rows are duplicates of each other. That is, batch = [row1, row1, row2, row2, row3, row3, ...].

Author

Lars Henry Berge Olsen

Examples

if (FALSE) {
masks <- torch_tensor(matrix(c(0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1),
  nrow = 3, ncol = 4, byrow = TRUE
))
masks_probs <- c(3, 1, 6)
mask_gen <- specified_masks_mask_generator(masks = masks, masks_probs = masks_probs)
empirical_prob <-
  table(as.array(mask_gen(torch::torch_randn(c(10000, ncol(masks))))$sum(-1)))
empirical_prob / sum(empirical_prob)
masks_probs / sum(masks_probs)
}