The aim of this package is to provide tools to perform fuzzy formalconcept analysis (FCA) from within R. It provides functions to load andsave a Formal Context, extract its concept lattice and implications. Inaddition, one can use the implications to compute semantic closures offuzzy sets and, thus, build recommendation systems.
The fcaR package provides data structures which allow the user towork seamlessly with formal contexts and sets of implications. Moreexplicitly, three main classes are implemented, using theobject-oriented-programming paradigm in R:
Two additional helper classes are implemented:
Since fcaR is an extension of the data model in the arules package,most of the methods and classes implemented interoperates with the mainS4 classes in arules (transactions and rules).
This package is available at CRAN, so its stable version can beeasily installed using:
install.packages("fcaR")The development version of this package can be installed with
remotes::install_github("neuroimaginador/fcaR", build_vignettes = TRUE)or
remotes::install_github("Malaga-FCA-group/fcaR", build_vignettes = TRUE)| P1 | P2 | P3 | P4 | P5 | P6 | |
|---|---|---|---|---|---|---|
| O1 | 0.0 | 1.0 | 0.5 | 0.5 | 1.0 | 0 |
| O2 | 1.0 | 1.0 | 1.0 | 0.0 | 0.0 | 0 |
| O3 | 0.5 | 0.5 | 0.0 | 0.0 | 0.0 | 1 |
| O4 | 0.0 | 0.0 | 0.0 | 1.0 | 0.5 | 0 |
| O5 | 0.0 | 0.0 | 1.0 | 0.5 | 0.0 | 0 |
| O6 | 0.5 | 0.0 | 0.0 | 0.0 | 0.0 | 0 |
Here, a value\(x\) in theintersection of a row and a column indicates that the object of thecorresponding row possesses the attribute in the column in a degree ofat least\(x\) (if
We can build a FormalContext object:
fc<- FormalContext$new(I)print(fc)#> FormalContext with 6 objects and 6 attributes.#> P1 P2 P3 P4 P5 P6#> O1 0 1 0.5 0.5 1 0#> O2 1 1 1 0 0 0#> O3 0.5 0.5 0 0 0 1#> O4 0 0 0 1 0.5 0#> O5 0 0 1 0.5 0 0#> O6 0.5 0 0 0 0 0With a single function, we can compute the set of concepts:
# Compute all conceptsfc$find_concepts()# The first conceptfc$concepts$sub(1)#> ({O1, O2, O3, O4, O5, O6}, {})# And plot the concept latticefc$concepts$plot()
We can also extract implications from the formal context:
# Extract implicationsfc$find_implications()# Which implications have been extractedfc$implications#> Implication set with 12 implications.#> Rule 1: {P6 [0.5]} -> {P1 [0.5], P2 [0.5], P6}#> Rule 2: {P5 [0.5]} -> {P4 [0.5]}#> Rule 3: {P3 [0.5], P4 [0.5], P5 [0.5]} -> {P2, P5}#> Rule 4: {P3 [0.5], P4} -> {P3}#> Rule 5: {P2 [0.5], P4 [0.5]} -> {P2, P3 [0.5], P5}#> Rule 6: {P2 [0.5], P3 [0.5]} -> {P2}#> Rule 7: {P2, P3, P4 [0.5], P5} -> {P4}#> Rule 8: {P1 [0.5], P4 [0.5]} -> {P1, P2, P3, P4, P5, P6}#> Rule 9: {P1 [0.5], P3 [0.5]} -> {P1, P2, P3}#> Rule 10: {P1 [0.5], P2} -> {P1}#> Rule 11: {P1, P2 [0.5]} -> {P2}#> Rule 12: {P1, P2, P3, P6} -> {P4, P5}Some fundamental functionalities on the concept lattice associated tothe formal context have been implemented:
Also, one can compute the support of both implications andconcepts:
fc$implications$support()#> [1] 0.1666667 0.3333333 0.1666667 0.0000000 0.1666667 0.3333333 0.0000000#> [8] 0.0000000 0.1666667 0.1666667 0.1666667 0.0000000fc$concepts$support()#> [1] 1.0000000 0.5000000 0.3333333 0.1666667 0.1666667 0.1666667 0.0000000#> [8] 0.5000000 0.3333333 0.3333333 0.1666667 0.0000000 0.5000000 0.3333333#> [15] 0.3333333 0.1666667 0.1666667 0.0000000 0.5000000 0.3333333 0.1666667#> [22] 0.1666667 0.1666667 0.0000000 0.1666667 0.0000000In this package, we have implemented a logic to manage implications.This so-called Simplification Logic allows us to simplify the extractedrules by removing redundancies, as well as computing the closure of agiven fuzzy attribute set.
# Reduce the number of implications using two simple# rules. The algorithm applies the specified rules# in batches, if the number of rules is high.fc$implications$apply_rules(rules =c("composition","generalization"))#> Processing batch#> --> Composition: from 12 to 12 in 0.001 secs.#> --> Generalization: from 12 to 12 in 0.001 secs.#> Batch took 0.004 secs.# Reduced set of implicationsfc$implications#> Implication set with 12 implications.#> Rule 1: {P6 [0.5]} -> {P1 [0.5], P2 [0.5], P6}#> Rule 2: {P5 [0.5]} -> {P4 [0.5]}#> Rule 3: {P3 [0.5], P4 [0.5], P5 [0.5]} -> {P2, P5}#> Rule 4: {P3 [0.5], P4} -> {P3}#> Rule 5: {P2 [0.5], P4 [0.5]} -> {P2, P3 [0.5], P5}#> Rule 6: {P2 [0.5], P3 [0.5]} -> {P2}#> Rule 7: {P2, P3, P4 [0.5], P5} -> {P4}#> Rule 8: {P1 [0.5], P4 [0.5]} -> {P1, P2, P3, P4, P5, P6}#> Rule 9: {P1 [0.5], P3 [0.5]} -> {P1, P2, P3}#> Rule 10: {P1 [0.5], P2} -> {P1}#> Rule 11: {P1, P2 [0.5]} -> {P2}#> Rule 12: {P1, P2, P3, P6} -> {P4, P5}All these functions work natively with fuzzy and with binarydatasets.
For more details on the methods implemented and further examples, seethe vignettes in this package.
With respect to the CRAN version, the development version has thefollowing changes.
Enhancements:
fc$scale() function admits a new argumentbg (default: FALSE) which, if set to TRUE, avoids computingthe background knowledge of the scales.Enhancements:
fc$use_logic() to select one of theavailable_logics().Bugfixes:
Bugfixes:
Enhancements:
New functionality:
Bugfixes:
Guigues J, Duquenne V (1986). “Familles minimales d’implicationsinformatives résultant d’un tableau de données binaires.”Mathématiques et Sciences humaines,95, 5-18.
Ganter B, Wille R (1999).Formal concept analysis : mathematicalfoundations. Springer. ISBN 3540627715.
Cordero P, Enciso M, Mora Á, Pérez de Guzman I (2002). “SLFD Logic:Elimination of Data Redundancy in Knowledge Representation.”Advances in Artificial Intelligence - IBERAMIA 2002,2527, 141-150. doi: 10.1007/3-540-36131-6_15 (URL:https://doi.org/10.1007/3-540-36131-6_15).
Belohlavek R (2002). “Algorithms for fuzzy concept lattices.” InProc. Fourth Int. Conf. on Recent Advances in Soft Computing.Nottingham, United Kingdom, 200-205.
Hahsler M, Grun B, Hornik K (2005). “arules - a computationalenvironment for mining association rules and frequent item sets.”JStat Softw,14, 1-25.
Mora A, Cordero P, Enciso M, Fortes I, Aguilera G (2012). “Closurevia functional dependence simplification.”International Journal ofComputer Mathematics,89(4), 510-526.
Belohlavek R, Cordero P, Enciso M, Mora Á, Vychodil V (2016).“Automated prover for attribute dependencies in data with grades.”International Journal of Approximate Reasoning,70,51-67.