Learn R Programming

RoughSets (version 1.0-0)

C.FRNN.FRST: The fuzzy-rough nearest neighbour algorithm

Description

It is used to predict new datasets/patterns based on the fuzzy-rough nearest neighbour algorithm (FRNN) proposed by (R. Jensen and C. Cornelis, 2011).

Usage

C.FRNN.FRST(decision.table, newdata, control = list())

Arguments

decision.table
a "DecisionTable" class representing the decision table. See SF.asDecisionTable. It should be noted that the data must be numeric values instead of string/char.
newdata
a "DecisionTable" class representing data for the test process.

See SF.asDecisionTable.

control
a list of other parameters as follows.
  • type.LU: a type of lower and upper approximations. See SectionDetails. The default value istype.LU = "implicator.tnorm".
  • k: the number of neig

Value

  • A matrix of predicted classes of newdata.

Details

This method uses the fuzzy lower and upper approximation to improve the fuzzy nearest neighbour (FNN) algorithm. This algorithm assigns a class to a target instance $t$ as follows.
  • Determine$k$nearest neighbors considering their similarity to new patterns.
  • Assign new patterns to the class based on maximal value of fuzzy lower and upper approximation. If a value of fuzzy lower approximation is high, it shows that neighbours of newdata belong to a particular class, e.g.C. On the other hand, a high value of fuzzy upper approximation means that at least one neighbour belongs to that class.

In this function, we provide two approaches based on types of fuzzy lower and upper approximations. The following is a list of the considered approximations:

  • "implicator.tnorm": It refers to lower and upper approximations based on implicator/t-norm approach. For more detail, it can be seen inBC.LU.approximation.FRST. When using this approach, we need to assign thecontrolparameter as follows:control <- list(type.LU = "implicator.tnorm", k,type.aggregation, type.relation, t.implicator)The detailed description of the components in thecontrolparameter can be seen inBC.LU.approximation.FRST.
  • "vqrs": It refers to lower and upper approximations based on vaquely quantified rough sets. For more detail, it can be seen inBC.LU.approximation.FRST. When using this approach, we need to assign thecontrolparameter as follows:control <- list(type.LU = "vqrs", k, q.some, q.most,type.relation, type.aggregation)The detailed description of the components in thecontrolparameter can be seen inBC.LU.approximation.FRST.

References

R. Jensen and C. Cornelis, "Fuzzy-rough Nearest Neighbour Classification and Prediction", Theoretical Computer Science, vol. 412, p. 5871 - 5884 (2011).

See Also

C.FRNN.O.FRST, C.POSNN.FRST

Examples

Run this code
#############################################################
## In this example, we are using Iris dataset.
## It should be noted that since the values of the decision attribute are strings,
## they should be transformed into numeric values using unclass()
#############################################################
data(iris)
## shuffle the data
set.seed(2)
irisShuffled <- iris[sample(nrow(iris)),]

## transform values of the decision attribute into numerics
irisShuffled[,5] <- unclass(irisShuffled[,5])

## split the data into training and testing data
iris.training <- irisShuffled[1:105,]
iris.testing <- irisShuffled[106:nrow(irisShuffled),1:4]

colnames(iris.training) <- c("Sepal.Length", "Sepal.Width", "Petal.Length",
                       "Petal.Width", "Species")

## convert into a standard decision table
decision.table <- SF.asDecisionTable(dataset = iris.training, decision.attr = 5,
                                     indx.nominal = c(5))
tst.iris <- SF.asDecisionTable(dataset = iris.testing)

###### FRNN algorithm using lower/upper approximation:
###### Implicator/tnorm based approach
control <- list(type.LU = "implicator.tnorm", k = 20,
                type.aggregation = c("t.tnorm", "lukasiewicz"),
                type.relation = c("tolerance", "eq.1"), t.implicator = "lukasiewicz")
res.1 <- C.FRNN.FRST(decision.table = decision.table, newdata = tst.iris,
                             control = control)

###### FRNN algorithm using VQRS
control <- list(type.LU = "vqrs", k = 20, q.some = c(0.1, 0.6), q.most = c(0.2, 1),
                 type.relation = c("tolerance", "eq.1"),
                 type.aggregation = c("t.tnorm","lukasiewicz"))
res.2 <- C.FRNN.FRST(decision.table = decision.table, newdata = tst.iris,
                             control = control)

Run the code above in your browser using DataLab