While using the implementation I stumbled upon results which were nothing like I expected and additionally very misleading:
I've been dealing with a very unbalanced dataset and a model predicting the same label in the absolute majority of cases. This caused the algorithm to evaluate all candidates in the first round to have a precision of 1. Thereafter, it chose the rule with the highest coverage. The result was thus comprising one feature that was not essential to the model's prediction.
While this is expected behavior (and could be approached by configuring the MAB) it is very counter intuitive for novices and we should do something about it.
I propose the following:
Create an empty rule containing no features at all. Evaluate this rule alongside the unary candidates. If this rule is an eligible anchor, return it without further rule building.
Alternatively, print a warning and/or return all eligible anchors (breaks the interface).
While using the implementation I stumbled upon results which were nothing like I expected and additionally very misleading: I've been dealing with a very unbalanced dataset and a model predicting the same label in the absolute majority of cases. This caused the algorithm to evaluate all candidates in the first round to have a precision of 1. Thereafter, it chose the rule with the highest coverage. The result was thus comprising one feature that was not essential to the model's prediction. While this is expected behavior (and could be approached by configuring the MAB) it is very counter intuitive for novices and we should do something about it.
I propose the following: