Learn R Programming

xgboostExplainer (version 0.1)

showWaterfall: Step 3: Get prediction breakdown and waterfall chart for a single row of data

Description

This function prints the feature impact breakdown for a single data row, and plots an accompanying waterfall chart.

Usage

showWaterfall(xgb.model, explainer, DMatrix, data.matrix, idx,
  type = "binary", threshold = 1e-04, limits = c(NA, NA))

Arguments

xgb.model

A trained xgboost model

explainer

The output from the buildExplainer function, for this model

DMatrix

The DMatrix in which the row to be predicted is stored

data.matrix

The matrix of data from which the DMatrix was built

idx

The row number of the data to be explained

type

The objective function of the model - either "binary" (for binary:logistic) or "regression" (for reg:linear)

threshold

Default = 0.0001. The waterfall chart will group all variables with absolute impact less than the threshold into a variable called 'Other'

limits

The limits of the y axis - for binary this is on logit scale (e.g. c(-3,3) would give a scale approximately from 0.04 to 0.96)

Value

None

Examples

Run this code
# NOT RUN {
library(xgboost)
library(xgboostExplainer)

set.seed(123)

data(agaricus.train, package='xgboost')

X = as.matrix(agaricus.train$data)
y = agaricus.train$label

train_idx = 1:5000

train.data = X[train_idx,]
test.data = X[-train_idx,]

xgb.train.data <- xgb.DMatrix(train.data, label = y[train_idx])
xgb.test.data <- xgb.DMatrix(test.data)

param <- list(objective = "binary:logistic")
xgb.model <- xgboost(param =param,  data = xgb.train.data, nrounds=3)

col_names = colnames(X)

pred.train = predict(xgb.model,X)
nodes.train = predict(xgb.model,X,predleaf =TRUE)
trees = xgb.model.dt.tree(col_names, model = xgb.model)

#### The XGBoost Explainer
explainer = buildExplainer(xgb.model,xgb.train.data, type="binary", base_score = 0.5, trees = NULL)
pred.breakdown = explainPredictions(xgb.model, explainer, xgb.test.data)

showWaterfall(xgb.model, explainer, xgb.test.data, test.data,  2, type = "binary")
showWaterfall(xgb.model, explainer, xgb.test.data, test.data,  8, type = "binary")
# }

Run the code above in your browser using DataLab