R/print_break_down_uncertainty.R
print.break_down_uncertainty.Rd
Print Generic for Break Down Uncertainty Objects
# S3 method for break_down_uncertainty
print(x, ...)
an explanation created with break_down_uncertainty
other parameters.
a data frame.
Explanatory Model Analysis. Explore, Explain and Examine Predictive Models. https://ema.drwhy.ai
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")
#> Preparation of a new explainer is initiated
#> -> model label : glm
#> -> data : 2207 rows 8 cols
#> -> target variable : 2207 values
#> -> predict function : yhat.glm will be used ( default )
#> -> predicted values : No value for predict function target column. ( default )
#> -> model_info : package stats , ver. 4.1.2 , task classification ( default )
#> -> predicted values : numerical, min = 0.1490412 , mean = 0.3221568 , max = 0.9878987
#> -> residual function : difference between y and yhat ( default )
#> -> residuals : numerical, min = -0.8898433 , mean = 4.198546e-13 , max = 0.8448637
#> A new explainer has been created!
bd_glm <- break_down_uncertainty(explain_titanic_glm, titanic_imputed[1, ])
bd_glm
#> min q1 median mean
#> glm: age = 42 -0.01492541 -0.01492541 -0.01434645 -0.01446344
#> glm: class = 3rd 0.00000000 0.00000000 0.00000000 0.00000000
#> glm: embarked = Southampton 0.00000000 0.00000000 0.00000000 0.00000000
#> glm: fare = 7.11 -0.01823177 -0.01784977 -0.01784977 -0.01773120
#> glm: gender = male -0.10843751 -0.10725651 -0.10725651 -0.10725810
#> glm: parch = 0 0.00000000 0.00000000 0.00000000 0.00000000
#> glm: sibsp = 0 0.00000000 0.00000000 0.00000000 0.00000000
#> glm: survived = 0 0.00000000 0.00000000 0.00000000 0.00000000
#> q3 max
#> glm: age = 42 -0.01405996 -0.01396446
#> glm: class = 3rd 0.00000000 0.00000000
#> glm: embarked = Southampton 0.00000000 0.00000000
#> glm: fare = 7.11 -0.01741824 -0.01705077
#> glm: gender = male -0.10725293 -0.10667755
#> glm: parch = 0 0.00000000 0.00000000
#> glm: sibsp = 0 0.00000000 0.00000000
#> glm: survived = 0 0.00000000 0.00000000
plot(bd_glm)
# \dontrun{
## Not run:
library("randomForest")
set.seed(1313)
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],
verbose = FALSE)
bd_rf <- break_down_uncertainty(explainer_rf,
new_observation)
bd_rf
#> min q1 median mean
#> randomForest.fired: age = 57.73 -0.021328 0.0247710 0.253395 0.1946016
#> randomForest.fired: evaluation = 2 -0.018856 0.0073270 0.032725 0.0216108
#> randomForest.fired: gender = male -0.009380 0.0054740 0.019250 0.0911182
#> randomForest.fired: hours = 42.32 0.167650 0.1953890 0.220689 0.2461712
#> randomForest.fired: salary = 2 -0.270298 -0.1751675 -0.160058 -0.1610878
#> randomForest.ok: age = 57.73 -0.346842 -0.3468420 -0.199269 -0.1834688
#> randomForest.ok: evaluation = 2 0.028666 0.1002960 0.125760 0.1215018
#> randomForest.ok: gender = male -0.282642 -0.1062540 -0.021756 -0.0845928
#> randomForest.ok: hours = 42.32 -0.106876 -0.0970580 -0.046824 -0.0447352
#> randomForest.ok: salary = 2 0.046824 0.1184785 0.118552 0.1311450
#> randomForest.promoted: age = 57.73 -0.126732 -0.0061320 -0.006132 -0.0111328
#> randomForest.promoted: evaluation = 2 -0.201822 -0.1749640 -0.166262 -0.1431126
#> randomForest.promoted: gender = male -0.045880 -0.0019940 -0.000019 -0.0065254
#> randomForest.promoted: hours = 42.32 -0.247972 -0.2398625 -0.189205 -0.2014360
#> randomForest.promoted: salary = 2 -0.003902 0.0069900 0.034329 0.0299428
#> q3 max
#> randomForest.fired: age = 57.73 0.3529740 0.362800
#> randomForest.fired: evaluation = 2 0.0418870 0.045408
#> randomForest.fired: gender = male 0.1521340 0.280686
#> randomForest.fired: hours = 42.32 0.3072255 0.351330
#> randomForest.fired: salary = 2 -0.1390850 -0.070866
#> randomForest.ok: age = 57.73 -0.0178415 0.005860
#> randomForest.ok: evaluation = 2 0.1307830 0.196252
#> randomForest.ok: gender = male -0.0061560 -0.003480
#> randomForest.ok: hours = 42.32 0.0010015 0.030996
#> randomForest.ok: salary = 2 0.1542220 0.268992
#> randomForest.promoted: age = 57.73 0.0129425 0.015468
#> randomForest.promoted: evaluation = 2 -0.0957510 -0.058120
#> randomForest.promoted: gender = male 0.0023685 0.023564
#> randomForest.promoted: hours = 42.32 -0.1719955 -0.156930
#> randomForest.promoted: salary = 2 0.0415060 0.077562
# 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])
#> Preparation of a new explainer is initiated
#> -> model label : randomForest ( default )
#> -> data : 1000 rows 5 cols
#> -> target variable : 1000 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 , task regression ( default )
#> -> predicted values : numerical, min = 2052.033 , mean = 3487.71 , max = 5776.623
#> -> residual function : difference between y and yhat ( default )
#> -> residuals : numerical, min = -632.8469 , mean = 1.070017 , max = 1328.352
#> A new explainer has been created!
bd_rf <- break_down_uncertainty(explainer_rf, apartments_test[1,])
bd_rf
#> min q1 median
#> randomForest: construction.year = 1976 -128.5908 -119.3910 -75.48837
#> randomForest: district = Srodmiescie 981.8193 1036.9753 1054.79081
#> randomForest: floor = 3 178.8471 189.5230 194.12751
#> randomForest: no.rooms = 5 -229.8610 -225.7194 -212.31243
#> randomForest: surface = 131 -272.2211 -266.0785 -250.70512
#> mean q3 max
#> randomForest: construction.year = 1976 -82.87975 -50.06424 -47.64365
#> randomForest: district = Srodmiescie 1046.73182 1054.79081 1091.59037
#> randomForest: floor = 3 197.65920 210.33113 215.52532
#> randomForest: no.rooms = 5 -200.17988 -203.34626 -130.21186
#> randomForest: surface = 131 -250.99715 -234.39585 -229.21426
# }