mlr3 1.2.0
CRAN release: 2025-09-13
- feat: Add miraisupport for parallelization and encapsulation.
- feat: Fallback can now be configured to only be used in case of certain errors via the whenargument.
- feat: Custom error and warning classes.
- fix: $selected_featuresreturns error when model is not trained yet.
- docs: Missing values during scoring.
- BREAKING CHANGE: Removed data_formatargument of$data()method ofDataBackend.
- BREAKING CHANGE: Remove data_formatsfield fromLearner.
- BREAKING CHANGE: Remove DataBackendMatrixclass.
- feat: Add materialize_view()method toTaskto replace the internalDataBackendwith a new one after operations like$select()and$filter().
- docs: Information about quantile prediction.
- perf: Use fgetinassert_predictable.
- feat: Store oob error in state without requiring storing the model.
- fix: $levels()ofTaskreturns in the correct order.
- chore: Only print up to 10 classes in the Taskprinter.
- fix: Check if quantilesandquantile_responseare set.
mlr3 1.1.0
CRAN release: 2025-07-30
- feat: Add new measure MeasureRegrRQRfor quantile regression.
- feat: Add $predict_newdata_fast()method toLearnerto speed up prediction.
- fix: configure_learneris passed onrun_experiment()for autotest learners.
mlr3 1.0.1
CRAN release: 2025-07-03
- fix: The printer of Learnerfailed when thevalidatefield was set.
- fix: Avoid printing empty line for feature less tasks.
- perf: Use data.table::setattr()for less copying.
mlr3 1.0.0
CRAN release: 2025-06-18
- BREAKING CHANGE: The mlr3 ecosystem has a base logger now which is named - mlr3. The- mlr3/corelogger is a child of the- mlr3logger and is used for logging messages from the- mlr3package. Some extension packages have their own loggers which are children of the mlr3 logger e.g. mlr3/mlr3pipelines and mlr3/bbotk for tuning.
- 
BREAKING CHANGE: weightsproperty and functionality is split intoweights_learnerandweights_measure:- 
weights_learner: Weights used during training by the Learner.
- 
weights_measure: Weights used during scoring predictions via measures.
 Each of these can be disabled via the new field use_weightsinLearnerandMeasureobjects.
- 
- feat: Add - $confusion_weightedfield to- PredictionClassif.
- feat: Add - $weightsfield to- Prediction. It contains the- weights_measureweights from the- Taskthat was used for prediction.
- feat: Add - "macro_weighted"option to- Measure$averagefield.
- feat: - MeasureRegrRSQand- MeasureClassifCostgain- "weights"property.
- feat: - LearnerClassifFeatureless,- LearnerRegrFeatureless,- LearnerClassifDebug,- LearnerRegrDebuggain- "weights"property.
- feat: - Learnerprinter now prints information about encapsulation and weights use.
- feat: Add - score_roc_measures()to score a prediction on various roc measures.
- feat: A better error message is thrown, which often happens when incorrectly configuring the - validatefield of a- GraphLearner
- feat: Added method - $set_threshold()to- BenchmarkResultand- ResamplingResult, which allows to set the threshold for the response prediction of classification learners, given they have output a probability prediction (#1270).
- feat: Added field - $uhash_tableto- BenchmarkResultand functions- uhash()and- uhashes()to easily compute uhashes for given learner, task, or resampling ids (#1270).
- feat: You can now change the default predict type of classification learners to - "prob"by setting the option- mlr3.prob_as_defaultto- TRUE(#1273).
- feat: - benchmark_grid()will now throw a warning if you mix different predict types in the design (#1273).
- feat: Converting a - BenchmarkResultto a- data.tablenow includes the- task_id,- learner_id, and- resampling_idcolumns (#1275).
- fix: Add missing parameters for - "regr.pinball"and- "sim.phi"measures.
- feat: Add new measure - "regr.rqr"for quantile regression.
mlr3 0.23.0
CRAN release: 2025-03-12
- feat: Add new col_roleoffset inTaskand offsetLearnerproperty. A warning is produced if a learner that doesn’t support offsets is trained with a task that has an offset column.
- fix: The $predict_newdata()method ofLearnernow automatically conducts type conversions (#685).
- BREAKING_CHANGE: Predicting on a Taskwith the wrong column information is now an error and not a warning.
- Column names with UTF-8 characters are now allowed by default. The option mlr3.allow_utf8_namesis removed.
- BREAKING CHANGE: Learner$predict_typesis read-only now.
- docs: Clear up behavior of Learner$predict_typeafter training.
- feat: Add callbacks to resample()andbenchmark().
- fix: Internal tuning and validation now works when the model requires marshaling (#1256)
mlr3 0.22.1
CRAN release: 2024-11-27
- fix: Extend assert_measure()with checks for trained models inassert_scorable().
mlr3 0.22.0
CRAN release: 2024-11-24
- fix: Quantiles must not ascend with probabilities.
- refactor: Replace tsk("boston_housing")withtsk("california_housing").
- feat: Require unique learner ids in benchmark_grid().
- BREAKING CHANGE: Remove $loglik()method from all learners.
- fix: Ignore future.globals.maxSizewhenfuture::plan("sequential")is used.
- feat: Add $characteristicsfield toTaskto store additional information.
mlr3 0.21.1
CRAN release: 2024-10-18
- feat: Throw warning when prediction and measure type do not match.
- fix: The mlr_reflectionswere broken when an extension package was not loaded on the workers. Extension packages must now register themselves in themlr_reflections$loaded_packagesfield.
mlr3 0.21.0
CRAN release: 2024-09-24
- BREAKING CHANGE: Deprecated data_formatanddata_formatsforLearner,Task, andDataBackendclasses.
- feat: The partition()function creates training, test and validation sets now.
- perf: Optimize the runtime of fixing factor levels.
- perf: Optimize the runtime of setting row roles.
- perf: Optimize the runtime of marshalling.
- perf: Optimize the runtime of Task$col_info.
- fix: column info is now checked for compatibility during Learner$predict(#943).
- BREAKING CHANGE: The predict time of the learner now stores the cumulative duration for all predict sets (#992).
- feat: $internal_valid_taskcan now be set to anintegervector.
- feat: Measures can now have an empty $predict_sets(#1094). This is relevant for measures that only extract information from the model of a learner (such as internal validation scores or AIC / BIC)
- BREAKING CHANGE: Deprecated the $divide()method
- fix: Task$cbind()now works with non-standard primary keys fordata.frames(#961).
- fix: Triggering of fallback learner now has log-level "info"instead of"debug"(#972).
- feat: Added new measure regr.pinballhere and in mlr3measures.
- feat: Added new measure mu_auchere and in mlr3measures.
- feat: Add option to calculate the mean of the true values on the train set in msr("regr.rsq").
- feat: Default fallback learner is set when encapsulation is activated.
- feat: Learners classif.debugandregr.debughave new methods$importance()and$selected_features()for testing, also in downstream packages.
- feat: Create default fallback learner with default_fallback().
- feat: Check column roles when using $set_col_roles()and$col_roles.
- fix: Add predict set to learner hash.
- BREAKING CHANGE: Encapsulation and the fallback learner are now set with the $encapsulate(method, fallback)method. The$fallbackfield is read-only now and the encapsulate status can be retrieved from the$encapsulationfield.
mlr3 0.20.2
CRAN release: 2024-07-29
- refactor: Move RhpcBLASctl to suggest.
- feat: Added resampling property "primary_iters"
- feat: Added possibility to access observation-wise losses via function $obs_loss. This is possible forPrediction,ResampleResultandBenchmarkResult.
- feat: Measures now also return a vector of numerics.
mlr3 0.20.1
CRAN release: 2024-07-22
- feat: Add multiclass Matthews correlation coefficient msr("classif.mcc").
mlr3 0.19.0
CRAN release: 2024-04-24
- Added support for "marshal"property, which allows learners to process models so they can be serialized. This happens automatically duringresample()andbenchmark().
- Encapsulation methods use the same RNG state now.
- Fix missing values in default_values.Learner()function.
- Encapsulated error messages are now printed with the lgrpackage.
mlr3 0.18.0
CRAN release: 2024-03-05
- Prepare compatibility with new paradox version.
- Dictionary conversion of mlr_learnersrespects prototype arguments recently added in mlr3misc.
- Skip unnecessary clone of learner’s state in resample().
mlr3 0.17.1
CRAN release: 2023-12-21
- Remove data_prototypewhen resampling fromlearner$stateto reduce memory consumption.
- Reduce number of threads used by data.tableand BLAS to 1 when runningresample()orbenchmark()in parallel.
- Optimize runtime of resample()andbenchmark()by reducing the number of hashing operations.
mlr3 0.17.0
CRAN release: 2023-11-17
- Learners cannot be added to the HotstartStackanymore when the model is missing.
- Learners bellow the hotstart_thresholdare not added to theHotstartStackanymore.
- The learner$state$train_timein hotstarted learners is now only the time of the last training.
- Added debug messages to the hotstart stack.
- Fixed bug where the HotstartStackdid not work with column roles set in the task.
- The designofbenchmark()can now include parameter settings.
- Speed up resampling by removing unnecessary calls to packageVersion().
- Fix boston housing data set.
- Export generic function col_infoto allow adding new methods for backends.
- Task printer includes row roles now.
- Add "mlr3.exec_chunk_bins"option to split the resampling iterations into a number of bins.
mlr3 0.16.1
CRAN release: 2023-06-17
- Function data.table()is now re-exported.
- Fixed a test which randomly failed.
- Improved documentation.
- Add encapsulation mode "try", which works similar to"none"but captures errors
mlr3 0.16.0
CRAN release: 2023-05-05
- Added argument pairedtobenchmark_grid()function, which can be used to create a benchmark design, where resamplings have been instantiated on tasks.
- Added S3 method for ResultDataforas_resample_result()converter.
- Added S3 method for listforas_resample_result()converter.
- The featureless classification learner now returns proper probabilities (#918).
mlr3 0.15.0
CRAN release: 2023-03-17
- Many returned tables are now assigned a class for a printmethod to make the output more readable.
- Fixed some typos
mlr3 0.14.1
CRAN release: 2022-11-02
- Removed dependency on package distr6.
- Fixed reassembling of GraphLearner.
- Fixed bug where the measured elapsed time was 0: https://stackoverflow.com/questions/73797845/mlr3-benchmarking-with-elapsed-time-measure
- Fixed as_prediction_classif()fordata.frame()input (#872).
- Improved the error message when predict type of fallback learner does not match the predict type of the learner (mlr-org/mlr3extralearners#241).
- The test set is now available to the Learnerduring train for early stopping.
mlr3 0.14.0
CRAN release: 2022-08-11
- Added multiclass measures: mauc_aunu,mauc_aunp,mauc_au1u,mauc_au1p.
- Measure classif.costsdoes not require aTaskanymore.
- New converter: as_task_unsupervised()
- Refactored the task types in mlr_reflections.
mlr3 0.13.4
CRAN release: 2022-07-21
- Added new options for parallelization ("mlr3.exec_random"and"mlr3.exec_chunk_size"). These options are passed down to the respective map functions in packagefuture.apply.
- Fixed runtime measures depending on specific predict types (#832).
- Added head()andtail()methods forTask.
- Improved printing of multiple objects.
mlr3 0.13.3
CRAN release: 2022-03-01
- Most objects now have a new (optional) field label, i.e.Task,TaskGenerator,Learner,Resampling, andMeasure.
- 
as.data.table()methods for objects of classDictonaryhave been extended with additional columns.
- 
as_task_classif.formula()andas_task_regr.formula()now remove additional atrributes attached to the data which caused some some learners to break.
- Packages are now loaded prior to calling the $train()and$predict()methods of aLearner. This ensures that package loading errors are properly propagated and not affected by encapsulation (#771).
mlr3 0.13.2
CRAN release: 2022-02-14
- Setting a fallback learner for a learner with encapsulation in its default settings now automatically sets encapsulation to "evaluate"(#763).
- 
as_task_classif()andas_task_regr()now support the construction of tasks using the formula interface, e.g.as_task_regr(mpg ~ ., data = mtcars)(#761).
- Added default_values()function to extract parameter default values fromLearnerobjects.
- The row role "validation"has been renamed to"holdout". In the next release,mlr3will start switching to the now more common terms"train"/"validation"instead of"train"/"test"for the sets created during resampling.
mlr3 0.13.1
CRAN release: 2022-01-19
- Improved performance for many operations on ResampleResultandBenchmarkResult.
- 
resample()andbenchmark()got a new argumentcloneto control which objects to clone before performing computations.
- Tasks are checked for infinite values during the conversion from data.frametoTaskinas_task_classif()andas_task_regr(). A warning is signaled if any column contains infinite values.
mlr3 0.13.0
CRAN release: 2021-11-16
- Learners which are capable of resuming/continuing (e.g., learner (classif|regr|surv).xgboostwith hyperparameternroundsupdated) can now optionally store a stack of trained learners to be used to hotstart their training. Note that this feature is still somewhat experimental. SeeHotstartStackand #719.
- New measures to score similarity of selected feature sets: sim.jaccard(Jaccard Index) andsim.phi(Phi coefficient) (#690).
- 
predict_newdata()now also supportsDataBackendas input.
- New function install_pkgs()to install required packages. This generic works for all objects with apackagesfield as well asResampleResultandBenchmarkResult(#728).
- New learner regr.debugfor debugging.
- New Taskmethod$set_levels()to control how data with factor columns is returned, independent of the usedDataBackend.
- Measures now return NAif prerequisite are not met (#699). This allows to conveniently score your experiments with multiple measures having different requirements.
- Feature names may no longer contain the special character %.
mlr3 0.12.0
CRAN release: 2021-08-05
- New method to assign labels to columns in tasks: Task$label(). These will be used in visualizations in the future.
- New method to add stratification variables: Task$add_strata().
- New helper function partition()to split a task into a training and test set.
- New standardized getter loglik()for classLearner.
- New measures "aic"and"bic"to compute the Akaike Information Criterion or the Bayesian Information Criterion, respectively.
- New Resampling method: ResamplingCustomCV. Creates a custom resampling split based on the levels of a user-provided factor variable.
- New argument encapsulateforresample()andbenchmark()to conveniently enable encapsulation and also set the fallback learner to the featureless learner. This is simply for convenience, configuring each learner individually is still possible and allows a more fine-grained control (#634, #642).
- New field parallel_predictforLearnerto enable parallel predictions via the future backend. This currently is only enabled while calling the$predict()or$predict_newdatamethods and is disabled duringresample()andbenchmark()where you have other means to parallelize.
- Deprecated public (and already documented as internal) field $datainResampleResultandBenchmarkResultto simplify the API and avoid confusion. The converteras.data.table()can be used instead to access the internal data.
- Measures now have formal hyperparameters. A popular example where this is required is the F1 score, now implemented with customizable beta.
- Changed default of argument orderedinTask$data()fromTRUEtoFALSE.
- Fixed getter ResamplingRepeatedCV$folds()(#643).
- Fixed hashing of some measures.
- Removed experimental column role uri. This role be split up into multiple roles by themlr3keraspackage.
- Update paramtest to error on extra parameters
mlr3 0.11.0
CRAN release: 2021-03-05
- Added a as.data.table.Resamplingmethod.
- Renamed column "row_id"to"row_ids"in theas.data.table()methods forPredictionClassifandPredictionRegr(#547).
- Added converters as_prediction_classif()andas_prediction_regr()to reverse the operation ofas.data.table.PredictionClassif()andas.data.table.PredictionRegr().
- Specifying a weight column during learner$predict_newdata()is not mandatory anymore (#563).
- 
Task$data()defaults to return only active rows and columns, instead of asserting to only return rows and columns. As a result, the$data()method can now also be used to query inactive rows and cols from theDataBackend.
- New (experimental) column role uriwhich is intended to point to external resources, e.g. images on the file system.
- New helper set_threads()to control the number of threads during calls to external packages. All objects will be migrated to have threading disabled in their defaults to avoid conflicting parallelization techniques (#605).
- New option mlr3.debug: avoid calls tofutureinresample()andbenchmark()to improve the readability of tracebacks.
- New experimental option mlr3.allow_utf8_names: allow non-ascii characters in column names in tasks.
mlr3 0.10.0
CRAN release: 2021-01-21
- Result containers ResampleResultandBenchmarkResultnow optionally remove the DataBackend of the Tasks in order to reduce file size and memory footprint after serialization. To remove the backends from the containers, setstore_backendstoFALSEinresample()orbenchmark(), respectively. Note that this behavior will eventually will be the default for future releases.
- Prediction objects generated by Learner$predict_newdata()now have row ids starting from 1 instead auto incremented row ids of the training task.
- 
as.data.table.DictionaryTasksnow returns an additional columnproperties.
- Added flag conditionstoResampleResult$score()andBenchmarkResult$score()to allow to work with failing learners more conveniently.
mlr3 0.9.0
CRAN release: 2020-12-06
- New methods for Task:$set_col_rolesand$set_row_rolesas a replacement for the deprecated and less flexible$set_col_roleand$set_row_role.
- Learners can now have a timeout (#556).
- Removed S3 method friedman.test.BenchmarkResult()in favor of the newmlr3benchmarkpackage.
mlr3 0.8.0
CRAN release: 2020-10-21
- 
MeasureOOBErrornow has set propertyminimizetoTRUE.
- New learner property "featureless"to tag learners which can operate on featureless tasks.
- Fixed [ResampleResult] ignoring argument predict_setsfor returned [Prediction] objects.
- Compatibility with new version of lgr.
mlr3 0.7.0
CRAN release: 2020-10-07
- Updated properties of featureless learners to apply it on all feature types (did not work on POSIXct columns).
- Fixed measures being calculated as NaNforBenchmarkResultfor resamplings with a single iteration (#551).
- Fixed a bug where a broken heuristic disabled nested parallelization via package future(mlr3tuning#270).
- 
ResampleResultandBenchmarkResultnow share a common interface to store the experiment results. Manual construction is still possible with helper functionas_result_data()
- Fixed deep cloning of ResamplingCVandResamplingRepeatedCV.
- New measure classif.prauc(area under precision-recall curve).
- Removed dependency on orphaned package bibtex.
mlr3 0.6.0
CRAN release: 2020-09-13
- Compact in-memory representation of R6 objects to save space when saving objects via saveRDS()orserialize().
- Objects in containers like ResampleResultorBenchmarkResultare now de-duplicated for an optimized serialization.
- Fixed data set breast_cancer: all factor features are now correctly stored as ordered factors.
- Added a new utility function convert_task().
mlr3 0.5.0
CRAN release: 2020-08-07
- Added classification task breast_cancer
- Added ResamplingLOOfor leave-one-out resampling.
- Regression now supports predict type "distr"using thedistr6package.
- Fixed ResamplingBootstrapin combination with grouping (#514).
- Fixed plot method of TaskGeneratorMoons.
- Added hyperparameter keep_modelto learners"classif.rpart"and"regr.rpart".
mlr3 0.3.0
CRAN release: 2020-06-02
- Package future.applyis now imported (instead of suggested). This is necessary to ensure reproducibility: This way exactly the same result is calculated, independent of the parallel backend.
- Fixed a bug where prediction on new data for a task with blocking information raised an exception (#496).
- New binding: Task$order.
mlr3 0.2.0
CRAN release: 2020-04-17
- Some handy cheat sheets can now be downloaded from the project homepage.
- Added new measures classif.bbrier(binary Brier score) andclassif.mbrier(multi-class Brier score).
- Added new Resampling: ResamplingInsample.
- Added base class for unsupervised tasks: TaskUnsupervised.
mlr3 0.1.7
CRAN release: 2020-02-23
- Switched to new - roxygen2documentation format for R6 classes.
- resample()and- benchmark()now support progress bars via the package- progressr.
- Row ids now must be numeric. It was previously allowed to have character row ids, but this lead to confusion and unnecessary code bloat. Row identifiers (e.g., to be used in plots) can still be part of the task, with row role - "name".
- Row names can now be queried with - Task$row_names.
- DataBackendMatrixnow supports to store an optional (numeric) dense part.
- Added new method - $filter()to filter- ResampleResults to a subset of iterations.
- Removed deprecated - character()-> object converters.
- Empty test sets are now handled separately by learners (#421). An empty prediction object is returned for all learners. 
- The internal train and predict function of - Learnernow should be implemented as private method: instead of public methods- train_internaland- predict_internal, private methods- .trainand- .predictare now encouraged.
- 
It is now encouraged to move some internal methods from public to private: - 
Learner$train_internalshould now be private method$.train.
- 
Learner$predict_internalshould now be private method$.predict.
- 
Measure$score_internalshould now be private method$.score. The public methods will be deprecated in a future release.
 
- 
- Removed arguments from the constructor of measures - classif.debugand- classif.costs. These can be set directly by- msr().
mlr3 0.1.6
CRAN release: 2019-12-19
- We have published an article about mlr3 in the Journal of Open Source Software: https://joss.theoj.org/papers/10.21105/joss.01903. See - citation("mlr3")for the citation info.
- New method - Learner$reset().
- New method - BenchmarkResult$filter().
- Learners returned by - BenchmarkResult$learnersare reset to encourage the safer alternative- BenchmarkResult$score()to access trained models.
- Fix ordering of levels in - PredictionClassif$set_threshold()(triggered an assertion).
mlr3 0.1.5
CRAN release: 2019-12-10
- Switched from package - Metricsto package- mlr3measures.
- Measures can now calculate all scores using micro or macro averaging (#400). 
- Measures can now be configured to return a customizable performance score (instead of - NA) in case the score cannot be calculated.
- Character columns are now treated differently from factor columns. In the long term, - character()columns are supposed to store text.
- Fixed a bug triggered by integer grouping variables in - Task(#396).
- benchmark_grid()now accepts instantiated resamplings under certain conditions.
mlr3 0.1.4
CRAN release: 2019-10-28
- Task$set_col_roles()and- Task$set_row_roles()are now deprecated. Instead it is recommended for now to work with the lists- Task$col_rolesand- Task$row_rolesdirectly.
- Learner$predict_newdata()now works without argument- taskif the learner has been fitted with- Learner$train()(#375).
- Names of column roles have been unified ( - "weights",- "label",- "stratify"and- "groups"have been renamed).
- Replaced - MeasureClassifF1with- MeasureClassifFScoreand fixed a bug in the F1 performance calculation (#353). Thanks to @001ben for reporting.
- Stratification is now controlled via a task column role (was a parameter of class - Resamplingbefore).
- Added a S3 - predict()method for class- Learnerto increase interoperability with other packages.
- Many objects now come with a - $help()which opens the respective manual page.
mlr3 0.1.3
CRAN release: 2019-09-18
- It is now possible to predict and score results on the training set or on both training and test set. Learners can be instructed to predict on multiple sets by setting - predict_sets(default:- "test"). Measures operate on all sets specified in their field- predict_sets(default:- "test").
- ResampleResult$predictionand- ResampleResult$predictions()are now methods instead of fields, and allow to extract predictions for different predict sets.
- ResampleResult$performance()has been renamed to- ResampleResult$score()for consistency.
- BenchmarkResult$performance()has been renamed to- BenchmarkResult$score()for consistency.
- Changed API for (internal) constructors accepting - paradox::ParamSet(). Instead of passing the initial values separately, the initial values must now be set directly in the- ParamSet.
mlr3 0.1.2
CRAN release: 2019-08-25
- Deprecated support of automatically creating objects from strings. Instead, - mlr3provides the following helper functions intended to ease the creation of objects stored in dictionaries:- tsk(),- tgen(),- lrn(),- rsmp(),- msr().
- BenchmarkResultnow ensures that the stored- ResampleResults are in a persistent order. Thus,- ResampleResults can now be addressed by their position instead of their hash.
- New field - BenchmarkResult$n_resample_results.
- New field - BenchmarkResult$hashes.
- New method - Task$rename().
- New S3 generic - as_benchmark_result().
- Renamed - Generatorto- TaskGenerator.
- Removed the control object - mlr_control().
- Removed - ResampleResult$combine().
- Removed - BenchmarkResult$best().