I am building a program to implement a solution for multilabel classification. It's an interesting problem because most of the examples (~90%) actually only have one class, but some have multiple classes.
Additionally there are certain classes which we know to be mutually exclusive, i.e. if an example is in class A then it cannot be in class B, and vice-versa.
The way it's currently implemented is to identify all the classes which are mutually exclusive and place them within their own classifier, then build a separate classifier for each of the others:
Classifier 1: Predicts A (or OTHER) Classifier 2: Predicts B (or OTHER) Classifier 3: Predicts C,D,E, or F (or OTHER)
When the classifier runs, it gets predictions from all 3 classifiers and then combines them. So if classifier 1 predicts A, and classifier 2 and 3 both predict OTHER, then the result would be A. If instead classifier 2 had predicted B, then the result would be A,B.
So my questions are:
- Does this seem like a reasonable implementation to you?
- It seems like the downside is that we could end up with
A and Btoo many times when really we wanted them to be exclusive more often. In that case we could try to improve things with a classifier that controls the degree of exclusivity by predicting
A, B, A-and-Binstead. But is that likely to represent an improvement, or would it be unnecessary?
In an ideal world if the A and B classifiers are functioning correctly I think it would be unnecessary, but I don't know if combining the decision into a single classifier would allow the classifier to learn the boundaries "better" in some way.