Learn R Programming

⚠️There's a newer version (0.23.0) of this package.Take me there.

mlr3

Efficient, object-oriented programming on the building blocks of machine learning. Successor of mlr.

Resources

Installation

remotes::install_github("mlr-org/mlr3")

Example

Constructing Learners and Tasks

library(mlr3)
set.seed(1)

# create learning task
task_iris = TaskClassif$new(id = "iris", backend = iris, target = "Species")
task_iris
## <TaskClassif:iris> (150 x 5)
## * Target: Species
## * Properties: multiclass
## Features (4):
## * dbl (4): Petal.Length, Petal.Width, Sepal.Length, Sepal.Width
# load learner and set hyperparamter
learner = lrn("classif.rpart", cp = 0.01)

Basic train + predict

# train/test split
train_set = sample(task_iris$nrow, 0.8 * task_iris$nrow)
test_set = setdiff(seq_len(task_iris$nrow), train_set)

# train the model
learner$train(task_iris, row_ids = train_set)

# predict data
prediction = learner$predict(task_iris, row_ids = test_set)

# calculate performance
prediction$confusion
##             truth
## response     setosa versicolor virginica
##   setosa         11          0         0
##   versicolor      0         12         1
##   virginica       0          0         6
measure = msr("classif.acc")
prediction$score(measure)
## classif.acc 
##   0.9666667

Resample

# automatic resampling
resampling = rsmp("cv", folds = 3L)
rr = resample(task_iris, learner, resampling)
## INFO  [11:45:23.583] Applying learner 'classif.rpart' on task 'iris' (iter 1/3) 
## INFO  [11:45:23.775] Applying learner 'classif.rpart' on task 'iris' (iter 2/3) 
## INFO  [11:45:23.804] Applying learner 'classif.rpart' on task 'iris' (iter 3/3)
rr$performance(measure)
##             task task_id               learner    learner_id
##           <list>  <char>                <list>        <char>
## 1: <TaskClassif>    iris <LearnerClassifRpart> classif.rpart
## 2: <TaskClassif>    iris <LearnerClassifRpart> classif.rpart
## 3: <TaskClassif>    iris <LearnerClassifRpart> classif.rpart
##        resampling resampling_id iteration          prediction classif.acc
##            <list>        <char>     <int>              <list>       <num>
## 1: <ResamplingCV>            cv         1 <PredictionClassif>        0.92
## 2: <ResamplingCV>            cv         2 <PredictionClassif>        0.92
## 3: <ResamplingCV>            cv         3 <PredictionClassif>        0.94
rr$aggregate(measure)
## classif.acc 
##   0.9266667

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, 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.
  • Be light on dependencies. mlr3 requires the following packages:
    • 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.
    • mlr3misc Miscellaneous functions used in multiple mlr3 extension packages. Developed by 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: Hash digests. No recursive dependencies.
    • lgr: Logging facility. No extra recursive dependencies.
    • Metrics: Package which implements performance measures. No recursive dependencies.
    • mlbench: A collection of machine learning data sets. No dependencies.
  • Reflections: Objects are queryable for properties and capabilities, allowing you to programm on them.
  • Additional functionality that comes with extra dependencies:

Talks, Workshops, etc.

mlr-outreach holds all outreach activities related to mlr and mlr3.

Copy Link

Version

Install

install.packages('mlr3')

Monthly Downloads

10,758

Version

0.1.2

License

LGPL-3

Issues

Pull Requests

Stars

Forks

Maintainer

Michel Lang

Last Published

August 25th, 2019

Functions in mlr3 (0.1.2)

LearnerClassif

Classification Learner
LearnerRegr

Regression Learner
Learner

Learner Class
DataBackendMatrix

DataBackend for Matrix
LearnerClassifFeatureless

Featureless Classification Learner
LearnerClassifDebug

Classification Learner for Debugging
LearnerClassifRpart

Classification Tree Learner
DataBackendDataTable

DataBackend for data.table
BenchmarkResult

Container for Results of benchmark()
DataBackend

DataBackend
MeasureRegr

Regression Measure
MeasureRegrMAE

Absolute Errors Regression Measure
MeasureClassifCE

Classification Error Measure
MeasureElapsedTime

Elapsed Time Measure
MeasureOOBError

Out-of-bag Error Measure
MeasureClassifConfusion

Binary Classification Measures Derived from a Confusion Matrix
MeasureClassifCosts

Cost-sensitive Classification Measure
MeasureClassifF1

F1 Classification Measure
LearnerRegrFeatureless

Featureless Regression Learner
LearnerRegrRpart

Regression Tree Learner
PredictionRegr

Prediction Object for Regression
TaskClassif

Classification Task
PredictionClassif

Prediction Object for Classification
Task

Task Class
MeasureRegrMSE

Mean Squared Error Regression Measure
ResamplingCustom

Custom Resampling
MeasureRegrRMSE

Root Mean Squared Error Regression Measure
Measure

Measure Class
TaskGeneratorFriedman1

Friedman1 Regression Task Generator
TaskGeneratorSmiley

Smiley Classification Task Generator
ResampleResult

Container for Results of resample()
MeasureClassif

Classification Measure
Resampling

Resampling Class
ResamplingHoldout

Holdout Resampling
as_task.character

Object Coercion
mlr_assertions

Assertion for mlr3 Objects
confusion_measures

Calculate Confusion Measures
TaskGeneratorXor

XOR Classification Task Generator
default_measures

Get a Default Measure
ResamplingCV

Cross Validation Resampling
ResamplingBootstrap

Bootstrap Resampling
TaskRegr

Regression Task
as_data_backend

Create a Data Backend
mlr3-package

mlr3: Machine Learning in R - Next Generation
as_benchmark_result

Convert to BenchmarkResult
hash_resample_result

Calculate the Hash for a ResampleResult
mlr_tasks_mtcars

"Motor Trend" Car Road Tests Task
TaskGenerator

TaskGenerator Class
MeasureClassifACC

Accuracy Classification Measure
mlr_reflections

Reflections for mlr3
mlr_resamplings

Dictionary of Resampling Strategies
mlr_sugar

Syntactic Sugar for Object Construction
benchmark

Benchmark Multiple Learners on Multiple Tasks
benchmark_grid

Generate a Benchmark Grid Design
mlr_tasks_sonar

Sonar Classification Task
mlr_task_generators

Dictionary of Task Generators
resample

Resample a Learner on a Task
mlr_tasks_pima

Pima Indian Diabetes Classification Task
mlr_tasks_wine

Wine Classification Task
TaskGenerator2DNormals

2d Normals Classification Task Generator
mlr_tasks_zoo

Zoo Classification Task
mlr_tasks_spam

Spam Classification Task
mlr_tasks

Dictionary of Tasks
Prediction

Abstract Prediction Object
MeasureClassifAUC

Area Under the Curve Classification Measure
MeasureSelectedFeatures

Selected Features Measure
ResamplingRepeatedCV

Repeated Cross Validation Resampling
mlr_tasks_boston_housing

Boston Housing Regression Task
ResamplingSubsampling

Subsampling Resampling
mlr_learners

Dictionary of Learners
as.data.table

mlr_measures

Dictionary of Performance Measures
TaskSupervised

Supervised Task
mlr_tasks_german_credit

German Credit Classification Task
mlr_tasks_iris

Iris Classification Task