BOLEClassifier¶
Boosting Online Learning Ensemble (BOLE).
A modified version of Oza Online Boosting Algorithm 1. For each incoming observation, each model's learn_one
method is called k
times where k
is sampled from a Poisson distribution of parameter lambda. The first model to be trained will be the one with worst correct_weight / (correct_weight + wrong_weight)
. The worst model not yet trained will receive lambda values for training from the models that incorrectly classified an instance, and the best model's not yet trained will receive lambda values for training from the models that correctly classified an instance. For more details, see 2.
Parameters¶
-
model (base.Classifier)
The classifier to boost.
-
n_models β defaults to
10
The number of models in the ensemble.
-
seed (int) β defaults to
None
Random number generator seed for reproducibility.
-
error_bound β defaults to
0.5
Error bound percentage for allowing models to vote.
Attributes¶
-
wrong_weight (collections.defaultdict)
Number of times a model has made a mistake when making predictions.
-
correct_weight (collections.defaultdict)
Number of times a model has predicted the right label when making predictions.
-
order_position (list)
Array with the index of the models with best (correct_weight / correct_weight + wrong_weight) in descending order.
-
instances_seen (int)
Number of instances that the ensemble trained with.
Examples¶
>>> from river import datasets
>>> from river import ensemble
>>> from river import evaluate
>>> from river import drift
>>> from river import metrics
>>> from river import tree
>>> dataset = datasets.Elec2().take(3000)
>>> model = ensemble.BOLEClassifier(
... model=drift.DriftRetrainingClassifier(
... model=tree.HoeffdingTreeClassifier(),
... drift_detector=drift.binary.DDM()
... ),
... n_models=10,
... seed=42
... )
>>> metric = metrics.Accuracy()
>>> evaluate.progressive_val_score(dataset, model, metric)
Accuracy: 93.63%
Methods¶
append
S.append(value) -- append value to the end of the sequence
Parameters
- item
clear
S.clear() -> None -- remove all items from S
copy
count
S.count(value) -> integer -- return number of occurrences of value
Parameters
- item
extend
S.extend(iterable) -- extend sequence by appending elements from the iterable
Parameters
- other
index
S.index(value, [start, [stop]]) -> integer -- return first index of value. Raises ValueError if the value is not present.
Supporting start and stop arguments is optional, but recommended.
Parameters
- item
- args
insert
S.insert(index, value) -- insert value before index
Parameters
- i
- item
learn_one
Update the model with a set of features x
and a label y
.
Parameters
- x
- y
- kwargs
Returns
self
pop
S.pop([index]) -> item -- remove and return item at index (default last). Raise IndexError if list is empty or index is out of range.
Parameters
- i β defaults to
-1
predict_one
Predict the label of a set of features x
.
Parameters
- x (dict)
- kwargs
Returns
typing.Union[bool, str, int, NoneType]: The predicted label.
predict_proba_one
Predict the probability of each label for a dictionary of features x
.
Parameters
- x
- kwargs
Returns
A dictionary that associates a probability which each label.
remove
S.remove(value) -- remove first occurrence of value. Raise ValueError if the value is not present.
Parameters
- item
reverse
S.reverse() -- reverse IN PLACE
sort
References¶
-
Oza, N.C., 2005, October. Online bagging and boosting. In 2005 IEEE international conference on systems, man and cybernetics (Vol. 3, pp. 2340-2345). Ieee. ↩
-
R. S. M. d. Barros, S. Garrido T. de Carvalho Santos and P. M. GonΓ§alves JΓΊnior, "A Boosting-like Online Learning Ensemble," 2016 International Joint Conference on Neural Networks (IJCNN), 2016, pp. 1871-1878, doi: 10.1109/IJCNN.2016.7727427. ↩