### Emukit: Decision making under uncertainty

Andrei Paleyes

SciPy 2023

## Part 1: Intuition

Bayesian optimisation:

Bayesian quadrature:

Experiment design:

Revisiting "Decision making under uncertainty"

"Decision making"?

"Under uncertainty"?

## Part 2: Scope

### Models

- Gaussian process
- Bayesian neural network
- Random forest
**Multi-fidelity**

### Methods

- Bayesian optimisation
- Bayesian quadrature
- Experimental design

### Tasks

- Hyperparameter optimisation
- Data efficient learning
- Benchmarking

## Part 3: Using the library

```
model_gpy = GPy.models.GPRegression(X,Y)
model_emukit = GPyModelWrapper(model_gpy)
parameter_space = ParameterSpace([
ContinuousParameter('x1', -5, 10),
ContinuousParameter('x2', 0, 15)
])
model_variance_acquisition = ModelVariance(model = model_emukit)
experimental_design_loop = ExperimentalDesignLoop(
model = model_emukit,
space = parameter_space,
acquisition = model_variance_acquisition
)
experimental_design_loop.run(f, 10)
```

```
while not stopping_condition.should_stop(self.loop_state):
self._update_models()
new_x = self.candidate_point_calculator.compute_next_points(self.loop_state, context)
results = user_function.evaluate(new_x)
self.loop_state.update(results)
```

```
class IPriorHyperparameters:
def generate_hyperparameters_samples(...
def fix_model_hyperparameters(...
class IntegratedHyperParameterAcquisition(Acquisition):
def __init__(
self,
model: Union[IModel, IPriorHyperparameters],
...
```

Wait!

Numpy arrays ...

Agnostic of modeling framework ...

Performance!

## Part 4: But why use Emukit then?

### Future plans

- Friendly to beginners
- Feature completeness for UQ
- Integrations
- Ideas?

Credit to the Emukit team (current team in **bold green**)