Learn R Programming

MLCOPULA (version 1.1.0)

copulaClassifier: Trains a classification model using copula functions.

Description

It trains a classification model based on copulas. The dependence structure of the joint density is built by using a graphical model along with bivariate copulas, as shown in Salinas-Gutiérrez et al., 2014.

Usage

copulaClassifier(
  X,
  y,
  distribution = NULL,
  copula = "frank",
  weights = "likelihood",
  graph_model = "tree",
  k = 7,
  m = 7,
  method_grid = "ml"
)

Value

Returns a trained model.

Arguments

X

Data frame with \(n\) samples and \(d>1\) predictor variables.

y

a vector of size \(n\), with the classes to predict.

distribution

Marginal distribution to be used: "normal" or "kernel", if it is NULL, a normality test is performed. By default, NULL

copula

Either a character or a string vector with the name of the copula to be used: "amh", "clayton", "frank", "gaussian", "grid", "gumbel", "independent" and "joe", by default "frank". For parametric copulas, "amh", "clayton", "frank", "gaussian", "gumbel", and "joe", one or more copulas can be selected. For nonparametric copula, only "grid" can be selected. See the examples for more details.

weights

A character with the weight construction method for the graphical model: "likelihood" or "mutual_information", by default "likelihood".

graph_model

A character with the graphical model structure: "tree" or "chain", by default "tree".

k

Only for the grid copula. Positive integer indicating the number of subintervals for the \(U_2\) variable.

m

Only for the grid copula. Positive integer indicating the number of subintervals for the \(U_1\) variable.

method_grid

Only for the grid copula. Fitting method, least squares "ls" or maximum likelihood "ml", by default "ml".

References

Salinas-Gutiérrez, R., Hernández-Aguirre, A., Villa-Diharce, E.R. (2014). Copula selection for graphical models in continuous Estimation of Distribution Algorithms. Computational Statistics, 29(3–4):685–713. tools:::Rd_expr_doi("10.1007/s00180-013-0457-y")

Examples

Run this code
# Example 1
X <- iris[,1:4]
y <- iris$Species
model <- copulaClassifier(X = X, y = y, copula = "frank",
                      distribution = "kernel", graph_model = "tree")
y_pred <- copulaPredict(X = X, model = model)
classification_report(y_true = y, y_pred = y_pred$class)

# Example 2
X <- iris[,1:4]
y <- iris$Species
model <- copulaClassifier(X = X, y = y, copula = c("frank","clayton"), 
                        distribution = "kernel", graph_model = "chain")
y_pred <- copulaPredict(X = X, model = model)
classification_report(y_true = y, y_pred = y_pred$class)

Run the code above in your browser using DataLab