--- title: "Explaining classification models with localModel package" author: "Mateusz Staniak" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Explaining classification models with localModel package} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>", warning = FALSE, message = FALSE, error = FALSE ) ``` Explaining classification models with the [`localModel`](https://github.com/ModelOriented/localModel) package is just as simple as explaining regression. It is enough to work with predicted scores (class probabilities) rather than classes. In multiclass setting, a separate explanation is provided for each class probability. We will work with the `HR` dataset from [`DALEX2`](https://github.com/ModelOriented/DALEX2) package. As in the regression example from _Introduction to the localModel package_, we will first create a random forest model and a [`DALEX2`](https://github.com/ModelOriented/DALEX2) explainer. Details about the method can be found in the _Methodology behind localModel package_ vignette. ```{r model} library(DALEX) library(randomForest) library(localModel) data('HR') set.seed(17) mrf <- randomForest(status ~., data = HR, ntree = 100) explainer <- explain(mrf, HR[, -6], predict_function = function(x, y) predict(x, y, type = "prob")) new_observation <- HR[10, -6] new_observation ``` In [`DALEX2`](https://github.com/ModelOriented/DALEX2), we have built-in predict functions for some types of models. Random Forest is among these models. ```{r explanation} model_lok <- individual_surrogate_model(explainer, new_observation, size = 500, seed = 17) plot(model_lok) plot(model_lok, geom = "bar") ``` The plot shows how predictions for different classes are influenced by different features. For the actually predicted class, hours and evaluation have a strong positive effect.