Main Features

The FLPD system consists of two parts: a fuzzy learning library and a experimentation framework.

Fuzzy Learning Library

The main features implemented in the library are the following:

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.