R/safely_detect_interactions.R
safely_detect_interactions.Rd
The safely_detect_interactions() function detects second-order interactions based on predictions made by a surrogate model. For each pair of features it performs values permutation in order to evaluate their non_additive effect.
safely_detect_interactions(
explainer,
inter_param = 0.5,
inter_threshold = 0.5,
verbose = TRUE
)
DALEX explainer created with explain() function
numeric, a positive value indicating which of single observation non-additive effects are to be regarded as significant, the higher value the higher non-additive effect has to be to be taken into account
numeric, a value from [0,1]
interval indicating which interactions should be returned
as significant. It corresponds to the percentage of observations for which interaction measure is greater
than inter_param - if this percentage is less than inter_threshold then interaction effect is ignored.
logical, if progress bar is to be printed
dataframe object containing interactions effects greater than or equal to the specified inter_threshold
library(DALEX)
library(randomForest)
library(rSAFE)
data <- apartments[1:500,]
set.seed(111)
model_rf <- randomForest(m2.price ~ construction.year + surface + floor +
no.rooms + district, data = data)
explainer_rf <- explain(model_rf, data = data[,2:6], y = data[,1])
#> Preparation of a new explainer is initiated
#> -> model label : randomForest ( default )
#> -> data : 500 rows 5 cols
#> -> target variable : 500 values
#> -> predict function : yhat.randomForest will be used ( default )
#> -> predicted values : No value for predict function target column. ( default )
#> -> model_info : package randomForest , ver. 4.7.1.1 , task regression ( default )
#> -> predicted values : numerical, min = 2010.939 , mean = 3502.345 , max = 5764.513
#> -> residual function : difference between y and yhat ( default )
#> -> residuals : numerical, min = -387.9388 , mean = -0.6372461 , max = 749.0998
#> A new explainer has been created!
safely_detect_interactions(explainer_rf, inter_param = 0.25,
inter_threshold = 0.2, verbose = TRUE)
#> Interactions processing...
#>
|
| | 0%
|
|======= | 10%
|
|============== | 20%
|
|===================== | 30%
|
|============================ | 40%
|
|=================================== | 50%
|
|========================================== | 60%
|
|================================================= | 70%
|
|======================================================== | 80%
|
|=============================================================== | 90%
|
|======================================================================| 100%
#> variable1 variable2 strength
#> 1 surface floor 0.222
#> 2 surface no.rooms 0.208
#> 3 floor no.rooms 0.202