If you want to get started with mlr3, we recommend installing the
mlr3verse meta-package which installs
mlr3 and some of the most important extension packages:
Consult the
wiki for
short descriptions and links to the respective repositories.
For beginners, we strongly recommend to install and load the
mlr3verse package for a better user
experience.
Why a rewrite?
mlr was first released to
CRAN in 2013. Its core design
and architecture date back even further. The addition of many features
has led to a feature
creep which makes
mlr hard to maintain and hard to
extend. We also think that while mlr was nicely extensible in some parts
(learners, measures, etc.), other parts were less easy to extend from
the outside. Also, many helpful R libraries did not exist at the time
mlr was created, and their inclusion
would result in non-trivial API changes.
Design principles
Only the basic building blocks for machine learning are implemented in
this package.
Focus on computation here. No visualization or other stuff. That can
go in extra packages.
Overcome the limitations of R’s S3
classes with the help of
R6.
Embrace R6 for a clean
OO-design, object state-changes and reference semantics. This might be
less “traditional R”, but seems to fit mlr nicely.
Embrace data.table
for fast and convenient data frame computations.
Combine data.table and R6, for this we will make heavy use of list
columns in data.tables.
Defensive programming and type safety. All user input is checked with
checkmate. Return
types are documented, and mechanisms popular in base R which
“simplify” the result unpredictably (e.g., sapply() or drop
argument in [.data.frame) are avoided.
Be light on dependencies. mlr3 requires the following packages at
runtime:
parallelly:
Helper functions for parallelization. No extra recursive
dependencies.
future.apply:
Resampling and benchmarking is parallelized with the
future abstraction
interfacing many parallel backends.
backports: Ensures
backward compatibility with older R releases. Developed by members
of the mlr team. No recursive dependencies.
checkmate: Fast
argument checks. Developed by members of the mlr team. No extra
recursive dependencies.
paradox:
Descriptions for parameters and parameter sets. Developed by the
mlr team. No extra recursive dependencies.
R6: Reference class
objects. No recursive dependencies.
data.table:
Extension of R’s data.frame. No recursive dependencies.
digest (via
mlr3misc): Hash digests. No recursive dependencies.
uuid: Create unique
string identifiers. No recursive dependencies.
lgr: Logging facility.
No extra recursive dependencies.
mlr3measures:
Performance measures. No extra recursive dependencies.
mlbench: A
collection of machine learning data sets. No dependencies.
palmerpenguins:
A classification data set about penguins, used on examples and
provided as a toy task. No dependencies.
Reflections:
Objects are queryable for properties and capabilities, allowing you to
program on them.
Additional functionality that comes with extra dependencies:
To capture output, warnings and exceptions,
evaluate and
callr can be used.
Contributing to mlr3
This R package is licensed under the
LGPL-3. If you
encounter problems using this software (lack of documentation,
misleading or wrong documentation, unexpected behavior, bugs, …) or just
want to suggest features, please open an issue in the issue
tracker. Pull requests are
welcome and will be included at the discretion of the maintainers.
@Article{mlr3,
title = {{mlr3}: A modern object-oriented machine learning framework in {R}},
author = {Michel Lang and Martin Binder and Jakob Richter and Patrick Schratz and Florian Pfisterer and Stefan Coors and Quay Au and Giuseppe Casalicchio and Lars Kotthoff and Bernd Bischl},
journal = {Journal of Open Source Software},
year = {2019},
month = {dec},
doi = {10.21105/joss.01903},
url = {https://joss.theoj.org/papers/10.21105/joss.01903},
}
mlr3
Package website: release | dev
Efficient, object-oriented programming on the building blocks of machine learning. Successor of mlr.
Resources (for users and developers)
mlr3is used in the demos and exercises.mlr3vizandanimint2for interactive visualizations.Installation
Install the last release from CRAN:
Install the development version from GitHub:
If you want to get started with
mlr3, we recommend installing the mlr3verse meta-package which installsmlr3and some of the most important extension packages:Example
Constructing Learners and Tasks
Basic train + predict
Resample
Extension Packages
Consult the wiki for short descriptions and links to the respective repositories.
For beginners, we strongly recommend to install and load the mlr3verse package for a better user experience.
Why a rewrite?
mlr was first released to CRAN in 2013. Its core design and architecture date back even further. The addition of many features has led to a feature creep which makes mlr hard to maintain and hard to extend. We also think that while mlr was nicely extensible in some parts (learners, measures, etc.), other parts were less easy to extend from the outside. Also, many helpful R libraries did not exist at the time mlr was created, and their inclusion would result in non-trivial API changes.
Design principles
mlrnicely.data.tablefor fast and convenient data frame computations.data.tableandR6, for this we will make heavy use of list columns in data.tables.checkmate. Return types are documented, and mechanisms popular in base R which “simplify” the result unpredictably (e.g.,sapply()ordropargument in[.data.frame) are avoided.mlr3requires the following packages at runtime:parallelly: Helper functions for parallelization. No extra recursive dependencies.future.apply: Resampling and benchmarking is parallelized with thefutureabstraction interfacing many parallel backends.backports: Ensures backward compatibility with older R releases. Developed by members of themlrteam. No recursive dependencies.checkmate: Fast argument checks. Developed by members of themlrteam. No extra recursive dependencies.mlr3misc: Miscellaneous functions used in multiple mlr3 extension packages. Developed by themlrteam.paradox: Descriptions for parameters and parameter sets. Developed by themlrteam. No extra recursive dependencies.R6: Reference class objects. No recursive dependencies.data.table: Extension of R’sdata.frame. No recursive dependencies.digest(viamlr3misc): Hash digests. No recursive dependencies.uuid: Create unique string identifiers. No recursive dependencies.lgr: Logging facility. No extra recursive dependencies.mlr3measures: Performance measures. No extra recursive dependencies.mlbench: A collection of machine learning data sets. No dependencies.palmerpenguins: A classification data set about penguins, used on examples and provided as a toy task. No dependencies.evaluateandcallrcan be used.Contributing to mlr3
This R package is licensed under the LGPL-3. If you encounter problems using this software (lack of documentation, misleading or wrong documentation, unexpected behavior, bugs, …) or just want to suggest features, please open an issue in the issue tracker. Pull requests are welcome and will be included at the discretion of the maintainers.
Please consult the wiki for a style guide, a roxygen guide and a pull request guide.
Citing mlr3
If you use mlr3, please cite our JOSS article: