First, let's create explainers for random Forest model and linear model
library("DALEX")
library("randomForest")
library("ceterisParibus")
set.seed(59)
apartments_lm_model <- lm(m2.price ~ construction.year + surface + floor +
no.rooms + district, data = apartments)
apartments_rf_model <- randomForest(m2.price ~ construction.year + surface + floor +
no.rooms + district, data = apartments)
explainer_rf <- explain(apartments_rf_model,
data = apartmentsTest[,2:6], y = apartmentsTest$m2.price)
explainer_lm <- explain(apartments_lm_model,
data = apartmentsTest[,2:6], y = apartmentsTest$m2.price)
We will explain prediction for
new_apartment <- apartmentsTest[1, ]
new_apartment
## m2.price construction.year surface floor no.rooms district
## 1001 4644 1976 131 3 5 Srodmiescie
wi_rf <- what_if(explainer_rf, observation = new_apartment)
wi_rf
## y_hat new_x vname x_quant quant relative_quant
## 0% 4255.354 1920 construction.year 0.6268889 0.00 -0.6268889
## 1% 4300.702 1921 construction.year 0.6268889 0.01 -0.6168889
## 2% 4301.926 1922 construction.year 0.6268889 0.02 -0.6068889
## 3% 4305.352 1923 construction.year 0.6268889 0.03 -0.5968889
## 4% 4305.352 1923 construction.year 0.6268889 0.04 -0.5868889
## 5% 4267.723 1924 construction.year 0.6268889 0.05 -0.5768889
## label
## 0% randomForest
## 1% randomForest
## 2% randomForest
## 3% randomForest
## 4% randomForest
## 5% randomForest
plot(wi_rf, split = "variables", color = "variables", quantiles = FALSE)
plot(wi_rf, split = "variables", color = "variables")
plot(wi_rf)
wi_lm <- what_if(explainer_lm, observation = new_apartment)
wi_lm
## y_hat new_x vname x_quant quant relative_quant
## 1001 4832.833 1920 construction.year 0.6268889 0.00 -0.6268889
## 1001.1 4832.604 1921 construction.year 0.6268889 0.01 -0.6168889
## 1001.2 4832.375 1922 construction.year 0.6268889 0.02 -0.6068889
## 1001.3 4832.146 1923 construction.year 0.6268889 0.03 -0.5968889
## 1001.4 4832.146 1923 construction.year 0.6268889 0.04 -0.5868889
## 1001.5 4831.917 1924 construction.year 0.6268889 0.05 -0.5768889
## label
## 1001 lm
## 1001.1 lm
## 1001.2 lm
## 1001.3 lm
## 1001.4 lm
## 1001.5 lm
plot(wi_lm, split = "variables", color = "variables", quantiles = FALSE)
plot(wi_lm, split = "variables", color = "variables")
plot(wi_lm)
plot(wi_rf, wi_lm, split = "variables", color = "models", quantiles = FALSE)
plot(wi_rf, wi_lm, split = "variables", color = "models")
plot(wi_rf, wi_lm)
library("ggiraph")
plot_interactive(wi_rf, split = "variables", color = "variables")
plot_interactive(wi_rf)
plot_interactive(wi_lm, split = "variables", color = "variables")
plot_interactive(wi_lm)
plot_interactive(wi_rf, wi_lm)
plot_interactive(wi_rf, wi_lm, split = "variables")