# 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¶

1. 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.