Implemented a novel type of Neural Network that emulates a Boolean Function in Disjunctive Normal Form ("OR of ANDs") to perform binary classification.
Intuitively, in a 2D classification problem, the points of one class can be easily recognized by drawing polygons around them. This is like defining a boolean function that specifies the union of parts of the plane belonging to this class.
Inspired by this intuition, the Disjunctive Normal Network generalizes this concept in higher dimensions and finds the optimal polygons around the positive class of a binary classification problem.
In a similar interpretation it divides the feature space in a similar way to a Decision Tree, but instead of axis-aligned rectangles it uses convex polygons.
I wanted to bring together concepts from Decision Trees and Neural Networks. Also it was a nice opportunity to learn how to properly set up (hopefully) a Python package with tests, CI, explanatory Notebooks and a helpful README.
Any feedback is highly appreciated!