## Boosting

Boosting is based on the idea of combining weak learners to create a strong learner (classifier). A weak learner is defined to be a classifier which is only slightly correlated with the true classification (it can label examples better than random guessing). In contrast, a strong learner is a classifier that is arbitrarily well-correlated with the true classification. More information on Wikipedia.
3 Types of weak learners are implemented here:

- Random Projections: project the data onto a random direction, and find the best threshold
- Random Rectangle: selects a random region of space, and returns 1 if the sample is inside the rectangle or 0 otherwise
- Random Circles: selects center points at random, and classifies using the distance to the center (radius)