Model Agnostic Sequential Variable Attributions with Interactions
Model Agnostic Sequential Variable Attributions with Interactions
This function implements decomposition of model predictions with identification of interactions. The complexity of this function is O(2p) for additive models and O(2p^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.
local_interactions(x,...)## S3 method for class 'explainer'local_interactions(x, new_observation, keep_distributions =FALSE,...)## Default S3 method:local_interactions( x, data, predict_function = predict, new_observation, label = class(x)[1], keep_distributions =FALSE, order =NULL, interaction_preference =1,...)
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.
Returns
an object of the break_down class.
Examples
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)## Not run:library("randomForest")# example with interaction# classification for HR datamodel <- 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 intreactionsmodel <- 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)## End(Not run)
References
Explanatory Model Analysis. Explore, Explain and Examine Predictive Models. https://ema.drwhy.ai