0.10.0
What's Changed
Breaking Changes
- Providing an explicit
batch_size
is now mandatory when asking for recommendations RecommenderProtocol.recommend
now accepts an optionalObjective
RecommenderProtocol.recommend
now expects training data to be provided as a single
dataframe in experimental representation instead of two separate dataframes in
computational representationParameter.is_numeric
has been replaced withParameter.is_numerical
DiscreteParameter.transform_rep_exp2comp
has been replaced with
DiscreteParameter.transform
filter_attributes
has been replaced withmatch_attributes
Added
Surrogate
base class now exposes ato_botorch
methodSubspaceDiscrete.to_searchspace
andSubspaceContinuous.to_searchspace
convenience constructor- Validators for
Campaign
attributes _optional
subpackage for managing optional dependencies- New acquisition functions for active learning:
qNIPV
(negative integrated posterior
variance) andPSTD
(posterior standard deviation) - Acquisition function:
qKG
(knowledge gradient) - Abstract
ContinuousNonlinearConstraint
class - Abstract
CardinalityConstraint
class and
DiscreteCardinalityConstraint
/ContinuousCardinalityConstraint
subclasses - Uniform sampling mechanism for continuous spaces with cardinality constraints
register_hooks
utility enabling user-defined augmentation of arbitrary callablestransform
methods ofSearchSpace
,SubspaceDiscrete
andSubspaceContinuous
now take additionalallow_missing
andallow_extra
keyword arguments- More details to the transfer learning user guide
- Activated doctests
SubspaceDiscrete.from_parameter
,SubspaceContinuous.from_parameter
,
SubspaceContinuous.from_product
andSearchSpace.from_parameter
convenience constructorsDiscreteParameter.to_subspace
,ContinuousParameter.to_subspace
and
Parameter.to_searchspace
convenience constructors- Utilities for permutation and dependency data augmentation
- Validation and translation tests for kernels
BasicKernel
andCompositeKernel
base classes- Activated
pre-commit.ci
with auto-update - User guide for active learning
- Polars expressions for
DiscreteSumConstraint
,DiscreteProductConstraint
,
DiscreteExcludeConstraint
,DiscreteLinkedParametersConstraint
and
DiscreteNoLabelDuplicatesConstraint
- Discrete search space Cartesian product can be created lazily via Polars
- Examples demonstrating the
register_hooks
utility: basic registration mechanism,
monitoring the probability of improvement, and automatic campaign stopping
Changed
- Passing an
Objective
toCampaign
is now optional GaussianProcessSurrogate
models are no longer wrapped when cast to BoTorch- Restrict upper versions of main dependencies, motivated by major
numpy
release - Sampling methods in
qNIPV
andBotorchRecommender
are now specified via
DiscreteSamplingMethod
enum Interval
class now supports degenerate intervals containing only one elementadd_fake_results
now directly processesTarget
objects instead of aCampaign
path
argument in plotting utility is now optional and defaults toPath(".")
UnusedObjectWarning
by non-predictive recommenders is now ignored during simulations- The default kernel factory now avoids strong jumps by linearly interpolating between
two fixed low and high dimensional prior regimes - The previous default kernel factory has been renamed to
EDBOKernelFactory
and now
fully reflects the original logic - The default acquisition function has been changed from
qEI
toqLogEI
for improved
numerical stability
Removed
- Support for Python 3.9 removed due to new BoTorch requirements
and guidelines from Scientific Python - Linter
typos
for spellchecking
Fixed
sequential
flag ofSequentialGreedyRecommender
is now set toTrue
- Serialization bug related to class layout of
SKLearnClusteringRecommender
MetaRecommender
s no longer trigger warnings about non-empty objectives or
measurements when calling aNonPredictiveRecommender
- Bug introduced in 0.9.0 (PR #221, commit 3078f3), where arguments to
to_gpytorch
are not passed on to the GPyTorch kernels - Positive-valued kernel attributes are now correctly handled by validators
and hypothesis strategies - As a temporary workaround to compensate for missing
IndexKernel
priors,
fit_gpytorch_mll_torch
is used instead offit_gpytorch_mll
when aTaskParameter
is present, which acts as regularization via early stopping during model fitting
Deprecations
SequentialGreedyRecommender
class replaced withBotorchRecommender
SubspaceContinuous.samples_random
has been replaced with
SubspaceContinuous.sample_uniform
SubspaceContinuous.samples_full_factorial
has been replaced with
SubspaceContinuous.sample_from_full_factorial
- Passing a dataframe via the
data
argument to thetransform
methods of
SearchSpace
,SubspaceDiscrete
andSubspaceContinuous
is no longer possible.
The dataframe must now be passed as positional argument. - The new
allow_extra
flag is automatically set toTrue
intransform
methods
of search space classes when left unspecified
Expired Deprecations (from 0.7.*)
Interval.is_finite
property- Specifying target configs without type information
- Specifying parameters/constraints at the top level of a campaign configs
- Passing
numerical_measurements_must_be_within_tolerance
toCampaign
batch_quantity
argument- Passing
allow_repeated_recommendations
orallow_recommending_already_measured
toMetaRecommender
(or formerStrategy
) *Strategy
classes andbaybe.strategies
subpackage- Specifying
MetaRecommender
(or formerStrategy
) configs without type information
Merged Pull Requests
- Drop Python 3.9 by @AdrianSosic in #253
- Refactor recommender signature by @AdrianSosic in #220
- Python 3.10 syntax upgrade by @AdrianSosic in #255
- Fix changelog by @AdrianSosic in #261
- Refactor adapter model by @AdrianSosic in #260
- Deprecate SequentialGreedyRecommender by @AdrianSosic in #256
- Campaign validators by @AdrianSosic in #262
- Refactor optional imports by @AdrianSosic in #266
- Add upper version limits by @AdrianSosic in #271
- Add qNIPV acqf by @Scienfitz in #264
- Fix optional dependency flags by @AdrianSosic in #272
- Cardinality constraints for random recommender by @Waschenbacher in #243
- Register hook with the same signature by @RimRihana in #275
register_hooks
utility by @AdrianSosic in #276- Remove core test caching by @Scienfitz in #277
- Add CI dev branch triggers by @Scienfitz in #279
- Fix attrs incompatibility of pydoclint by @AdrianSosic in #282
- Replace
is_numeric
class attribute withis_numerical
by @AdrianSosic in #281 - Add discrete cardinality constraint by @Waschenbacher in #270
- Remove tox caching in Regular by @Scienfitz in #293
- Fix serialization and caching by @AdrianSosic in #298
- Refactor search space
transform
methods by @AdrianSosic in #289 - Fix MetaRecommender Warnings by @Scienfitz in #292
- Fix Deprecated Calls by @Scienfitz in #302
- Polars pipeline for discrete sum, product and exclusion constraints by @rjavadi in #252
- Update TL User Guide by @Scienfitz in #299
- Reorganize simulation lookup by @AdrianSosic in #265
- Change path from sys.path[0] to . by @AVHopp in #288
- Polars: Translate linked parameter and no label duplicate to polars by @rjavadi in #305
- Searchspace convenience constructors by @AdrianSosic in #303
- Add KnowledgeGradient ACQF by @Scienfitz in #308
- Augmentation Utilities by @Scienfitz in #290
- Fix kernel translation by @AdrianSosic in #311
- Upgrade dev tools by @AdrianSosic in #316
- Polars: from_product() implementation by @rjavadi in #306
- Add Active Learning Userguide by @Scienfitz in #273
- Ignore
UnusedObjectWarning
caused by nonpred recommenders in simulation by @Scienfitz in #313 - Temp Fix: Avoid Prior Jumps by @Scienfitz in #310
- Restore old MLL fit by @Scienfitz in #320
- Fix broken docstring links by @AVHopp in #324
- Custom Hooks: PI Example by @RimRihana in #287
- Switch to log-acqfs by @AdrianSosic in #326
- Make Polars Optional by @Scienfitz in #318
- Use Subprocess Runs for Example Tests by @Scienfitz in #327
- Integrate Polars by @Scienfitz in #328
- Rearrange TOC in sidebar by @AdrianSosic in #329
- Add Example for Dynamic Campaign Stopping by @Scienfitz in #322
- Conditional solver selection by @AdrianSosic in #330
- Integrate Hook Examples by @Scienfitz in #331
- Update Pictures for Release by @Scienfitz in #333
- Release 0.10.0 by @AdrianSosic in #332
New Contributors
- @Waschenbacher made their first contribution in #243
Full Changelog: 0.9.1...0.10.0