# rbcoverage: Compute rule base coverage of data In beerda/lfl: Linguistic Fuzzy Logic

## Description

This function computes rule base coverage, i.e. a an average of maximum membership degree at which each row of data fires the rules in rule base.

## Usage

 ```1 2 3 4 5 6``` ```rbcoverage( x, rules, tnorm = c("goedel", "goguen", "lukasiewicz"), onlyAnte = TRUE ) ```

## Arguments

 `x` Data for the rules to be evaluated on. Could be either a numeric matrix or numeric vector. If matrix is given then the rules are evaluated on rows. Each value of the vector or column of the matrix represents a predicate - it's numeric value represents the truth values (values in the interval [0, 1]). `rules` Either an object of class "farules" or list of character vectors where each vector is a rule with consequent being the first element of the vector. Elements of the vectors (predicate names) must correspond to the `x`'s names (of columns if `x` is a matrix). `tnorm` A character string representing a triangular norm to be used (either `"goedel"`, `"goguen"`, or `"lukasiewicz"`) or an arbitrary function that takes a vector of truth values and returns a t-norm computed of them. `onlyAnte` TRUE if only antecedent-part of a rule should be evaluated. Antecedent-part of a rule are all predicates in rule vector starting from the 2nd position. (First element of a rule is the consequent - see above.) If FALSE, then the whole rule will be evaluated (antecedent part together with consequent).

## Details

Let f_{ij} be a truth value of i-th rule on j-th row of data `x`. Then m_j = max(f_{.j}) is a maximum truth value that is reached for the j-th data row with the rule base. Then the rule base coverage is a mean of that truth values, i.e. rbcoverage = mean(m_.).

## Value

A numeric value of the rule base coverage of given data.

Michal Burda

## References

M. Burda, M. Štěpnička, Reduction of Fuzzy Rule Bases Driven by the Coverage of Training Data, in: Proc. 16th World Congress of the International Fuzzy Systems Association and 9th Conference of the European Society for Fuzzy Logic and Technology (IFSA-EUSFLAT 2015), Advances in Intelligent Systems Research, Atlantic Press, Gijon, 2015.

`fire()`, `reduce()`
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13``` ``` x <- matrix(1:20 / 20, nrow=2) colnames(x) <- letters[1:10] rules <- list(c('a', 'c', 'e'), c('b'), c('d', 'a'), c('c', 'a', 'b')) rbcoverage(x, rules, "goguen", TRUE) # returns 1 rules <- list(c('d', 'a'), c('c', 'a', 'b')) rbcoverage(x, rules, "goguen", TRUE) # returns 0.075) ```