BC.positive.reg.FRST: Positive region based on fuzzy rough set

View source: R/BasicFuzzyRoughSets.R

BC.positive.reg.FRSTR Documentation

Positive region based on fuzzy rough set

Description

This is a function that implements a fundamental concept of fuzzy rough set theory which is the positive region and the corresponding degree of dependency. The explanation about this concept can be seen in Introduction-FuzzyRoughSets.

Usage

BC.positive.reg.FRST(decision.table, fuzzyroughset)

Arguments

decision.table

a "DecisionTable" class representing the decision table. See SF.asDecisionTable.

fuzzyroughset

a "LowerUpperApproximation" class representing a fuzzy rough set that is produced by BC.LU.approximation.FRST.

Details

In order to compute the function, we need to calculate the indiscernibility relation by executing BC.IND.relation.FRST and the lower and upper approximations by calling BC.LU.approximation.FRST.

Value

A class "PositiveRegion" containing the following components:

  • positive.freg: a vector representing membership degrees to the fuzzy positive region for each index of objects.

  • degree.dependency: a value expressing the degree of dependency.

  • type.model: a string representing type of models. In this case, it is "FRST" which means fuzzy rough set theory.

Author(s)

Lala Septem Riza

References

R. Jensen and Q. Shen, "New Approaches to Fuzzy-Rough Feature Selection", IEEE Trans. on Fuzzy Systems, vol. 19, no. 4, p. 824 - 838 (2009).

See Also

BC.LU.approximation.FRST, BC.IND.relation.FRST, BC.IND.relation.RST,

BC.LU.approximation.RST, and BC.positive.reg.FRST.

Examples

###########################################################
##### 1. Example: Using a simple decision table containing 
#####             nominal values for the decision attribute
###########################################################
dt.ex1 <- data.frame(c(-0.4, -0.4, -0.3, 0.3, 0.2, 0.2), 
                     c(-0.3, 0.2, -0.4, -0.3, -0.3, 0),
			        c(-0.5, -0.1, -0.3, 0, 0, 0),
			        c("no", "yes", "no", "yes", "yes", "no"))
colnames(dt.ex1) <- c("a", "b", "c", "d")
decision.table <- SF.asDecisionTable(dataset = dt.ex1, decision.attr = 4)

## let us consider the first and second attributes only as conditional attribute
condAttr <- c(1, 2)

## let us consider the fourth attribute as decision attribute
decAttr <- c(4)

#### Calculate fuzzy indiscernibility relation ####
control.ind <- list(type.aggregation = c("t.tnorm", "lukasiewicz"), 
                    type.relation = c("tolerance", "eq.1"))
control.dec <- list(type.aggregation = c("crisp"), type.relation = "crisp")

IND.condAttr <- BC.IND.relation.FRST(decision.table, attributes = condAttr, 
                                     control = control.ind) 
IND.decAttr <- BC.IND.relation.FRST(decision.table, attributes = decAttr, 
                                     control = control.dec) 

#### Calculate fuzzy lower and upper approximation using type.LU : 
#### "implicator.tnorm" 
control <- list(t.implicator = "lukasiewicz")
FRST.LU <- BC.LU.approximation.FRST(decision.table, IND.condAttr, IND.decAttr, 
              type.LU = "implicator.tnorm", control = control)

#### Determine positive regions ####
res.1 <- BC.positive.reg.FRST(decision.table, FRST.LU)

###########################################################
##### 2. Example: Using the housing decision table containing 
#####             continuous values for the decision attribute
###########################################################

## In this case, we are using the housing dataset containing 7 objects
data(RoughSetData)
decision.table <- RoughSetData$housing7.dt

conditional.attr <- c(1, 2)
decision.attr = c(14)
control.ind <- list(type.aggregation = c("t.tnorm", "lukasiewicz"), 
                     type.relation = c("tolerance", "eq.1"))

#### Calculate fuzzy indiscernibility relation ####
IND.condAttr <- BC.IND.relation.FRST(decision.table, attributes = conditional.attr, 
                                     control = control.ind) 
IND.decAttr <- BC.IND.relation.FRST(decision.table, attributes = decision.attr, 
                                     control = control.ind) 

#### Calculate fuzzy lower and upper approximation using type.LU : 
#### "implicator.tnorm" 
control <- list(t.implicator = "lukasiewicz", t.tnorm = "lukasiewicz")

FRST.LU <- BC.LU.approximation.FRST(decision.table, IND.condAttr, IND.decAttr, 
              type.LU = "implicator.tnorm", control = control)

#### Determine fuzzy regions ####
res.2 <- BC.positive.reg.FRST(decision.table, FRST.LU)


RoughSets documentation built on May 29, 2024, 7:34 a.m.