Learn R Programming

RoughSets (version 1.0-0)

FS.quickreduct.FRST: The fuzzy QuickReduct algorithm based on FRST

Description

It is a function implementing the fuzzy QuickReduct algorithm for feature selection based on FRST. The fuzzy QuickReduct is a modification of QuickReduct based on RST (see FS.quickreduct.RST).

Usage

FS.quickreduct.FRST(decision.table,
    type.method = "fuzzy.dependency", type.QR = "fuzzy.QR",
    control = list(), ...)

Arguments

decision.table
a "DecisionTable" class representing the decision table. See SF.asDecisionTable.
type.method
a string representing the type of methods. The complete description can be found in Section Details.
type.QR
a string expressing the type of QuickReduct algorithm which is one of the two following algorithms:
  • "fuzzy.QR": it is the original fuzzy rough QuickReduct algorithm based on (R. Jensen and Q. Shen, 2002).
  • "modifi
control
a list of other parameters as follows.
  • type.aggregation: a type of aggregation operator. SeeBC.IND.relation.FRST.
  • t.implicator: a type of implicato
...
other parameters.

Value

  • A class "FeatureSubset" that contains the following components:
    • reduct: a list representing a single reduct. In this case, it could be a superreduct or just a subset of feature.
    • type.method: a string representing the type of method.
    • type.task: a string showing the type of task which is"feature selection".
    • model: a string representing the type of model. In this case, it is"FRST"which means fuzzy rough set theory.

Details

To get a clear picture of the fuzzy QuickReduct algorithm, the following is the algorithm proposed by (R. Jensen and Q. Shen, 2002). Then, the algorithm has been modified by (R. B. Bhatt and M. Gopal, 2005) to improve stopping criteria. This function is aimed to implement both algorithms. These algorithms can be executed by assigning the parameter type.QR with "fuzzy.QR" and "modified.QR" for fuzzy quickreduct and modified fuzzy quickreduct algorithms, respectively. Additionally, in the control parameter, we provide one component which is randomize having boolean values: TRUE or FALSE. randomize = TRUE means that we evaluate some (or not all) attributes randomly along iteration. It will be useful if we have a large number of attributes in a decision table.

In this function, we have considered many approaches based on the lower and upper approximations. The following list shows not only what kinds of methods that have been considered but also simple explanation about their concepts. Additionally, those approaches can be executed by assigning the following value to the parameter type.method.

  • "fuzzy.dependency": It is based on the degree of dependency using the implication/t-norm model approximation (R. Jensen and Q. Shen, 2009). The detailed concepts about this approximation have been explained inB.Introduction-FuzzyRoughSetsandBC.LU.approximation.FRST.
  • "fuzzy.boundary.reg": It is based on the fuzzy boundary region proposed by (R. Jensen and Q. Shen, 2009). This algorithm introduced the usage of the total uncertainty degree$\lambda_B(Q)$for all concepts of feature subset$B$and decision attribute$Q$. The total uncertainty degree is used as a parameter to select appropriate features.
  • "vqrs": It is based on vaquely quantified rough set (VQRS) proposed by (C. Cornelis and R. Jensen, 2008). See alsoBC.LU.approximation.FRST.
  • "owa": Based on ordered weighted average (OWA) based fuzzy rough set, (C. Cornelis et al, 2010) proposed the degree of dependency as a parameter employed in the algorithm to select appropriate features. The explanation about lower and upper approximations based on OWA can be found inBC.LU.approximation.FRST.
  • "rfrs": It is based on degree of dependency that is obtained by performing the robust fuzzy rough sets proposed by (Q. Hu et al, 2012). The detailed concepts about this approximation have been explained inBC.LU.approximation.FRST.
  • "min.positive.reg": Based on measure introduced in (C. Cornelis et al, 2010) which considers the most problematic element in the positive region, defined using the implicator/t-norm model.
  • "fvprs": It is based on degree of dependency proposed by (S. Y. Zhao et al, 2009). The degree is obtained by using fuzzy lower approximation based on fuzzy variable precision rough set model.
  • "fuzzy.discernibility": This approach attempts to combine the the decision-relative discernibility matrix and the fuzzy QuickReduct algorithm. (R. Jensen and Q. Shen, 2009) introduced a measurement which is the degree of satisfaction to select the attributes.
  • "beta.pfrs": Based on$\beta$-precision fuzzy rough sets ($\beta$-PFRS) proposed by (J. M. F. Salido and S. Murakami, 2003), the degree of dependency as a parameter employed in the algorithm to select appropriate features. The explanation about lower and upper approximations based on$\beta$-PFRS can be found inBC.LU.approximation.FRST.

It should be noted that the parameter type.method is related to parameter control. In other words, we only set the components in the control parameter that related to the chosen type of method. The following is a list showing the components of control needed by each type of methods.

  • type.method = "fuzzy.dependency":control <- list(t.implicator, type.relation, type.aggregation)
  • type.method = "fuzzy.boundary.reg":control <- list(t.implicator, type.relation, type.aggregation)
  • type.method = "vqrs":control <- list(alpha, q.some, q.most, type.aggregation)
  • type.method = "owa":control <- list(t.implicator, type.relation, m.owa, type.aggregation)
  • type.method = "rfrs":control <- list(t.implicator, type.relation, type.rfrs,k.rfrs, type.aggregation)
  • type.method = "min.positive.reg":control <- list(alpha, t.implicator, type.relation, type.aggregation)
  • type.method = "fuzzy.discernibility":control <- list(alpha, t.implicator, type.relation, type.aggregation)
  • type.method = "fvprs":control <- list(alpha.precision, t.implicator, type.relation, type.aggregation)
  • type.method = "beta.pfrs":control <- list(t.implicator, type.relation, beta.quasi, type.aggregation)
The descriptions of each component can be seen in the documentation of the control parameter.

It should be noted that this function does not give the new decision table directly. An additional function called SF.applyDecTable is used to produce new decision table based on information about the reduct from this function. See Section Examples.

References

C. Cornelis, G. Hurtado Martin, R. Jensen, and D. Slezak, "Feature Selection with Fuzzy Decision Reducts", Information Sciences, vol. 180, no. 2, p. 209 - 224 (2010).

C. Cornelis, N. Verbiest, and R. Jensen, "Ordered Weighted Average Based Fuzzy Rough Sets", Proceedings of the 5th International Conference on Rough Sets and Knowledge Technology (RSKT 2010), p. 78 - 85 (2010).

C. Cornelis and R. Jensen, "A Noise-tolerant Approach to Fuzzy-rough Feature Selection", Proceedings of the 2008 IEEE International Conference on Fuzzy Systems (FUZZ-IEEE 2008), p. 1598 - 1605 (2008).

J. M. F. Salido and S. Murakami, "Rough Set Analysis of a General Type of Fuzzy Data Using Transitive Aggregations of Fuzzy Similarity Relations", Fuzzy Sets Syst., vol. 139, p. 635 - 660 (2003).

Q. Hu, L. Zhang, S. An, D. Zhang, and D. Yu, "On Robust Fuzzy Rough Set Models", IEEE Trans. on Fuzzy Systems, vol. 20, no. 4, p. 636 - 651 (2012).

R. B. Bhatt and M. Gopal, "On Fuzzy-rough Sets Approach to Feature Selection", Pattern Recognition Letters, vol. 26, no. 7, p. 965 - 975 (2005).

R. Jensen and Q. Shen, "Fuzzy-rough Sets for Descriptive Dimensionality Reduction", In: Proceedings of IEEE International Conference on Fuzzy System, FUZZ-IEEE, p. 29 - 34 (2002).

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

S. Y. Zhao, E. C. C. Tsang, and D. G. Chen, "The Model of Fuzzy Variable Precision Rough Sets", IEEE Trans. Fuzzy Systems, vol. 17, no. 2, p. 451 - 467 (2009).

See Also

FS.quickreduct.RST and FS.feature.subset.computation.

Examples

Run this code
##########################################################
## Example 1: Dataset containing nominal values on all attributes
##########################################################

data(RoughSetData)
decision.table <- RoughSetData$housing7.dt

########## using fuzzy lower approximation ##############
control <- list(t.implicator = "lukasiewicz", type.relation = c("tolerance", "eq.1"),
               type.aggregation = c("t.tnorm", "lukasiewicz"))
reduct.1 <- FS.quickreduct.FRST(decision.table, type.method = "fuzzy.dependency",
                            type.QR = "fuzzy.QR", control = control)

########## using fuzzy boundary region ##############
control <- list(t.implicator = "lukasiewicz", type.relation = c("tolerance", "eq.1"),
                type.aggregation = c("t.tnorm", "lukasiewicz"))
reduct.2 <- FS.quickreduct.FRST(decision.table, type.method = "fuzzy.boundary.reg",
                            type.QR = "fuzzy.QR", control = control)

########## using vaquely quantified rough sets (VQRS) #########
control <- list(alpha = 0.9, q.some = c(0.1, 0.6), q.most = c(0.2, 1),
                type.aggregation = c("t.tnorm", "lukasiewicz"))
reduct.3 <- FS.quickreduct.FRST(decision.table, type.method = "vqrs",
                            type.QR = "fuzzy.QR", control = control)

########## ordered weighted average (OWA) #########
control <- list(t.implicator = "lukasiewicz", type.relation = c("tolerance", "eq.1"),
                m.owa = 3, type.aggregation = c("t.tnorm","lukasiewicz"))
reduct.4 <- FS.quickreduct.FRST(decision.table, type.method = "owa",
                            type.QR = "fuzzy.QR", control = control)

########## robust fuzzy rough sets (RFRS) #########
control <- list(t.implicator = "lukasiewicz", type.relation = c("tolerance", "eq.1"),
               type.rfrs = "k.trimmed.min", type.aggregation = c("t.tnorm", "lukasiewicz"),
               k.rfrs = 0)
reduct.5 <- FS.quickreduct.FRST(decision.table, type.method = "rfrs",
                            type.QR = "fuzzy.QR", control = control)

########## using min positive region (delta) ###########
control <- list(alpha = 1, t.implicator = "lukasiewicz",
                type.relation = c("tolerance", "eq.1"), type.aggregation =
                                c("t.tnorm", "lukasiewicz"))
reduct.6 <- FS.quickreduct.FRST(decision.table, type.method = "min.positive.reg",
                            type.QR = "fuzzy.QR", control = control)

########## using FVPRS approximation ##############
control <- list(alpha.precision = 0.05, t.implicator = "lukasiewicz",
               type.aggregation = c("t.tnorm", "lukasiewicz"),
               type.relation = c("tolerance", "eq.1"))
reduct.7 <- FS.quickreduct.FRST(decision.table, type.method = "fvprs",
                            type.QR = "fuzzy.QR", control = control)

########## using beta.PFRS approximation ##############
control <- list(t.implicator = "lukasiewicz", type.relation = c("tolerance", "eq.1"),
                beta.quasi = 0.05, type.aggregation = c("t.tnorm", "lukasiewicz"))
reduct.8 <- FS.quickreduct.FRST(decision.table, type.method = "beta.pfrs",
                            type.QR = "fuzzy.QR", control = control)

########## using fuzzy discernibility matrix ##############
control <- list(alpha = 1, type.relation = c("tolerance", "eq.1"),
               type.aggregation = c("t.tnorm", "lukasiewicz"),
                t.implicator = "lukasiewicz")
reduct.9 <- FS.quickreduct.FRST(decision.table, type.method = "fuzzy.discernibility",
                            type.QR = "fuzzy.QR", control = control)

##########################################################
## Example 2: Dataset containing nominal and continuous values
## In this case, we only provide one method but others work in
## the same way.
## In this example, we will show how to get the
## new decision table as well
##########################################################
data(RoughSetData)
decision.table <- RoughSetData$hiring.dt

########## using fuzzy lower approximation ##############
control <- list(type.aggregation = c("t.tnorm", "lukasiewicz"),
               t.implicator = "lukasiewicz", type.relation = c("tolerance", "eq.1"))
reduct.1 <- FS.quickreduct.FRST(decision.table, type.method = "fuzzy.dependency",
                            type.QR = "fuzzy.QR", control = control)

## get new decision table based on reduct
new.decTable <- SF.applyDecTable(decision.table, reduct.1)

Run the code above in your browser using DataLab