Skip to contents

mlr3fselect (development version)

mlr3fselect 1.7.0

CRAN release: 2026-08-23

  • fix: Errors raised by mlr3fselect are structured conditions with the Mlr3Error class now, so they can be caught by class and are formatted with cli (#198).
  • fix: Loading the package repeatedly duplicated the entries that mlr3fselect adds to the reflections of bbotk and mlr3 (#199).
  • fix: ArchiveAsyncFSelect pushed results with the removed rush::Rush$push_results() method.
  • fix: EnsembleFSResult$pareto_front() correctly now handles ties in the pareto front: in edge cases, it returned dominated points for minimizing measures and discarded the true front for maximizing measures (#170).
  • fix: ensemble_fselect() dropped the importance column for subclasses of FSelectorBatchRFE. The column is now added whenever the feature selection result contains importance scores (#195).
  • fix: embedded_ensemble_fselect() instantiated the [mlr3::Resampling] passed to init_resampling by reference, so the resampling of the user was changed and reused the row ids of the first task when applied to another task (#179).
  • fix: EnsembleFSResult$knee_points() silently returned a row of NA when the Pareto front did not span a range in both dimensions. The first point of the Pareto front is returned with a warning now (#171).
  • fix: EnsembleFSResult$stability() cached the results by stability measure only, so the same measure requested with different stability_args returned the cached value of the first call (#189).
  • fix: ensemble_fselect() and embedded_ensemble_fselect() failed with a cryptic error when a single [mlr3::Learner] was passed to the learners argument because the result of as_learners() was discarded (#178).
  • fix: extract_inner_fselect_archives() ignored the exclude_columns argument because it was passed positionally to as.data.table() where it landed in the ... argument (#180).
  • fix: as.data.table() on an ArchiveBatchFSelect returned the n_features column as a list column instead of an integer column, so operations such as sort() failed with 'x' must be atomic (#181).
  • fix: fs("sequential")$optimization_path() returned the first evaluated feature set of each batch instead of the best one, so the selected feature set was usually missing from the reported path (#182).
  • fix: fs("rfecv") left the resampling of the objective set to an insample resampling, so subsequent evaluations on the same instance silently resampled in-sample (#187).
  • fix: The mlr3fselect.backup callback deleted the backup of the previous batch before it wrote the new one, so a crash in between lost the complete run. The benchmark result is now written to a temporary file and renamed afterwards (#188).
  • BREAKING CHANGE: The mlr3fselect.backup callback requires the path argument now. Previously it wrote a bmr.rds file into the working directory of the user (#188).
  • fix: as.data.table() on an EnsembleFSResult accepts the documented benchmark_result argument now to omit the task, learner and resampling columns (#190).
  • fix: The $print() methods of ArchiveBatchFSelect, ArchiveAsyncFSelect, ArchiveAsyncFSelectFrozen, AutoFSelector and FSelector errored with unused argument when arguments such as digits were passed (#190).
  • fix: fs("rfecv") had the same label as fs("rfe"), so both were indistinguishable in as.data.table(mlr_fselectors). Its manual page also instructed to construct it with fs("rfe") (#191).
  • fix: AutoFSelector ignored the predict_type when the final model was fitted, so $predict() returned response predictions although e.g. "prob" was set. Errors raised while setting the predict type on the final model are not swallowed anymore (#184).
  • fix: The $archive, $learner, $fselect_instance and $fselect_result bindings of AutoFSelector are read-only now. Previously an assignment failed with unused argument instead of the usual read-only error (#186).
  • fix: AutoFSelector$train() did not check the row ids of an instantiated inner resampling for cross-validation and reported a wrong set number for holdout (#197).
  • fix: fs("shadow_variable_search") left the shadow variables in the task, domain and search space of the instance when the feature selection was aborted because the first selected feature was a shadow variable (#183).
  • fix: ArchiveBatchFSelect$best() and ArchiveAsyncFSelect$best() returned an empty table or a row of missing values when a single score in the archive was NA. Missing scores are now skipped. ArchiveAsyncFSelect$best() also ignored the ties_method set during construction (#177).
  • fix: The mlr3fselect.svm_rfe callback accepted support vector machines without a type or kernel setting, although only type = "C-classification" and kernel = "linear" are supported. The callback now also errors on multi-class tasks for which the importance scores are not defined (#173).
  • fix: The asynchronous feature selection ignored the always_included column role. Columns with this role were excluded from the models instead of being added to every feature subset (#175).
  • fix: The mlr3fselect.one_se_rule callback errored on archives with a single evaluation or with missing scores, and wrote the n_features column as a list column instead of an integer column (#174).
  • fix: extract_inner_fselect_results() added the iteration and fselect_instance columns to the result of the inner FSelectInstance by reference, which created a circular reference between the instance and its own result (#172).
  • fix: fs("rfe") and fs("rfecv") failed with an internal data.table error when store_benchmark_result = FALSE was set because the importance scores were read from the benchmark result of the archive (#169).
  • fix: fs("rfecv", recursive = FALSE) failed with an internal data.table error because the importance scores of all resampling iterations were written to a single archive row (#168).
  • fix: fs("rfecv") ignored the direction of the measure and selected the feature set size with the worst mean performance for minimizing measures such as msr("classif.ce") or msr("regr.mse"). Feature selection results obtained with fs("rfecv") and a minimizing measure are invalid and should be recomputed (#167).

mlr3fselect 1.6.0

CRAN release: 2026-05-21

  • refactor: Remove rush backward compatibility.
  • docs: Add hEFS reference.
  • compatibility: fastVoteR 0.0.3
  • feat: Add $rm_zero_features() method in EnsembleFSResult to remove result rows where no features were selected.

mlr3fselect 1.5.1

CRAN release: 2026-03-18

  • compatibility: rush 1.0.0

mlr3fselect 1.5.0

CRAN release: 2025-11-27

  • fix: Add always_included column role to all registered tasks.
  • perf: Add fast aggregation for ResampleResult and BenchmarkResult objects to speed up objective function evaluation.

mlr3fselect 1.4.0

CRAN release: 2025-07-31

  • feat: Introduce asynchronous optimization with the FSelectorAsync and FSelectInstanceAsync* classes.
  • feat: Add max_nfeatures argument in the pareto_front() and knee_points() methods of an EnsembleFSResult().
  • feat: Classes are now printed with the cli package.

mlr3fselect 1.3.0

CRAN release: 2025-01-16

mlr3fselect 1.2.1

CRAN release: 2024-11-07

  • compatibility: mlr3 0.22.0

mlr3fselect 1.2.0

CRAN release: 2024-10-25

  • feat: Add internal tuning callback mlr3fselect.internal_tuning.
  • fix: Register mlr3fselect in the mlr_reflections$loaded_packages field.

mlr3fselect 1.1.1

CRAN release: 2024-10-15

  • compatibility: bbotk 1.1.1

mlr3fselect 1.1.0

CRAN release: 2024-09-09

  • compatibility: mlr3 0.21.0
  • fix: Delete intermediate BenchmarkResult in ObjectiveFSelectBatch after optimization.
  • fix: Reloading mlr3fselect does not duplicate column roles anymore.
  • perf: Remove x_domain column from archive.

mlr3fselect 1.0.0

CRAN release: 2024-06-29

  • feat: Add ensemble feature selection function ensemble_fselect().
  • BREAKING CHANGE: The FSelector class is FSelectorBatch now.
  • BREAKING CHANGE: THe FSelectInstanceSingleCrit and FSelectInstanceMultiCrit classes are FSelectInstanceBatchSingleCrit and FSelectInstanceBatchMultiCrit now.
  • BREAKING CHANGE: The CallbackFSelect class is CallbackBatchFSelect now.
  • BREAKING CHANGE: The ContextEval class is ContextBatchFSelect now.

mlr3fselect 0.12.0

CRAN release: 2024-03-09

  • feat: Add number of features to instance$result.
  • feat: Add ties_method options "least_features" and "random" to ArchiveBatchFSelect$best().
  • refactor: Optimize runtime of ArchiveBatchFSelect$best() method.
  • feat: Add importance scores to result of FSelectorRFE.
  • feat: Add number of features to as.data.table.ArchiveBatchFSelect().
  • feat: Features can be always included with the always_include column role.
  • fix: Add $phash() method to AutoFSelector.
  • fix: Include FSelector in hash of AutoFSelector.
  • refactor: Change default batch size of FSelectorBatchRandomSearch to 10.
  • feat: Add batch_size parameter to FSelectorBatchExhaustiveSearch to reduce memory consumption.
  • compatibility: Work with new paradox version 1.0.0

mlr3fselect 0.11.0

CRAN release: 2023-03-02

  • BREAKING CHANGE: The method parameter of fselect(), fselect_nested() and auto_fselector() is renamed to fselector. Only FSelector objects are accepted now. Arguments to the fselector cannot be passed with ... anymore.
  • BREAKING CHANGE: The fselect parameter of FSelector is moved to the first position to achieve consistency with the other functions.
  • docs: Update resources sections.
  • docs: Add list of default measures.

mlr3fselect 0.10.0

CRAN release: 2023-02-21

  • feat: Add callback mlr3fselect.svm_rfe to run recursive feature elimination on linear support vector machines.
  • refactor: The importance scores in FSelectorRFE are now aggregated by rank instead of averaging them.
  • feat: Add FSelectorRFECV optimizer to run recursive feature elimination with cross-validation.
  • refactor: FSelectorRFE works without store_models = TRUE now.
  • feat: The as.data.table.ArchiveBatchFSelect() function additionally returns a character vector of selected features for each row.
  • refactor: Add callbacks argument to fsi() function.

mlr3fselect 0.9.1

CRAN release: 2023-01-26

  • refactor: Remove internal use of mlr3pipelines.
  • fix: Feature selection with measures that require the importance or oob error works now.

mlr3fselect 0.9.0

CRAN release: 2022-12-21

  • fix: Add genalg to required packages of FSelectorBatchGeneticSearch.
  • feat: Add new callback that backups the benchmark result to disk after each batch.
  • feat: Create custom callbacks with the callback_batch_fselect() function.

mlr3fselect 0.8.0

CRAN release: 2022-11-16

  • refactor: FSelectorRFE throws an error if the learner does not support the $importance() method.
  • refactor: The AutoFSelector stores the instance and benchmark result if store_models = TRUE.
  • refactor: The AutoFSelector stores the instance if store_benchmark_result = TRUE.
  • feat: Add missing parameters from AutoFSelector to auto_fselect().
  • feat: Add fsi() function to create a FSelectInstanceBatchSingleCrit or FSelectInstanceBatchMultiCrit.
  • refactor: Remove unnest option from as.data.table.ArchiveBatchFSelect() function.

mlr3fselect 0.7.2

CRAN release: 2022-08-25

  • docs: Re-generate rd files with valid html.

mlr3fselect 0.7.1

CRAN release: 2022-05-03

  • feat: FSelector objects have the field $id now.

mlr3fselect 0.7.0

CRAN release: 2022-04-08

  • feat: Allow to pass FSelector objects as method in fselect() and auto_fselector().
  • feat: Added $label to FSelectors.
  • docs: New examples with fselect() function.
  • feat: $help() method which opens manual page of a FSelector.
  • feat: Added a as.data.table.DictionaryFSelector function.
  • feat: Added min_features parameter to FSelectorBatchSequential.

mlr3fselect 0.6.1

CRAN release: 2022-01-20

  • Add store_models flag to fselect().
  • Remove store_x_domain flag.

mlr3fselect 0.6.0

CRAN release: 2021-09-13

mlr3fselect 0.5.1

CRAN release: 2021-03-09

  • Remove x_domain column from archive.

mlr3fselect 0.5.0

CRAN release: 2021-01-24

  • FSelectorRFE stores importance values of each evaluated feature set in archive.
  • ArchiveBatchFSelect$data is a public field now.

mlr3fselect 0.4.1

CRAN release: 2020-10-30

  • Fix bug in AutoFSelector$predict()

mlr3fselect 0.4.0

CRAN release: 2020-10-22

  • Compact in-memory representation of R6 objects to save space when saving mlr3 objects via saveRDS(), serialize() etc.
  • FSelectorRFE supports fraction of features to retain in each iteration (feature_fraction), number of features to remove in each iteration (feature_number) and vector of number of features to retain in each iteration (subset_sizes).
  • AutoFSelect is renamed to AutoFSelector.
  • To retrieve the inner feature selection results in nested resampling, as.data.table(rr)$learner[[1]]$fselect_result must be used now.
  • Option to control store_benchmark_result, store_models and check_values in AutoFSelector. store_fselect_instance must be set as a parameter during initialization.
  • Adds FSelectorBatchGeneticSearch.
  • Fixes check_values flag in FSelectInstanceBatchSingleCrit and FSelectInstanceBatchMultiCrit.
  • Removed dependency on orphaned package bibtex.
  • PipeOpSelect is internally used for task subsetting.

mlr3fselect 0.3.0

CRAN release: 2020-09-22

  • Archive is ArchiveBatchFSelect now 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.

mlr3fselect 0.2.1

CRAN release: 2020-09-10

  • Warning message if external package for feature selection is not installed.

mlr3fselect 0.2.0

CRAN release: 2020-08-23

  • Initial CRAN release.