pbld: Perform a Perception-based Logical Deduction (PbLD) with...

View source: R/pbld.R

pbldR Documentation

Perform a Perception-based Logical Deduction (PbLD) with given rule-base on given dataset

Description

Take a set of rules (a rule-base) and perform a Perception-based Logical Deduction (PbLD) on each row of a given fsets() object.

Usage

pbld(
  x,
  rules,
  partition,
  values,
  type = c("global", "local"),
  parallel = FALSE
)

Arguments

x

Input to the inference. It should be an object of class fsets() (e.g. created by using the fcut() or lcut() functions). It is basically a matrix with columns representing fuzzy sets.

Each row represents a single case of inference. Columns should be named after predicates in rules' antecedents.

rules

A rule-base (a.k.a. linguistic description) either in the form of the farules() object or as a list of character vectors where each element is a fuzzy set name (a predicate) and thus each such vector forms a rule.

partition

A fsets() object with columns that are consequents in rules. These membership degrees must correspond to values.

values

Crisp values that correspond to rows of membership degrees in the partition matrix. Function assumes that the values are sorted in the ascending order.

type

The type of inference to use. It can be either "local" or "global" (default).

parallel

Whether the processing should be run in parallel or not. Parallelization is implemented using the foreach::foreach() package. The parallel environment must be set properly in advance, e.g. with the doMC::registerDoMC() function.

Details

Perform a Perception-based Logical Deduction (PbLD) with given rule-base rules on each row of input x. Columns of x are truth values of predicates that appear in the antecedent part of rules, partition together with values determine the shape of predicates in consequents: each element in values corresponds to a row of membership degrees in partition.

Value

A vector of inferred defuzzified values. The number of resulting values corresponds to the number of rows of the x argument.

Author(s)

Michal Burda

References

A. Dvořák, M. Štěpnička, On perception-based logical deduction and its variants, 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.

See Also

lcut(), searchrules(), fire(), aggregateConsequents(), defuzz()

Examples


# --- TRAINING PART ---
# custom context of the RHS variable
uptakeContext <- ctx3(7, 28.3, 46)

# convert data into fuzzy sets
d <- lcut(CO2, context=list(uptake=uptakeContext))

# split data into the training and testing set
testingIndices <- 1:5
trainingIndices <- setdiff(seq_len(nrow(CO2)), testingIndices)
training <- d[trainingIndices, ]
testing <- d[testingIndices, ]

# search for rules
r <- searchrules(training, lhs=1:38, rhs=39:58, minConfidence=0.5)

# --- TESTING PART ---
# prepare values and partition
v <- seq(uptakeContext[1], uptakeContext[3], length.out=1000)
p <- lcut(v, name='uptake', context=uptakeContext)

# do the inference
pbld(testing, r, p, v)


beerda/lfl documentation built on Feb. 15, 2023, 8:15 a.m.