Learn R Programming

iBreakDown (version 2.1.2)

local_interactions: Model Agnostic Sequential Variable Attributions with Interactions

Description

This function implements decomposition of model predictions with identification of interactions. The complexity of this function is O(2*p) for additive models and O(2*p^2) for interactions. This function works in a similar way to step-up and step-down greedy approximations in function break_down(). The main difference is that in the first step the order of variables and interactions is determined. And in the second step the impact is calculated.

Usage

local_interactions(x, ...)

# S3 method for explainer local_interactions(x, new_observation, keep_distributions = FALSE, ...)

# S3 method for default local_interactions( x, data, predict_function = predict, new_observation, label = class(x)[1], keep_distributions = FALSE, order = NULL, interaction_preference = 1, ... )

Value

an object of the break_down class.

Arguments

x

an explainer created with function explain or a model.

...

other parameters.

new_observation

a new observation with columns that correspond to variables used in the model.

keep_distributions

if TRUE, then the distribution of partial predictions is stored in addition to the average.

data

validation dataset, will be extracted from x if it's an explainer.

predict_function

predict function, will be extracted from x if it's an explainer.

label

character - the name of the model. By default it's extracted from the 'class' attribute of the model.

order

if not NULL, then it will be a fixed order of variables. It can be a numeric vector or vector with names of variables/interactions.

interaction_preference

an integer specifying which interactions will be present in an explanation. The larger the integer, the more frequently interactions will be presented.

References

Explanatory Model Analysis. Explore, Explain and Examine Predictive Models. https://ema.drwhy.ai

See Also

break_down, local_attributions

Examples

Run this code
library("DALEX")
library("iBreakDown")
set.seed(1313)
model_titanic_glm <- glm(survived ~ gender + age + fare,
                       data = titanic_imputed, family = "binomial")
explain_titanic_glm <- explain(model_titanic_glm,
                           data = titanic_imputed,
                           y = titanic_imputed$survived,
                           label = "glm")

bd_glm <- local_interactions(explain_titanic_glm, titanic_imputed[1, ],
       interaction_preference = 500)
bd_glm
plot(bd_glm, max_features = 2)

if (FALSE) {
library("randomForest")
# example with interaction
# classification for HR data
model <- randomForest(status ~ . , data = HR)
new_observation <- HR_test[1,]

explainer_rf <- explain(model,
                 data = HR[1:1000,1:5])

bd_rf <- local_interactions(explainer_rf,
                 new_observation)

bd_rf
plot(bd_rf)

# example for regression - apartment prices
# here we do not have intreactions
model <- randomForest(m2.price ~ . , data = apartments)
explainer_rf <- explain(model,
         data = apartments_test[1:1000,2:6],
         y = apartments_test$m2.price[1:1000])

new_observation <- apartments_test[1,]

bd_rf <- local_interactions(explainer_rf,
                 new_observation,
                 keep_distributions = TRUE)

bd_rf
plot(bd_rf)
plot(bd_rf, plot_distributions = TRUE)
}

Run the code above in your browser using DataLab