library(mlr)
## Warning: package 'mlr' was built under R version 3.5.3
## Loading required package: ParamHelpers
## Warning: package 'ParamHelpers' was built under R version 3.5.3
library(DALEXtra)
## Warning: package 'DALEXtra' was built under R version 3.5.3
## Loading required package: DALEX
## Warning: package 'DALEX' was built under R version 3.5.3
## Welcome to DALEX (version: 0.4.7).
## Find examples and detailed introduction at: https://pbiecek.github.io/PM_VEE/
## Anaconda not found on your computer. Conda related functionality such as create_env.R and condaenv and yml parameters from explain_scikitlearn will not be available
library(modelStudio)
## Warning: package 'modelStudio' was built under R version 3.5.3
library(DALEX)

train <- DALEX::HR[1:100,]
train$fired <- ifelse(train$status == "fired", 1, 0)
train <- train[,-6]

head(train)
##   gender      age    hours evaluation salary fired
## 1   male 32.58267 41.88626          3      1     1
## 2 female 41.21104 36.34339          2      5     1
## 3   male 37.70516 36.81718          3      0     1
## 4 female 30.06051 38.96032          3      2     1
## 5   male 21.10283 62.15464          5      3     0
## 6   male 40.11812 69.53973          2      0     1

Prepare data and model for the explainer:

create a random forest model

library("randomForest")
## Warning: package 'randomForest' was built under R version 3.5.3
## randomForest 4.6-14
## Type rfNews() to see new features/changes/bug fixes.
model <- randomForest(fired ~., data = train)
## Warning in randomForest.default(m, y, ...): The response has five or fewer
## unique values. Are you sure you want to do regression?

prepare validation dataset

test <- DALEX::HR_test[1:100,]
test$fired <- ifelse(test$status == "fired", 1, 0)
test <- test[,-6]

create an explainer

explainer <- DALEX::explain(model = model,
                            data = test[,-6],
                            y = test[,6],
                            verbose = FALSE)

start modelStudio

modelStudio parameters

local explanations You can pass data points to new_observation parameter for local explanations such as Break Down, SHAP Values and Ceteris Paribus Profiles.

new_observations <- test[1:3,]
rownames(new_observations) <- c("John Snow", "Arya Stark", "Samwell Tarly")
modelStudio(explainer, new_observation = new_observations, facet_dim = c(1,2))
## 
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |=========                                                             |  12%
  |                                                                            
  |==================                                                    |  25%
  |                                                                            
  |==========================                                            |  38%
  |                                                                            
  |===================================                                   |  50%
  |                                                                            
  |============================================                          |  62%
  |                                                                            
  |====================================================                  |  75%
  |                                                                            
  |=============================================================         |  88%
  |                                                                            
  |======================================================================| 100%