listdtr (version 1.0)

build.rule: Low-level Functions for Handling List-based Rules

Description

Build, apply and visualize list-based rules directly using features and losses.

Usage

build.rule(x, y, 
  maxlen = 10L, zeta = 0.1 * mean(y), eta = 0.05 * sum(y))

build.rule.cv(x, y, kfolds = 5L, fold = NULL, maxlen = 10L, zeta.choices = NULL, eta.choices = NULL, cv.only = FALSE)

apply.rule(object, xnew, what = c("label", "index"))

show.rule(object, digits = 3L)

verbalize.rule(object, digits = 3L)

draw.rule(object, digits = 3L, filepath = NULL)

Arguments

x

A matrix of features.

y

A matrix of losses; y[i, j] gives the loss if the i-th observation receives the j-th treatment.

maxlen

A scalar for the maximum length of the list.

zeta

A scalar for tuning paramter zeta. Larger zeta tends to construct condition that covers more observations in each if-then clause.

eta

A scalar for tuning paramter eta. Larger eta tends to construct condition that uses less features in each if-then clause.

kfolds

A scalar for the number of folds for cross validation.

fold

An integer vector consisting of fold membership.

zeta.choices

A numeric vector for possible values of zeta in cross validation.

eta.choices

A numeric vector for possible values of eta in cross validation.

cv.only

A boolean scalar. If true, only cross validated losses are computed. Otherwise, the list built using the optimal zeta and eta is also computed.

object

Return value of build.rule, or build.rule.cv with cv.only = FALSE.

xnew

A matrix of features for prediction.

what

A scalar that determines the form in which the recommended treatment is represented.

digits

A scalar for the number of decimal digits to show.

filepath

A character scalar, if not null, that gives the location that the diagram will save to.

Value

build.rule returns a list.

build.rule.cv returns a list as well as cross validated losses.

apply.rule returns a vector of recommended actions.

show.rule prints the rule in words and returns it invisibly.

verbalize.rule returns a data.frame that contains conditions and actions separately for each if-then clause.

draw.rule returns a ggplot2 object that contains the diagram.

Details

See the reference if interested in the algorithm.

References

https://arxiv.org/abs/1606.01472

See Also

listdtr

Examples

Run this code
# NOT RUN {
  x <- matrix(rnorm(200 * 10), 200, 10)
  y <- cbind(
    a1 = as.double(x[, 1] < 0) + rnorm(200, 0, 0.1),
    a2 = as.double(x[, 2] > 0) + rnorm(200, 0, 0.1))
  y[y < 0] <- 0
  
  obj <- build.rule(x, y)
  show.rule(obj)
  draw.rule(obj)
  
  xnew <- matrix(rnorm(1000 * 10), 1000, 10)
  ynew <- apply.rule(obj, xnew)
  table(factor(xnew[, 1] < 0) : factor(xnew[, 2] < 0), ynew)
# }

Run the code above in your browser using DataCamp Workspace