ITPub博客

首页 > > > 【R语言】新一代机器学习包mlr3快速入门

【R语言】新一代机器学习包mlr3快速入门

作者:浪花小雨滴 时间:2020-06-17 10:46:19 0 删除 编辑

开篇:我认为 R 的 mlr3 包,是足以媲美 Python 的 sklearn 的机器学习包。

一.mlr3包介绍

1. mlr3包的优势

mlr3包是最先进的系统地实现机器学习算法的R包:

(1) 克服了S3语法的局限性,改用R6语法

  • 真正的面向对象(OO):数据和方法组装到一起
  • 可继承性
  • 支持引用语

(2) 从参数到内部数据结构,全面拥抱 data.table

  • 更快地操作表格数据
  • 更好地支持数据表结构中对列表列的复杂对象排序
  • 支持引用语义

(3) 降低依赖性,包括直接和间接的依赖:

  • R6, data.table, Metrics, lgr
  • 某些非官方包:backports, checkmate,…

(4) 目前 mlr3verse 系列生态:

2. 安装mlr3包

install.packages("mlr3")
# 或者
remotes::install_github("mlr-org/mlr3")

注:若无法 remove 某包,可以删除 library 下该包文件夹,再试。

3. mlr3基本工作流

mlr3基本工作流是通过构建模块(R6类)和操作实现的,包括创建有监督机器学习任务,如分类和回归,训练模型,对新数据做预测,用交叉验证和标杆管理(benchmarking)评价和比较不同模型。

数据,封装在任务(Tasks)中,先划分为训练集和测试集,以保证模型的泛化能力。将训练数据交给机器学习算法,称为学习器(Learner),用来构建特征如何关联目标值的模型。构建的模型在测试集上进行预测,再与真实目标值比较以评价模型好坏。mlr3提供了多种评价模型好坏的度量,通常是一个数值得分。该过程将重复多次,每次都从原数据集中重抽样不同的训练集和测试集,多次重抽样迭代通过量化特定模型在不同数据上的性能,以获得更好的泛化能力。

  • 任务(Task):封装了数据及额外信息,如预测目标;
  • 学习器(Learner):封装了多种机器学习算法,能够训练模型并做预测,大多数学习器都有影响其操作的超参数;
  • 度量(Measure):基于预测值与真实值的差异计算数值得分;
  • 重抽样(Resampling):生成一系列的训练集和测试集。

另外,实际数据的机器学习建模工作流,还包括标准化、缺失值插补、特征选择等。

二. mlr3基本建模流程

下面以对 iris 数据集构建决策树分类模型为例来阐述。

1. 创建任务

创建任务,或从自带的任务字典中选择任务:

library(mlr3)

task = TaskClassif$new(id="iris", backend=iris, target="Species") 
# task = tsk("iris")    
task

2. 选择学习器

从自带的学习器字典中,选择“分类树”学习器:

learner = lrn("classif.rpart" , cp=0.1, minsplit=10) 
learner  

3. 划分训练集/测试集

set.seed(123)
train = sample(task$nrow, 0.8 * task$nrow) 
test = setdiff(seq_len(task$nrow), train)

4. 训练模型

learner$train(task, row_ids=train) 
learner$model  # 查看训练好的模型

5. 模型预测

predictions = learner$predict(task, row_ids=test)
predictions

6. 模型评估

predictions$confusion
measure = msr("classif.acc")
predictions$score(measure)     # 预测精度

7. 重抽样

resampling = rsmp("cv", folds = 3L)
rr = resample(task, learner, resampling)
rr$score(measure)
rr$aggregate(measure)  


参考文献:

mlr3book.

https://mlr3book.mlr-org.com/​mlr3book.mlr-org.com

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3136707/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    4259
  • 访问量
    39984