FLPD is an automatic learning system based on fuzzy prototypes.
Using FLPD, it's easy to calculate supervised and unsupervised learning processes. At the same time, more experimented users can configure a high number of parameters of the calculation process, and they can also design their own personalized learning procedures.
The induction kernel of the system is based on the HPI algorithm (Hierarchical Prototype Induction). However, an advanced user can design and use its own induction algorithm based on fuzzy prototypes.
The system is structured in layers which contains several utilities working at different abstraction levels, allowing to combine flexibility, power and simplicity.
All the system is based in a C++ library for fuzzy logic and machine learning, which allows to represent and manipulate fuzzy information and apply machine learning techniques.
Here are some key features of "FLPD":
· Fuzzy Sets
· The system includes the needed classes for representing and manipulating discrete fuzzy sets and, at some extent, continuous fuzzy sets. Specific classes for handling fuzzy sets transformable in LPD (Least Prejudiced Distribution) probability distributions are also included, with the appropriate mechanics for handling the needed transformations automatically.
· Besides the common operations on fuzzy sets, the library implements those operations derived from the Mass Assignment Theory: as the fusion of fuzzy sets and the conditional probability.
· Fuzzy Prototypes
· A basic implementation of prototypes is provided, as containers of fuzzy attributes. The operations on fuzzy prototypes derived from the Mass Assignment Theory are implemented: fusion, support and average normalized support.
· Linguistic Description
· Some tools for data fuzzification are included in the library. For discretization of continuous data, several linguistic covering algorithms are implemented.
· Prototype Induction Algorithms
· The library includes an implementation of the Hierarchical Prototype Induction algorithm (HPI), and also HPIW (HPI with Weighting), that, based on HPI, takes care of the relevance of each attribute when searching prototypes for fusion, and generates a pondering function that enhances the results of raw HPI.
· Data Input/Output
· A basic implementation of data I/O is provided, allowing read and write data in several formats (text, CSV [Comma Separated Values] and XML [Extended Markup Language]) in an easy way.
· Experimentation Framework
· Besides the library, the system includes some front-ends for the command line and a simple graphic interface write in PHP that, based on the library, implement some habitual automatic learning tasks:
· Supervised Learning
· A training dataset is converted in a fuzzy prototype set, after an induction process. The induced prototypes are then used to determine the class of the elements of a test dataset.
· If cross-validation is desired, an input dataset is splitted into several folds. A supervised learning process is then applied to each fold.
· Unsupervised Learning
· From an input dataset a set of induced prototypes is extracted. Each prototype represents a differentiated class of data elements detected in the input data.
· This learning front-ends are implemented over a group of back-ends, at lower abstraction level. Each back-end calculates only one step in the several sequential tasks needed for a learning process to be completed:
· Data conversion from/to the own XML format.
· XML data manipulation
· Data fuzzification.
· Prototype induction.
· Data classification.
· Evaluation of classifications.
· Graphic representation.
· Using this back-ends directly, a personalized learning process can be designed, completely new or partially based on the calculation infrastructure already provided by the system.