mlr3tuning 1.6.1
CRAN release: 2026-07-26
- compatibility: mlr3 1.7.2
- chore: Minimum required version of
rushis now 1.2.0. Removed all compatibility workarounds for older versions. - fix: The package now unions
mlr_reflections$tuner_propertieson load instead of overwriting it, so a property registered by another extension package is no longer dropped, and it removes its registered callbacks and tuner property on unload. - fix:
AutoTuneraccessors ($learner,$tuning_instance,$tuning_result,$archive,$importance(),$selected_features(),$oob_error(),$loglik()) now raise an informative error when the model is marshaled, instead of silently returning the untrained learner orNULL. - fix:
AutoTuner$marshaledis now an active binding as inmlr3::Learner, soat$marshaledreturns a flag instead of a method and can be used in conditions. - fix:
AutoTuner$train()now correctly checks that an instantiated inner resampling only uses row ids present in the task for all resampling types. Previously, the check read list-based instances and silently did nothing for resamplings such ascvandholdout. - fix: Unmarshaling an
AutoTunermodel withinplace = TRUEafter a non-inplace marshal no longer drops theauto_tuner_modelclass, which had caused a subsequent marshal to become a no-op. - fix:
auto_tuner(),AutoTuner$new(), andtune()now error at construction when arushcontroller is supplied together with a batch tuner. - fix: The
mlr3tuning.backupcallback now errors at the start of the run whenstore_benchmark_result = FALSEinstead of silently writing an empty benchmark result, and it no longer errors when the target file already exists. - fix:
ArchiveBatchTuning$print()no longer prints the archive table twice. - fix:
ArchiveAsyncTuning$benchmark_resultnow raises a clear error when the tuning instance was created withstore_benchmark_result = FALSE. Previously, the first access overwrote the cached benchmark result withNULLand every later access failed with an unrelated error. Freezing such an archive withArchiveAsyncTuningFrozenworks now and returns an empty benchmark result. - fix:
AutoTuner$hashnow also depends on thepredict_sets,validate, anduse_weightssettings so that autotuners differing only in these fields no longer share a hash. - fix:
as.data.table.ArchiveAsyncTuning()andas.data.table.ArchiveAsyncTuningFrozen()no longer error when themeasuresargument is used on an archive that contains queued, running, or failed points. The extra measures areNAfor these points. -
callback_async_tuning()andcallback_batch_tuning()remove the deprecatedon_resultstage. Useon_result_endinstead. - fix:
as_tuner()withclone = TRUEnow performs a deep clone, so the returned tuner no longer shares itsParamSetwith the input. - fix:
as_search_space()no longer errors when converting aParamSetthat contains an unset required parameter. - fix:
assert_async_tuning_callbacks()andassert_batch_tuning_callbacks()now check that each callback inherits fromCallbackAsyncTuningandCallbackBatchTuning, respectively, so tuning instances reject callbacks of the wrong type at construction time. - fix:
Tuner$idnow validates new values on assignment, andTuner$labelcorrectly rejects modification instead of silently accepting some invalid assignments. - fix:
as.data.table.ArchiveAsyncTuning(),as.data.table.ArchiveAsyncTuningFrozen(), andas.data.table.ArchiveBatchTuning()now warn instead of silently ignoring themeasuresargument when no benchmark result is stored. - fix:
tnr("irace")destroyed its own configuration during$optimize()by removingn_instancesfrom and writing instantiated resamplings into its param set, which made a second run of the same tuner orAutoTunerimpossible. The param set is now restored after the run. - fix:
clbk("mlr3tuning.async_one_se_rule")now stores an unnamed numeric in then_featurescolumn of the archive, matching the batch callback. - fix:
clbk("mlr3tuning.async_measures")now accepts a single measure in themeasuresargument like the batch version, instead of requiring a list of measures. - fix:
ObjectiveTuningBatchnow errors when the number of custom resamplings does not match the number of hyperparameter configurations. Previously, the resamplings were silently recycled, pairing configurations with the wrong resamplings. - fix:
extract_inner_tuning_results()no longer modifies the result table of the stored tuning instances by reference. Previously, theiterationandtuning_instancecolumns were written intoinstance$result, and a staletuning_instancecolumn could leak into the output of a second call withtuning_instance = FALSE. - fix:
TuningInstanceBatchMultiCrit$assign_result()andTuningInstanceAsyncMultiCrit$assign_result()produced wrongresult_learner_param_valswhen the search space was empty, because the number of measures instead of the number of Pareto points was used to recycle the parameter values. - fix:
assign_result()ofTuningInstanceBatchMultiCritandTuningInstanceAsyncMultiCritnow validateslearner_param_valslike the single-crit instances. - fix:
AutoTuner$clone(deep = TRUE)now deep clones the wrapped learner, resampling, measure, terminator, callbacks, and the trained model. Previously, the clone shared these objects with the original, so for example setting the predict type on the clone also changed the original. - fix:
clbk("mlr3tuning.one_se_rule")andclbk("mlr3tuning.async_one_se_rule")no longer crash at result assignment when the archive contains a single evaluation or points without a performance score (queued, running, or failed points). These points are now removed before the standard error is computed, so they no longer deflate the standard error.
mlr3tuning 1.6.0
CRAN release: 2026-03-16
- compatibility: rush 1.0.0.
- fix:
ArchiveAsyncTuning,ArchiveAsyncTuningFrozen, andArchiveBatchTuningconvert the archive to adata.tablewith a consistent column order.
mlr3tuning 1.5.0
CRAN release: 2025-11-07
- feat: Add
on_optimizer_queue_before_evalandon_optimizer_queue_after_evalstages toCallbackAsyncTuning. - fix: Add loaded packages to objective.
- feat: Add tiny logging.
- fix: Remove internal search space and trafo error.
- fix: Unsatisfied dependencies in results in debug mode.
mlr3tuning 1.4.0
CRAN release: 2025-06-04
- feat: Resample stages from
CallbackResampleare now available inCallbackBatchTuningandCallbackAsyncTuning. - fix: The
$predict_typewas written to the model even when theAutoTunerwas not trained. - feat: Internal tuned values are now visible in logs.
- BREAKING CHANGE: Remove internal search space argument.
- BREAKING CHANGE: The mlr3 ecosystem has a base logger now which is named
mlr3. Themlr3/bbotklogger is a child of themlr3logger and is used for logging messages from thebbotkandmlr3tuningpackage. - feat: Classes are now printed with the
clipackage.
mlr3tuning 1.3.0
CRAN release: 2024-12-17
- feat: Save
ArchiveAsyncTuningto adata.tablewithArchiveAsyncTuningFrozen. - perf: Save models on worker only when requested in
ObjectiveTuningAsync.
mlr3tuning 1.2.0
CRAN release: 2024-11-08
- feat: Add new callback
clbk("mlr3tuning.one_se_rule")that selects the hyperparameter configuration with the smallest feature set within one standard error of the best. - feat: Add new stages
on_tuning_result_beginandon_result_begintoCallbackAsyncTuningandCallbackBatchTuning. - refactor: Rename stage
on_resulttoon_result_endinCallbackAsyncTuningandCallbackBatchTuning. - docs: Extend the
CallbackAsyncTuningandCallbackBatchTuningdocumentation. - compatibility: mlr3 0.22.0
- compatibility: Work with new irace 4.0.0
mlr3tuning 1.1.0
CRAN release: 2024-10-27
- fix: The
as_data_table()functions do not unnest thex_domaincolumn anymore by default. - fix:
to_tune(internal = TRUE)now also works if non-internal tuning parameters have an.extra_trafo. - feat: It is now possible to pass an
internal_search_spacemanually. This allows to use parameter transformations on the primary search space in combination with internal hyperparameter tuning. - refactor: The
Tunerpass extra information of the result in theextraparameter now.
mlr3tuning 1.0.1
CRAN release: 2024-09-10
- refactor: Replace internal tuning callback.
- perf: Delete intermediate
BenchmarkResultinObjectiveTuningBatchafter optimization.
mlr3tuning 1.0.0
CRAN release: 2024-06-29
- feat: Introduce asynchronous optimization with the
TunerAsyncandTuningInstanceAsync*classes. - BREAKING CHANGE: The
Tunerclass isTunerBatchnow. - BREAKING CHANGE: The
TuningInstanceSingleCritandTuningInstanceMultiCritclasses areTuningInstanceBatchSingleCritandTuningInstanceBatchMultiCritnow. - BREAKING CHANGE: The
CallbackTuningclass isCallbackBatchTuningnow. - BREAKING CHANGE: The
ContextEvalclass isContextBatchTuningnow. - refactor: Remove hotstarting from batch optimization due to low performance.
- refactor: The option
evaluate_defaultis a callback now.
mlr3tuning 0.20.0
CRAN release: 2024-03-05
- compatibility: Work with new paradox version 1.0.0
- fix:
TunerIracefailed with logical parameters and dependencies. - Added marshaling support to
AutoTuner
mlr3tuning 0.19.1
CRAN release: 2023-11-20
- refactor: Speed up the tuning process by minimizing the number of deep clones and parameter checks.
- fix: Set
store_benchmark_result = TRUEifstore_models = TRUEwhen creating a tuning instance. - fix: Passing a terminator in
tune_nested()did not work.
mlr3tuning 0.19.0
CRAN release: 2023-06-26
- fix: Add
$phash()method toAutoTuner. - fix: Include
Tunerin hash ofAutoTuner. - feat: Add new callback that scores the configurations on additional measures while tuning.
- feat: Add vignette about adding new tuners which was previously part of the mlr3book.
mlr3tuning 0.18.0
CRAN release: 2023-03-08
- BREAKING CHANGE: The
methodparameter oftune(),tune_nested()andauto_tuner()is renamed totuner. OnlyTunerobjects are accepted now. Arguments to the tuner cannot be passed with...anymore. - BREAKING CHANGE: The
tunerparameter ofAutoTuneris moved to the first position to achieve consistency with the other functions. - docs: Update resources sections.
- docs: Add list of default measures.
- fix: Add
allow_hotstarting,keep_hotstart_stackandkeep_modelsflags toAutoTunerandauto_tuner().
mlr3tuning 0.17.2
CRAN release: 2022-12-22
- feat:
AutoTuneraccepts instantiated resamplings now. TheAutoTunerchecks if all row ids of the inner resampling are present in the outer resampling train set when nested resampling is performed. - fix: Standalone
Tunerdid not create aContextOptimization.
mlr3tuning 0.17.0
CRAN release: 2022-11-18
- feat: The methods
$importance(),$selected_features(),$oob_error()and$loglik()are forwarded from the final model to theAutoTunernow. - refactor: The
AutoTunerstores the instance and benchmark result ifstore_models = TRUE. - refactor: The
AutoTunerstores the instance ifstore_benchmark_result = TRUE.
mlr3tuning 0.16.0
CRAN release: 2022-11-08
- feat: Add new callback that enables early stopping while tuning to
mlr_callbacks. - feat: Add new callback that backups the benchmark result to disk after each batch.
- feat: Create custom callbacks with the
callback_batch_tuning()function.
mlr3tuning 0.15.0
CRAN release: 2022-10-21
- fix:
AutoTunerdid not acceptTuningSpaceobjects as search spaces. - feat: Add
ti()function to create aTuningInstanceSingleCritorTuningInstanceMultiCrit. - docs: Documentation has a technical details section now.
- feat: New option for
extract_inner_tuning_results()to return the tuning instances.
mlr3tuning 0.14.0
CRAN release: 2022-08-25
- feat: Add option
evaluate_defaultto evaluate learners with hyperparameters set to their default values. - refactor: From now on, the default of
smoothisFALSEforTunerGenSA.
mlr3tuning 0.13.0
CRAN release: 2022-04-06
- feat: Allow to pass
Tunerobjects asmethodintune()andauto_tuner(). - docs: Link
Tunerto help page ofbbotk::Optimizer. - feat:
Tunerobjects have the optional field$labelnow. - feat:
as.data.table()functions for objects of classDictionaryhave been extended with additional columns.
mlr3tuning 0.12.1
CRAN release: 2022-02-25
- feat: Add a
as.data.table.DictionaryTunerfunction. - feat: New
$help()method which opens the manual page of aTuner.
mlr3tuning 0.12.0
CRAN release: 2022-02-17
- feat:
as_search_space()function to create search spaces fromLearnerandParamSetobjects. Allow to passTuningSpaceobjects assearch_spaceinTuningInstanceSingleCritandTuningInstanceMultiCrit. - feat: The
mlr3::HotstartStackcan now be removed after tuning with thekeep_hotstart_stackflag. - feat: The
Archivestores errors and warnings of the learners. - feat: When no measure is provided, the default measure is used in
auto_tuner()andtune_nested().
mlr3tuning 0.11.0
CRAN release: 2022-02-02
- fix:
$assign_result()method inTuningInstanceSingleCritwhen search space is empty. - feat: Default measure is used when no measure is supplied to
TuningInstanceSingleCrit.
mlr3tuning 0.10.0
CRAN release: 2022-01-20
- Fixes bug in
TuningInstanceMultiCrit$assign_result(). - Hotstarting of learners with previously fitted models.
- Remove deep clones to speed up tuning.
- Add
store_modelsflag toauto_tuner(). - Add
"noisy"property toObjectiveTuning.
mlr3tuning 0.9.0
CRAN release: 2021-09-14
- Adds
AutoTuner$base_learner()method to extract the base learner from nested learner objects. -
tune()supports multi-criteria tuning. - Allows empty search space.
- Adds
TunerIracefromiracepackage. -
extract_inner_tuning_archives()helper function to extract inner tuning archives. - Removes
ArchiveTuning$extended_archive()method. Themlr3::ResampleResultsare joined automatically byas.data.table.TuningArchive()andextract_inner_tuning_archives().
mlr3tuning 0.8.0
CRAN release: 2021-03-12
- Adds
tune(),auto_tuner()andtune_nested()sugar functions. -
TuningInstanceSingleCrit,TuningInstanceMultiCritandAutoTunercan be initialized withstore_benchmark_result = FALSEandstore_models = TRUEto allow measures to access the models. - Prettier printing methods.
mlr3tuning 0.7.0
CRAN release: 2021-02-11
- Fix
TuningInstance*$assign_result()errors with required parameter bug. - Shortcuts to access
$learner(),$learners(),$learner_param_vals(),$predictions()and$resample_result()from benchmark result in archive. -
extract_inner_tuning_results()helper function to extract inner tuning results.
mlr3tuning 0.5.0
CRAN release: 2020-12-07
- Adds
TunerCmaesfromadagiopackage. - Fix
predict_typeinAutoTuner. - Support to set
TuneTokeninLearner$param_setand create a search space from it. - The order of the parameters in
TuningInstanceSingleCritandTuningInstanceSingleCritchanged.
mlr3tuning 0.4.0
CRAN release: 2020-10-07
- Option to control
store_benchmark_result,store_modelsandcheck_valuesinAutoTuner.store_tuning_instancemust be set as a parameter during initialization. - Fixes
check_valuesflag inTuningInstanceSingleCritandTuningInstanceMultiCrit. - Removed dependency on orphaned package
bibtex.
mlr3tuning 0.3.0
CRAN release: 2020-09-08
- Compact in-memory representation of R6 objects to save space when saving mlr3 objects via
saveRDS(),serialize()etc. -
ArchiveisArchiveTuningnow which stores the benchmark result in$benchmark_result. This change removed the resample results from the archive but they can be still accessed via the benchmark result. - Warning message if external package for tuning is not installed.
- To retrieve the inner tuning results in nested resampling,
as.data.table(rr)$learner[[1]]$tuning_resultmust be used now.
mlr3tuning 0.2.0
CRAN release: 2020-07-28
-
TuningInstanceis nowTuningInstanceSingleCrit.TuningInstanceMultiCritis still available for multi-criteria tuning. - Terminators are now accessible by
trm()andtrms()instead ofterm()andterms(). - Storing of resample results is optional now by using the
store_resample_resultflag inTuningInstanceSingleCritandTuningInstanceMultiCrit -
TunerNLoptradds non-linear optimization from the nloptr package. - Logging is controlled by the
bbotklogger now. - Proposed points and performance values can be checked for validity by activating the
check_valuesflag inTuningInstanceSingleCritandTuningInstanceMultiCrit.
mlr3tuning 0.1.3
- mlr3tuning now depends on the
bbotkpackage for basic tuning objects.Terminatorclasses now live inbbotk. As a consequenceObjectiveTuninginherits frombbotk::Objective,TuningInstancefrombbotk::OptimInstanceandTunerfrombbotk::Optimizer -
TuningInstance$param_setbecomesTuningInstance$search_spaceto avoid confusion as theparam_setusually contains the parameters that change the behavior of an object. - Tuning is triggered by
$optimize()instead of$tune()
