曾几何时,小编回忆自己博士论文中全部机器学习(ML)算法都是基于零零散散的R包,手工编码而成,那个心酸和艰难。不同的机器学习算法,在R语言中要使用不同的软件包(如caret、e1071等各立山头),这就导致代码不通,每个包都要去看help文档。当时羡慕的是python的sklearn库等等、kaggle竞赛算法云云。过去来看R在ML领域显得没那么系统化,甚至略微有些薄弱。尽管R机器学习算法包在posit网站提供了手册,见https://posit.co/resources/cheatsheets,但是非官方又不全。
目前R中ML旧攻略主要都是caret包(上次更新于23年3月,包含238种模型和众多函数,https://cran.r-project.org/web/packages/caret/vignettes/caret.html,官网https://topepo.github.io/caret/)。mlr3框架比较新,这里呈现一些18年的mlr于caret比较的资料https://www.r-bloggers.com/2018/11/mlr-vs-caret/。
文章指出,二者在预处理、learner、resampling、可视化不分伯仲;mlr优秀在task、measure、特有benchmarking、tuning、自带数据、运行速度、框架化;caret无特别优秀之处。时间来到2024年,mlr3比mlr更加是质的飞跃,将是新时代的ML框架王者。
相比mlr3底层data.table,ditymodels底层是tibble,运行速度很慢。虽然tidymodels特别容易执行简单的机器学习任务,但mlr3更倾向于高级机器学习,当然mlr3生态中mlr3verse也行相对简化框架。mlr3是面向对象R6的编程逻辑,初始学习会不太适应,但是认真读懂看懂程序后,会发现逻辑都是为了批量标准化复杂的操作。
散乱的R包包括glmnet(lasso分析)、rms(nomogram列线图、rcs曲线)、e1071+ kernlab (svm分析)、nnet(多分类、ANN)、rpart(决策树)、gbm(GBRT)、Mass(LDA判别)、xgboost、CatBoost(离散x的xgboost)、h2o包(多线程深度学习)等等。需要逐渐从零散的R包过度到mlr3集成框架中来。
mlr3作为新一代ML框架,是在mlr失败的基础上重新改写的,十分强大,ML理念也是最新的,包括benchmark、tuning等等。而且,他是个完整的生态环境,将来也拥有更宽广的适配场景。小编作为一个摸爬滚打15年统计的老鸟,摸着mlr3book的刹那,就有一种发现宝藏的冲动。嗯,老鸟的眼光应该不会差。mlr3就是一个很强的新事物,需要忘记自己曾经的优势,慢慢认可、模仿、学习。
mlr3是19年末开发,旨在提供比其他机器学习框架更多的灵活性,同时仍然提供使用高级功能的简单方法。本文系列笔记均基于书记https://mlr3book.mlr-org.com/。不得不说,老外是真的牛b,不得不服别人永远是原创的神!
以下为小编精心阅读和R代码笔记的ppt,福利见文末。阅读进度较慢,内容较多,目前只放前3章节,每张ppt都是小编一一核对和校稿。
感谢国内公众号,诸如“灵活胖子的科研进步之路、医学和生信笔记”等先行者无私翻译的奉献。
本公众号将于2024年1月初建学术交流群3,届时开放二维码,敬请关注。
本文精美PDF获取,链接有效期为1个月截止日期2024.1.16,获取方式请在公众号窗口回复 mlr3笔记1