local_attributions: Model Agnostic Sequential Variable attributions

Description Usage Arguments Value References See Also Examples

View source: R/local_attributions.R

Description

This function finds Variable attributions via Sequential Variable Conditioning. The complexity of this function is O(2*p). 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 is determined. And in the second step the impact is calculated.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
local_attributions(x, ...)

## S3 method for class 'explainer'
local_attributions(x, new_observation,
  keep_distributions = FALSE, ...)

## Default S3 method:
local_attributions(x, data, predict_function = predict,
  new_observation, label = class(x)[1], keep_distributions = FALSE,
  order = NULL, ...)

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 distribution of partial predictions is stored and can be plotted with the generic 'plot()'.

data

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

predict_function

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

label

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.

Value

an object of the 'break_down' class.

References

Predictive Models: Visual Exploration, Explanation and Debugging https://pbiecek.github.io/PM_VEE

See Also

break_down, local_interactions

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
library("DALEX")
library("iBreakDown")
# Toy examples, because CRAN angels ask for them
titanic <- na.omit(titanic)
set.seed(1313)
titanic_small <- titanic[sample(1:nrow(titanic), 500), c(1,2,6,9)]
model_titanic_glm <- glm(survived == "yes" ~ gender + age + fare,
                       data = titanic, family = "binomial")
explain_titanic_glm <- explain(model_titanic_glm,
                           data = titanic_small[,-9],
                           y = titanic_small$survived == "yes")
bd_rf <- local_attributions(explain_titanic_glm, titanic_small[1, ])
bd_rf
plot(bd_rf, max_features = 3)


## Not run:
library("randomForest")
set.seed(1313)
# 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],
                        y = HR$status[1:1000])

bd_rf <- local_attributions(explainer_rf,
                           new_observation)
bd_rf
plot(bd_rf)
plot(bd_rf, baseline = 0)

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

bd_rf <- local_attributions(explainer_rf,
                           apartments_test[1,])
bd_rf
plot(bd_rf, digits = 1)

bd_rf <- local_attributions(explainer_rf,
                           apartments_test[1,],
                           keep_distributions = TRUE)
plot(bd_rf, plot_distributions = TRUE)

DrWhy2/breakDown2 documentation built on Dec. 16, 2019, 3:31 a.m.