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

Description Usage Arguments Details Value Author(s) References See Also Examples

View source: R/FeatureSelection.R

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

1
2
3
4
5
6
FS.quickreduct.FRST(
  decision.table,
  type.method = "fuzzy.dependency",
  type.QR = "fuzzy.QR",
  control = list()
)

Arguments

decision.table

an object of a "DecisionTable" class representing a 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 (Jensen and Shen, 2002).

  • "modified.QR": it is the modified QuickReduct algorithm based on (Bhatt and Gopal, 2005).

control

a list of other parameters as follows.

  • type.aggregation: a type of aggregation operator. See BC.IND.relation.FRST.

  • t.implicator: a type of implicator function. See BC.LU.approximation.FRST. The default value is "lukasiewicz".

  • type.relation: a type of indiscernibility relation. See BC.IND.relation.FRST. The default value is type.relation = c("tolerance", "eq.3").

  • alpha: a real number between 0 and 1 expressing a threshold value or stopping criterion. The following methods use the parameter: "vqrs",

    "min.positive.reg", and "fuzzy.discernibility". The default value is 0.95.

  • alpha.precision: a real number between 0 and 1 expressing variable precision (α) for "fvprs". See BC.LU.approximation.FRST. The default value is 0.05.

  • q.some: a pair of numeric values for the alpha and beta parameter of VQRS for the quantifier some. The default value is q.some = c(0.1, 0.6).

    See BC.LU.approximation.FRST.

  • q.most: a pair of numeric values for the alpha and beta parameter of VQRS for the quantifier most. The default value is q.most = c(0.2, 1).

    See BC.LU.approximation.FRST.

  • m.owa: a numeric value to define the parameter in OWA. The default value is the mean number of objects.

  • type.rfrs: a type of robust fuzzy rough sets.

    The default is type.rfrs = "k.trimmed.min").

    See BC.LU.approximation.FRST.

  • k.rfrs: a value between 0 and length of data representing index of considered data. The default is k.rfrs = round(0.5*nrow(decision.table)). See BC.LU.approximation.FRST.

  • beta.quasi: a number between 0 and 1 representing β-precision t-norms and t-conorms. The default value is 0.05.

  • randomize: a boolean value to define whether selecting attributes randomly or not. For more detail, see in Section Details. The default value is FALSE.

It should be noted that instead of supplying all the above parameters, we only set those parameters needed by the considered method. See in Section Details. Also, we provide some examples to illustrate how the parameters are used.

Details

In this function, we provide an algorithm proposed by (Jensen and Shen, 2002) which is fuzzy QuickReduct. Then, the algorithm has been modified by (Bhatt and 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 of the lower and upper approximations. The following list shows considered methods and their descriptions. Additionally, those approaches can be executed by assigning the following value to the parameter type.method.

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.

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.

Value

A class "FeatureSubset" that contains the following components:

Author(s)

Lala Septem Riza

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 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).

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).

See Also

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

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
##########################################################
## 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 ##############
## Not run: 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 vaguely 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)
## End(Not run)

##########################################################
## 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)

janusza/RoughSets documentation built on Jan. 26, 2020, 11:22 p.m.