ciu.new {ciu} | R Documentation |
Create CIU object
Description
Sets up a CIU object with the given parameters. CIU objects have "public" and "private" methods. A CIU object is actually a list whose elements are the public functions (methods).
Usage
ciu.new(
bb,
formula = NULL,
data = NULL,
in.min.max.limits = NULL,
abs.min.max = NULL,
input.names = NULL,
output.names = NULL,
predict.function = NULL,
vocabulary = NULL
)
Arguments
bb |
Model/"black-box" object. At least all |
formula |
Formula that describes input versus output values. Only to
be used together with |
data |
The training data used for training the model. If this parameter
is provided, a |
in.min.max.limits |
matrix with one row per output and two columns, where the first column indicates the minimal value and the second column the maximal value for that input. |
abs.min.max |
data.frame or matrix of min-max values of outputs, one row per output, two columns (min, max). |
input.names |
labels of inputs. |
output.names |
labels of outputs. |
predict.function |
can be supplied if a model that is not supported by ciu should be used. As an example, this is the function for lda: o.predict.function <- function(model, inputs) { pred <- predict(model,inputs) return(pred$posterior) } |
vocabulary |
list of labels/concepts to be used when producing
explanations and what combination of inputs they correspond to. Example of
two intermediate concepts and a higher-level one that combines them:
|
Details
CIU is implemented in an object-oriented manner, where a CIU
object is a list
whose methods are made visible as
elements of the list. The general way for using CIU
objects is to
first get a CIU
object by calling ciu.new
as e.g.
ciu <- ciu.new(...)
, then call ciu.res <- ciu$<method>(...)
.
The methods that can be used in <method>
are:
-
explain
, see ciu.explain (but omit first parameterciu
) -
meta.explain
, see ciu.meta.explain (but omit first parameterciu
). -
barplot.ciu
, see ciu.barplot (but omit first parameterciu
) -
ggplot.col.ciu
, see ciu.ggplot.col (but omit first parameterciu
) -
pie.ciu
, see ciu.pie (but omit first parameterciu
) -
plot.ciu
, see ciu.plot (but omit first parameterciu
) -
plot.ciu.3D
, see ciu.plot.3D (but omit first parameterciu
) -
textual
, see ciu.textual (but omit first parameterciu
).
"Usage" section is here in "Details" section because Roxygen etc. don't support documentation of functions within functions.
Value
Object of class CIU
.
ciu
object
Author(s)
Kary Främling
Create ciu
object from this CIU
object.
References
Främling, K. Contextual Importance and Utility in R: the 'ciu' Package. In: Proceedings of 1st Workshop on Explainable Agency in Artificial Intelligence, at 35th AAAI Conference on Artificial Intelligence. Virtual, Online. February 8-9, 2021. pp. 110-114.
Främling, K. Explainable AI without Interpretable Model. 2020, https://arxiv.org/abs/2009.13996.
Främling, K. Decision Theory Meets Explainable AI. 2020, <doi.org/10.1007/978-3-030-51924-7_4>.
Främling, K. Modélisation et apprentissage des préférences par réseaux de neurones pour l'aide à la décision multicritère. 1996, https://tel.archives-ouvertes.fr/tel-00825854/document (title translation in English: Learning and Explaining Preferences with Neural Networks for Multiple Criteria Decision Making)
Examples
# Explaining the classification of an Iris instance with lda model.
# We use a versicolor (instance 100).
library(MASS)
test.ind <- 100
iris_test <- iris[test.ind, 1:4]
iris_train <- iris[-test.ind, 1:4]
iris_lab <- iris[[5]][-test.ind]
model <- lda(iris_train, iris_lab)
# Create CIU object
ciu <- ciu.new(model, Species~., iris)
# This can be used with explain method for getting CIU values
# of one or several inputs. Here we get CIU for all three outputs
# with input feature "Petal.Length" that happens to be the most important.
ciu$explain(iris_test, 1)
# It is, however, more convenient to use one of the graphical visualisations.
# Here's one using ggplot.
ciu$ggplot.col.ciu(iris_test)
# LDA creates very sharp class limits, which can also be seen in the CIU
# explanation. We can study what the underlying model looks like using
# plot.ciu and plot.ciu.3D methods. Here is a 3D plot for all three classes
# as a function of Petal Length&Width. Iris #100 (shown as the red dot)
# is on the ridge of the "versicolor" class, which is quite narrow for
# Petal Length&Width.
ciu$plot.ciu.3D(iris_test,c(3,4),1,main=levels(iris$Species)[1],)
ciu$plot.ciu.3D(iris_test,c(3,4),2,main=levels(iris$Species)[2])
ciu$plot.ciu.3D(iris_test,c(3,4),3,main=levels(iris$Species)[3])
## Not run:
# Same thing with a regression task, the Boston Housing data set. Instance
# #370 has the highest valuation (50k$). Model is gbm, which performs
# decently here. Plotting with "standard" bar plot this time.
# Use something like "par(mai=c(0.8,1.2,0.4,0.2))" for seeing Y-axis labels.
library(caret)
gbm <- train(medv ~ ., Boston, method="gbm", trControl=trainControl(method="cv", number=10))
ciu <- ciu.new(gbm, medv~., Boston)
ciu$barplot.ciu(Boston[370,1:13])
# Same but sort by CI.
ciu$barplot.ciu(Boston[370,1:13], sort = "CI")
# The two other possible plots
ciu$ggplot.col(Boston[370,1:13])
ciu$pie.ciu(Boston[370,1:13])
# Method "plot" for studying the black-box behavior and CIU one input at a time.
ciu$plot.ciu(Boston[370,1:13],13)
## End(Not run)