UCBRegressor¶
Model selection based on the UCB bandit strategy.
Due to the nature of this algorithm, it's recommended to scale the target so that it exhibits sub-gaussian properties. This can be done by using a preprocessing.TargetStandardScaler
.
Parameters¶
-
models
The models to choose from.
-
metric – defaults to
None
The metric that is used to compare models with each other. Defaults to
metrics.MAE
. -
delta – defaults to
1
Exploration parameter.
-
burn_in – defaults to
100
The number of initial steps during which each model is updated.
-
seed (int) – defaults to
None
Random number generator seed for reproducibility.
Attributes¶
-
best_model
The current best model.
-
burn_in
-
delta
-
models
-
seed
Examples¶
>>> from river import datasets
>>> from river import evaluate
>>> from river import linear_model
>>> from river import metrics
>>> from river import model_selection
>>> from river import optim
>>> from river import preprocessing
>>> models = [
... linear_model.LinearRegression(optimizer=optim.SGD(lr=lr))
... for lr in [0.0001, 0.001, 1e-05, 0.01]
... ]
>>> dataset = datasets.TrumpApproval()
>>> model = (
... preprocessing.StandardScaler() |
... preprocessing.TargetStandardScaler(
... model_selection.UCBRegressor(
... models,
... delta=1,
... burn_in=0,
... seed=42
... )
... )
... )
>>> metric = metrics.MAE()
>>> evaluate.progressive_val_score(dataset, model, metric)
MAE: 0.410815
>>> model['TargetStandardScaler'].regressor.bandit
Ranking MAE Pulls Share
#3 1.441458 8 0.80%
#1 0.291200 242 24.18%
#2 0.808878 19 1.90%
#0 0.204892 732 73.13%
>>> model['TargetStandardScaler'].regressor.best_model
LinearRegression (
optimizer=SGD (
lr=Constant (
learning_rate=0.01
)
)
loss=Squared ()
l2=0.
l1=0.
intercept_init=0.
intercept_lr=Constant (
learning_rate=0.01
)
clip_gradient=1e+12
initializer=Zeros ()
)
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
Fits to a set of features x
and a real-valued target y
.
Parameters
- x (dict)
- y (numbers.Number)
Returns
Regressor: 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 output of features x
.
Parameters
- x
Returns
The prediction.
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