0.11.0
What's Changed
Breaking Changes
- The public methods of
Surrogate
models now operate on dataframes in experimental
representation instead of tensors in computational representation Surrogate.posterior
models now returns aPosterior
objectparam_bounds_comp
ofSearchSpace
,SubspaceDiscrete
andSubspaceContinuous
has
been replaced withcomp_rep_bounds
, which returns a dataframe
Added
py.typed
file to enable the use of type checkers on the user sideIndependentGaussianSurrogate
base class for surrogate models providing independent
Gaussian posteriors for all candidates (cannot be used for batch prediction)comp_rep_columns
property forParameter
,SearchSpace
,SubspaceDiscrete
andSubspaceContinuous
classes- New mechanisms for surrogate input/output scaling configurable per class
SurrogateProtocol
as an interface for user-defined surrogate architectures- Support for binary targets via
BinaryTarget
class - Support for bandit optimization via
BetaBernoulliMultiArmedBanditSurrogate
class - Bandit optimization example
qThompsonSampling
acquisition functionBetaPrior
classrecommend
now accepts thepending_experiments
argument, informing the algorithm
about points that were already selected for evaluation- Pure recommenders now have the
allow_recommending_pending_experiments
flag,
controlling whether pending experiments are excluded from candidates in purely
discrete search spaces get_surrogate
andposterior
methods toCampaign
tenacity
test dependency- Multi-version documentation
Changed
- The transition from experimental to computational representation no longer happens
in the recommender but in the surrogate - Fallback models created by
catch_constant_targets
are stored outside the surrogate to_tensor
now also handlesnumpy
arraysMIN
mode ofNumericalTarget
is now implemented via the acquisition function
instead of negating the computational representation- Search spaces now store their parameters in alphabetical order by name
- Improvement-based acquisition functions now consider the maximum posterior mean
instead of the maximum noisy measurement as reference value - Iteration tests now attempt up to 5 repeated executions if they fail due to numerical
reasons
Fixed
CategoricalParameter
andTaskParameter
no longer incorrectly coerce a single
string input to categories/tasksfarthest_point_sampling
no longer depends on the provided point order- Batch predictions for
RandomForestSurrogate
- Surrogates providing only marginal posterior information can no longer be used for
batch recommendation SearchSpace.from_dataframe
now creates a proper empty discrete subspace without
index when called with continuous parameters only- Metadata updates are now only triggered when a discrete subspace is present
- Unintended reordering of discrete search space parts for recommendations obtained
withBotorchRecommender
Removed
register_custom_architecture
decoratorScalar
andDefaultScaler
classes
Deprecations
- The role of
register_custom_architecture
has been taken over by
baybe.surrogates.base.SurrogateProtocol
BayesianRecommender.surrogate_model
has been replaced withget_surrogate
Merged Pull Requests
- Comp Rep Transition Point by @AdrianSosic in #278
- Surrogate Posteriors by @AdrianSosic in #309
- Surrogate scaling by @AdrianSosic in #315
- Surrogate interface by @AdrianSosic in #325
- Mypy for surrogates by @AdrianSosic in #337
- Add py.typed by @AdrianSosic in #342
- Lockfile for doc generation by @AdrianSosic in #323
- Fix parameter value conversion by @AdrianSosic in #259
- Improve FPS by @AdrianSosic in #336
- Refactor Surrogates by @AdrianSosic in #338
- Silence mypy type-abstract errors by @AdrianSosic in #354
- Hotfix: Remove python version in tox docs calls by @AVHopp in #351
- Fix local doc building by @AVHopp in #339
MIN
mode via acquisition function by @AdrianSosic in #340- Fix batch recommendation by @AdrianSosic in #348
- Remove token from publishing pipelines by @Scienfitz in #361
- Parameter permutation by @AdrianSosic in #341
- Add workflow permissions by @Scienfitz in #362
- Best_f from posterior means by @AdrianSosic in #350
- Fix
SubspaceDiscrete.from_dataframe
edge case by @AdrianSosic in #360 - Multi-Armed Bandit by @julianStreibel in #343
- Fix visuals in examples by @AVHopp in #347
- Enable Pending Points by @Scienfitz in #319
- Fix Recommendation Order for BotorchRecommender by @Scienfitz in #370
- Expose surrogate by @AdrianSosic in #355
- Add iteration test retries by @Scienfitz in #374
- Multi-version documentation by @AVHopp in #317
- Fix broken links to stable by @AVHopp in #377
- Release 0.11.0 by @Scienfitz in #376
New Contributors
- @julianStreibel made their first contribution in #343
Full Changelog: 0.10.0...0.11.0