Skip to contents

Implementation of CFI using modular sampling approach

References

Blesch, Kristin, Koenen, Niklas, Kapar, Jan, Golchian, Pegah, Burk, Lukas, Loecher, Markus, Wright, N. M (2025). “Conditional Feature Importance with Generative Modeling Using Adversarial Random Forests.” Proceedings of the AAAI Conference on Artificial Intelligence, 39(15), 15596–15604. doi:10.1609/aaai.v39i15.33712 .

Methods

Inherited methods


Method new()

Creates a new instance of the CFI class

Usage

CFI$new(
  task,
  learner,
  measure,
  resampling = NULL,
  features = NULL,
  groups = NULL,
  relation = "difference",
  iters_perm = 1L,
  sampler = NULL
)

Arguments

task, learner, measure, resampling, features, groups

Passed to PerturbationImportance.

relation

(character(1)) How to relate perturbed scores to originals. Can be overridden in $compute().

iters_perm

(integer(1)) Number of sampling iterations. Can be overridden in $compute().

sampler

(ConditionalSampler) Optional custom sampler. Defaults to instantiationg ARFSampler internally with default parameters.


Method compute()

Compute CFI scores

Usage

CFI$compute(iters_perm = NULL, store_backends = TRUE)

Arguments

iters_perm

(integer(1)) Number of permutation iterations. If NULL, uses stored value.

store_backends

(logical(1)) Whether to store backends, passed to mlr3::resample() internally for the initial fit of the learner. This may be required for certain measures and is recommended to leave enabled unless really necessary.


Method clone()

The objects of this class are cloneable with this method.

Usage

CFI$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

Examples

library(mlr3)
task = tgen("2dnormals")$generate(n = 100)
cfi = CFI$new(
  task = task,
  learner = lrn("classif.ranger", num.trees = 50, predict_type = "prob"),
  measure = msr("classif.ce")
)
#>  No <ConditionalSampler> provided, using <ARFSampler> with default settings.
#>  No <Resampling> provided
#> Using `resampling = rsmp("holdout")` with default `ratio = 0.67`.
cfi$compute()
cfi$importance()
#> Key: <feature>
#>    feature importance
#>     <char>      <num>
#> 1:      x1 0.00000000
#> 2:      x2 0.06060606