Classical training treats every example the same. But "easy" examples (model says 90%, wins 90%) carry little new information. The real learning signal comes from examples the model was uncertain about.
This module computes a sample-weight multiplier in [1.0, 3.0] from three uncertainty signals captured at prediction time:
- Boundary distance: how close to 0.5 was the prediction?
- MC dropout std: how much did random feature masks shift the prediction?
- Bootstrap divergence: how much did the K=5 bagged models disagree?
When a trade resolves, the standard sample weight (derived from R-multiple) is multiplied by this active-learning multiplier before being passed to
Model.train(). The model gradient gets a larger push on uncertain examples โ biasing learning toward the boundary where it matters most.
Reference: Settles (2009)
"Active Learning Literature Survey".