Framework for developing fuzzy and fuzzy-rough classification models for multiple-instance data
The framework facilitates the design of multiple-instance classification models that are based on fuzzy-sets and rough-sets. In contrasts to regular classification problems, in which each example has a unique description, in multiple-instance classification (MIC) problems, each example has many descriptions. In MIC, each example is called bag, and each description of a bag is an instance. In fuzzy multi-instance classifiers, each class is regarded as a fuzzy set to which every bag has a degree of membership. When classifying a new bag, the classifiers calculate its membership degree to each class and assign it to the class for which this value is largest. In the framework we define java classes for each mathematical concept involved in the calculus of class memberships:
- similarity and distance functions between instances
- similarity and distance functions between bags
- numeric operators for two or more operands (ex., addition, multiplication, maximun, average)
- fuzzy operators (implicators, TNorms)
- aggregators that iterate over, for example, all instances in a bag, or a set of bags, applying a numerical operation on them
- weighting schemes for weighted average aggregation
- bag membership and class membership functions
- literal variables representing a cardinal number, an instance, a bag or a set of bags
Usage example:
Lets consider the membership function M of a sample bag X to the class C:
T is the set of all training bags; and CT is the set of training bags belonging to class C.
Using the framework, you first need to declare the variables involve in the mathematical expression. Then, you define the membership function relying on the framework's classes:
Var C = new Var(); // target class label
Var X = new Var(); // bag with unknown label
Var B = new Var(); // a bag
Var x = new Var(); // an instance
Var y = new Var(); // another instance
Var T = new Var(); // the training samples
setMembership(new MembershipToClass(X, T, C,
new Max(new InstancesFromBag(x, X),
new Average(new BagsFromClass(B, T, C),
new Max(new InstancesFromBag(y, B),
new CosineSimilarity(x, y))))));
Usage cases:
- Vluymans, S., Sanchez Tarrago, D., Saeys, Y., Cornelis, C., Herrera, F.: Fuzzy Multi-Instance Classifiers. IEEE Transactions on Fuzzy Systems. 24, 1395–1409 (2016). (link)
- Vluymans, S., Sanchez Tarrago, D., Saeys, Y., Cornelis, C., Herrera, F.: Fuzzy rough classifiers for class imbalanced multi-instance data. Pattern Recognition. 53, 36–45 (2016). (link)
Developed with:
- Java 1.8
- NetBeans IDE 8.2
Dependencies:
- Weka 3.7