Skip to content

mlr3tuning 1.6.1

Latest

Choose a tag to compare

@be-marc be-marc released this 26 Jul 08:43
· 2 commits to 549fc49a340ec7ba03f53774175c5bc66e4013ca since this release
edec8e2
  • compatibility: mlr3 1.7.2
  • chore: Minimum required version of rush is now 1.2.0.
    Removed all compatibility workarounds for older versions.
  • fix: The package now unions mlr_reflections$tuner_properties on 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: AutoTuner accessors ($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 or NULL.
  • fix: AutoTuner$marshaled is now an active binding as in mlr3::Learner, so at$marshaled returns 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 as cv and holdout.
  • fix: Unmarshaling an AutoTuner model with inplace = TRUE after a non-inplace marshal no longer drops the auto_tuner_model class, which had caused a subsequent marshal to become a no-op.
  • fix: auto_tuner(), AutoTuner$new(), and tune() now error at construction when a rush controller is supplied together with a batch tuner.
  • fix: The mlr3tuning.backup callback now errors at the start of the run when store_benchmark_result = FALSE instead 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_result now raises a clear error when the tuning instance was created with store_benchmark_result = FALSE. Previously, the first access overwrote the cached benchmark result with NULL and every later access failed with an unrelated error. Freezing such an archive with ArchiveAsyncTuningFrozen works now and returns an empty benchmark result.
  • fix: AutoTuner$hash now also depends on the predict_sets, validate, and use_weights settings so that autotuners differing only in these fields no longer share a hash.
  • fix: as.data.table.ArchiveAsyncTuning() and as.data.table.ArchiveAsyncTuningFrozen() no longer error when the measures argument is used on an archive that contains queued, running, or failed points.
    The extra measures are NA for these points.
  • callback_async_tuning() and callback_batch_tuning() remove the deprecated on_result stage.
    Use on_result_end instead.
  • fix: as_tuner() with clone = TRUE now performs a deep clone, so the returned tuner no longer shares its ParamSet with the input.
  • fix: as_search_space() no longer errors when converting a ParamSet that contains an unset required parameter.
  • fix: assert_async_tuning_callbacks() and assert_batch_tuning_callbacks() now check that each callback inherits from CallbackAsyncTuning and CallbackBatchTuning, respectively, so tuning instances reject callbacks of the wrong type at construction time.
  • fix: Tuner$id now validates new values on assignment, and Tuner$label correctly rejects modification instead of silently accepting some invalid assignments.
  • fix: as.data.table.ArchiveAsyncTuning(), as.data.table.ArchiveAsyncTuningFrozen(), and as.data.table.ArchiveBatchTuning() now warn instead of silently ignoring the measures argument when no benchmark result is stored.
  • fix: tnr("irace") destroyed its own configuration during $optimize() by removing n_instances from and writing instantiated resamplings into its param set, which made a second run of the same tuner or AutoTuner impossible. The param set is now restored after the run.
  • fix: clbk("mlr3tuning.async_one_se_rule") now stores an unnamed numeric in the n_features column of the archive, matching the batch callback.
  • fix: clbk("mlr3tuning.async_measures") now accepts a single measure in the measures argument like the batch version, instead of requiring a list of measures.
  • fix: ObjectiveTuningBatch now 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, the iteration and tuning_instance columns were written into instance$result, and a stale tuning_instance column could leak into the output of a second call with tuning_instance = FALSE.
  • fix: TuningInstanceBatchMultiCrit$assign_result() and TuningInstanceAsyncMultiCrit$assign_result() produced wrong result_learner_param_vals when 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() of TuningInstanceBatchMultiCrit and TuningInstanceAsyncMultiCrit now validates learner_param_vals like 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") and clbk("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.