1 介紹和概述

mlr3book :https://mlr3book.mlr-org.com/intro.html

1.介紹和概述

 (Machine Learning in R) mlr3 (Lang 等人,2019) 包及其生態(tài)系統(tǒng)為 R 語(yǔ)言 (R Core Team顾犹,2019) 提供了一個(gè)通用倒庵、面向?qū)ο蠛涂蓴U(kuò)展的框架,用于回歸(附錄 C)炫刷、分類(lèi)(第 2.4 節(jié))和其他機(jī)器學(xué)習(xí)任務(wù)(第 8 章)擎宝。這個(gè)統(tǒng)一的接口提供了功能,可以擴(kuò)展和組合現(xiàn)有的機(jī)器學(xué)習(xí)算法(學(xué)習(xí)器(第 2.2 節(jié)))浑玛,智能地選擇和調(diào)整適合給定機(jī)器學(xué)習(xí)任務(wù)的最合適技術(shù)(附錄 C)绍申,并執(zhí)行大規(guī)模比較,從而實(shí)現(xiàn)元學(xué)習(xí)顾彰。這些高級(jí)功能的示例包括超參數(shù)調(diào)整(第 4 章)和特征選擇(第 5 章)极阅。許多操作的并行化得到了本地支持(第 9.1 節(jié))。

    mlr3 的整體目標(biāo)類(lèi)似于 caret涨享、tidymodels涂屁、Python 的 scikit-learn1,以及 Julia 的 MLJ2灰伟。通常情況下拆又,mlr3 的設(shè)計(jì)旨在提供比其他機(jī)器學(xué)習(xí)框架更多的靈活性,同時(shí)仍然提供使用高級(jí)功能的簡(jiǎn)單方法栏账。特別是帖族,雖然 tidymodels 使執(zhí)行簡(jiǎn)單的機(jī)器學(xué)習(xí)任務(wù)非常容易,但 mlr3 更適用于高級(jí)機(jī)器學(xué)習(xí)挡爵。如果想快速了解如何在 mlr3verse 中完成任務(wù)竖般,請(qǐng)參閱 mlr3 cheatsheets3。

    mlr3 為 R 中現(xiàn)有的學(xué)習(xí)器提供了統(tǒng)一的接口茶鹃。除了一些例外涣雕,我們不會(huì)自己實(shí)現(xiàn)任何學(xué)習(xí)器,盡管我們經(jīng)常增強(qiáng)底層學(xué)習(xí)器提供的功能闭翩。特別是挣郭,這包括為調(diào)整定義超參數(shù)空間

1.1 目標(biāo)受眾

    我們假定 mlr3 的用戶(hù)已經(jīng)學(xué)習(xí)過(guò)機(jī)器學(xué)習(xí)入門(mén)課程或者具備等同的專(zhuān)業(yè)知識(shí),并且有一些 R 基礎(chǔ)經(jīng)驗(yàn)疗韵。計(jì)算機(jī)科學(xué)或統(tǒng)計(jì)學(xué)背景有助于理解本書(shū)后面章節(jié)描述的高級(jí)功能兑障,但不是必需的。對(duì)于新手來(lái)說(shuō),(James et al. 2014) 提供了全面的機(jī)器學(xué)習(xí)入門(mén)介紹流译。

    mlr3 提供了一個(gè)領(lǐng)域特定語(yǔ)言(DSL)逞怨,用于在 R 中進(jìn)行機(jī)器學(xué)習(xí),它能夠從簡(jiǎn)單的練習(xí)到復(fù)雜的項(xiàng)目應(yīng)對(duì)一切福澡。我們的目標(biāo)對(duì)象既包括想要快速應(yīng)用機(jī)器學(xué)習(xí)算法的從業(yè)者叠赦,也包括想要在結(jié)構(gòu)化環(huán)境中實(shí)現(xiàn)、評(píng)估和比較新方法的研究人員革砸。

1.2 從mlr到mlr3

    mlr 包(Bischl et al. 2016)于2013年首次發(fā)布到CRAN4除秀,其核心設(shè)計(jì)和架構(gòu)遠(yuǎn)在更早的時(shí)期就開(kāi)始了。隨著時(shí)間的推移业岁,許多功能的添加使得其設(shè)計(jì)變得更加復(fù)雜,這使得構(gòu)建寇蚊、維護(hù)和擴(kuò)展變得更加困難笔时。事后看來(lái),我們意識(shí)到 mlr 中的一些設(shè)計(jì)和架構(gòu)選擇使得支持新功能變得困難仗岸,特別是在機(jī)器學(xué)習(xí)流程方面允耿。此外,在 mlr 最初設(shè)計(jì)之后扒怖,R 生態(tài)系統(tǒng)和諸如 data.table 等有用的包已經(jīng)發(fā)生了重大變化较锡。因此,我們決定開(kāi)發(fā)一個(gè)全新的包盗痒,即 mlr3蚂蕴,以滿(mǎn)足不斷增長(zhǎng)的需求,并更好地適應(yīng)現(xiàn)代 R 生態(tài)系統(tǒng)的變化俯邓。

    在原有的mlr設(shè)計(jì)中骡楼,整合所有這些變化是不可能的。因此稽鞭,我們決定在2018年開(kāi)始重新實(shí)現(xiàn)鸟整,最終在2019年7月推出了mlr3的首個(gè)版本。

    mlr3的新設(shè)計(jì)以及進(jìn)一步整合和新開(kāi)發(fā)的R包(特別是R6朦蕴、future和data.table)使其比原來(lái)的mlr更易于使用篮条、維護(hù)和在許多方面更高效。生態(tài)系統(tǒng)中的包之間的聯(lián)系不再那么緊密吩抓,使它們更易于維護(hù)和開(kāi)發(fā)涉茧,特別是非常專(zhuān)業(yè)的包。

1.3 設(shè)計(jì)原則

1.3 設(shè)計(jì)原則

本節(jié)內(nèi)容可能不是所有讀者都感興趣疹娶。

在 mlr3 包和 mlr3verse 生態(tài)系統(tǒng)中降瞳,我們遵循以下一般設(shè)計(jì)原則:

計(jì)算和表現(xiàn)的分離。mlr3 生態(tài)系統(tǒng)的大多數(shù)包都專(zhuān)注于數(shù)據(jù)處理和轉(zhuǎn)換、應(yīng)用機(jī)器學(xué)習(xí)算法以及計(jì)算結(jié)果挣饥。我們的核心包不提供圖形用戶(hù)界面(GUI)除师,因?yàn)樗鼈兊囊蕾?lài)關(guān)系會(huì)使安裝變得復(fù)雜,特別是在服務(wù)器上扔枫。出于同樣的原因汛聚,數(shù)據(jù)和結(jié)果的可視化是在額外的包 mlr3viz 中提供的,該包避免了對(duì) ggplot2 的依賴(lài)短荐。mlr3shiny 則提供了使用 shiny 包進(jìn)行一些基本機(jī)器學(xué)習(xí)任務(wù)的界面倚舀。

面向?qū)ο缶幊蹋∣OP)。采用 R6 進(jìn)行干凈忍宋、面向?qū)ο蟮脑O(shè)計(jì)痕貌、對(duì)象狀態(tài)更改和引用語(yǔ)義。

表格數(shù)據(jù)糠排。采用 data.table舵稠,它具有一流的計(jì)算性能以及可以進(jìn)一步輕松處理的表格數(shù)據(jù)作為數(shù)據(jù)結(jié)構(gòu)。

統(tǒng)一輸入和輸出數(shù)據(jù)格式入宦。這大大簡(jiǎn)化了 API哺徊,并允許輕松選擇和“拆分-應(yīng)用-合并”(聚合)操作。我們將 data.table 和 R6 結(jié)合起來(lái)乾闰,將非原子和復(fù)合對(duì)象的引用放在表中落追,并大量使用列表列。

防御性編程和類(lèi)型安全涯肩。所有用戶(hù)輸入都經(jīng)過(guò) checkmate(Lang 2017)檢查轿钠。我們記錄返回類(lèi)型,并避免在基本 R 中流行的“簡(jiǎn)化”結(jié)果的機(jī)制(例如 sapply() 或用于索引數(shù)據(jù).frame 的 drop 參數(shù))病苗。此外谣膳,我們還擁有廣泛的單元測(cè)試!

依賴(lài)性較少铅乡。對(duì)于 mlr 來(lái)說(shuō)继谚,主要的維護(hù)負(fù)擔(dān)之一是跟蹤它所依賴(lài)的許多包的學(xué)習(xí)者接口和行為的變化。我們?cè)?mlr3 中需要較少的包以使安裝和維護(hù)更容易阵幸。我們?nèi)匀惶峁┫嗤墓δ芑模珜⑵洳鸱譃楦喟總€(gè)包都具有較少的依賴(lài)性挚赊。正如上面提到的诡壁,這尤其適用于所有可視化功能柜裸,它們包含在一個(gè)單獨(dú)的包中娜饵,以避免所有其他包中的不必要依賴(lài)性。

1.4 包生態(tài)系統(tǒng)

mlr3 依賴(lài)于以下流行和經(jīng)過(guò)良好驗(yàn)證的包渣玲,這些包不是由 mlr3 核心成員開(kāi)發(fā)的:

  • R6:在 mlr3 中主要使用的類(lèi)系統(tǒng)。

  • data.table:高性能的 R 數(shù)據(jù)框擴(kuò)展夺克。

  • digest:密碼哈希函數(shù)箕宙。 uuid:生成通用唯一標(biāo)識(shí)符。

  • lgr:高度可配置的日志記錄庫(kù)铺纽。

  • mlbench 和 palmerpenguins:更多的機(jī)器學(xué)習(xí)數(shù)據(jù)集柬帕。

  • evaluate:用于捕獲輸出、警告和異常 (第 9.2 節(jié))狡门。

  • future / future.apply:用于并行化 (第 9.1 節(jié))陷寝。

    mlr3 包本身提供了 mlr3verse 中其余部分所依賴(lài)的基礎(chǔ)功能和機(jī)器學(xué)習(xí)的基本構(gòu)建塊。圖 1.1 顯示了 mlr3verse 中的包其馏,這些包擴(kuò)展了 mlr3 的預(yù)處理凤跑、流水線、可視化叛复、額外的學(xué)習(xí)器仔引、額外的任務(wù)類(lèi)型等功能。


    image-20230311103155224.png
    我們使用 R6 進(jìn)行面向?qū)ο缶幊讨鲁叮⑹褂?data.table 存儲(chǔ)和操作表格數(shù)據(jù)肤寝。這兩個(gè)包都是 mlr3 的核心当辐,我們?yōu)槌鯇W(xué)者簡(jiǎn)要介紹這兩個(gè)包抖僵。雖然深入了解這些包并不是必需的,但需要基本理解才能有效地使用 mlr3缘揪。

1.5 R6入門(mén)指南

    R6是R中較新的面向?qū)ο缶幊谭独凰H海鉀Q了R中早期OO實(shí)現(xiàn)(如mlr中使用的S3)的缺點(diǎn)。如果您以前做過(guò)面向?qū)ο缶幊陶殷荩琑6應(yīng)該很熟悉蹈垢。我們重點(diǎn)介紹您需要了解的R6部分,以便有效地使用mlr3袖裕。

    對(duì)象通過(guò)調(diào)用R6::R6Class()對(duì)象的構(gòu)造函數(shù)來(lái)創(chuàng)建曹抬,具體來(lái)說(shuō)是初始化方法$new()。例如急鳄,foo = Foo$new(bar = 1)創(chuàng)建了一個(gè)新的Foo類(lèi)對(duì)象谤民,將構(gòu)造函數(shù)的bar參數(shù)設(shè)置為值1。

    對(duì)象具有可變狀態(tài)疾宏,該狀態(tài)封裝在它們的字段中张足,可以通過(guò)美元符號(hào)操作符進(jìn)行訪問(wèn)。我們可以通過(guò)foo$bar訪問(wèn)foo變量中的bar值坎藐,并通過(guò)分配字段來(lái)設(shè)置其值为牍,例如foo$bar = 2。

    除了字段之外,對(duì)象還公開(kāi)了方法碉咆,允許檢查對(duì)象的狀態(tài)抖韩、檢索信息或執(zhí)行更改對(duì)象內(nèi)部狀態(tài)的操作。例如吟逝,一個(gè)學(xué)習(xí)器的$train()方法通過(guò)構(gòu)建和存儲(chǔ)模型來(lái)改變學(xué)習(xí)器的內(nèi)部狀態(tài)帽蝶,然后可以用于進(jìn)行預(yù)測(cè)。

        對(duì)象可以有公共和私有字段和方法块攒。公共字段和方法定義了與對(duì)象交互的API励稳。私有方法只有在您想要擴(kuò)展mlr3(例如使用新的學(xué)習(xí)器)時(shí)才相關(guān)。

        從技術(shù)上講囱井,R6對(duì)象是環(huán)境驹尼,因此具有引用語(yǔ)義。例如庞呕,foo2 = foo不會(huì)在foo2中創(chuàng)建foo的副本新翎,而是創(chuàng)建另一個(gè)引用指向同一實(shí)際對(duì)象。設(shè)置foo$bar = 3也會(huì)將foo2$bar更改為3住练,反之亦然地啰。

            要復(fù)制對(duì)象,請(qǐng)使用$clone()方法和deep = TRUE參數(shù)進(jìn)行嵌套對(duì)象的深復(fù)制讲逛,例如foo2 = foo$clone(deep = TRUE)亏吝。

1.6 data.table入門(mén)指南

    包data.table實(shí)現(xiàn)了R中存儲(chǔ)表格數(shù)據(jù)的流行替代方案,即一個(gè)對(duì)象盏混。我們決定使用data.table蔚鸥,因?yàn)樗\(yùn)行速度非常快许赃,可以很好地?cái)U(kuò)展到更大的數(shù)據(jù)止喷。

    注意: 許多mlr3函數(shù)返回data.table,可以方便地對(duì)其進(jìn)行子集處理或與其他輸出進(jìn)行組合混聊。如果您不喜歡這種語(yǔ)法或更喜歡其他工具弹谁,基本的data.frame或tibble/dplyrs只需要一個(gè)as.data.frame()或as_tibble()轉(zhuǎn)換即可。

    可以使用data.table()函數(shù)(其界面類(lèi)似于data.frame())構(gòu)造數(shù)據(jù)表句喜,也可以通過(guò)使用as.data.table()函數(shù)將對(duì)象轉(zhuǎn)換為數(shù)據(jù)表预愤。
library("data.table")
dt = data.table(x = 1:6, y = rep(letters[1:3], each = 2))
dt
image-20230311103706146.png
data.table可以像data.frame一樣使用,但它們提供了額外的功能藤滥,使得復(fù)雜操作更容易鳖粟。例如,可以使用 [ 運(yùn)算符按組對(duì)數(shù)據(jù)進(jìn)行匯總:
dt[, mean(x), by = "y"]
y    V1 

1: a 1.5

2: b 3.5

3: c 5.5

1.7 重要的mlr3實(shí)用工具

    Sugar函數(shù) mlr3中的大多數(shù)對(duì)象都可以通過(guò)稱(chēng)為Sugar函數(shù)的便捷函數(shù)創(chuàng)建拙绊。它們提供了常見(jiàn)代碼習(xí)慣的快捷方式向图,減少了用戶(hù)需要編寫(xiě)的代碼量泳秀。本書(shū)中我們大量使用Sugar函數(shù),并給出了完整的“全稱(chēng)”以獲得完整的細(xì)節(jié)榄攀。在大多數(shù)情況下嗜傅,Sugar函數(shù)將實(shí)現(xiàn)您想要執(zhí)行的操作,只有在編寫(xiě)自定義對(duì)象或擴(kuò)展時(shí)才需要考慮使用完整的R6代碼檩赢。例如吕嘀,lrn(“regr.rpart”)是LearnerRegrRpart $ new()的Sugar版本。

        字典 mlr3使用字典來(lái)存儲(chǔ)學(xué)習(xí)器或任務(wù)等對(duì)象贞瞒。這些是鍵值存儲(chǔ)偶房,允許將鍵與值關(guān)聯(lián)起來(lái),值可以是R6對(duì)象军浆,就像紙質(zhì)字典將單詞與它們的定義關(guān)聯(lián)起來(lái)一樣棕洋。通常,通過(guò)Sugar函數(shù)訪問(wèn)字典中的值乒融,這些函數(shù)自動(dòng)使用適用的字典掰盘,而無(wú)需用戶(hù)指定;只需要指定要檢索的鍵即可。字典用于分組相關(guān)對(duì)象赞季,以便可以輕松地列出和檢索它們愧捕。例如,可以直接從mlr_learners字典中使用鍵“classif.featureless”檢索學(xué)習(xí)器(mlr_learners $ get(“classif.featureless”))申钩,并且可以使用as.data.table(mlr_learners)獲取所有存儲(chǔ)的學(xué)習(xí)器的概述次绘。

        mlr3viz mlr3viz是mlr3生態(tài)系統(tǒng)中所有繪圖功能的包。該包使用常見(jiàn)主題(ggplot2 :: theme_minimal())典蜕,使所有生成的圖表具有類(lèi)似的美學(xué)断盛。在幕后罗洗,mlr3viz使用ggplot2愉舔。mlr3viz擴(kuò)展了fortify和autoplot,用于與Prediction伙菜,Learner和Benchmark對(duì)象一起使用的常見(jiàn)mlr3輸出(這些對(duì)象將在下一章中介紹和涵蓋)轩缤。 mlr3viz的最常見(jiàn)用法是autoplot()函數(shù),其中傳遞的對(duì)象類(lèi)型決定了繪圖類(lèi)型贩绕。繪圖類(lèi)型記錄在可通過(guò)火的?autoplot.X訪問(wèn)的各自手冊(cè)頁(yè)面中。例如淑倾,可以通過(guò)運(yùn)行馏鹤?autoplot.TaskRegr找到回歸任務(wù)的圖表文檔。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末娇哆,一起剝皮案震驚了整個(gè)濱河市湃累,隨后出現(xiàn)的幾起案子勃救,更是在濱河造成了極大的恐慌,老刑警劉巖治力,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蒙秒,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡宵统,警方通過(guò)查閱死者的電腦和手機(jī)晕讲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)马澈,“玉大人瓢省,你說(shuō)我怎么就攤上這事∪啵” “怎么了净捅?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)辩块。 經(jīng)常有香客問(wèn)我蛔六,道長(zhǎng),這世上最難降的妖魔是什么废亭? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任国章,我火速辦了婚禮,結(jié)果婚禮上豆村,老公的妹妹穿的比我還像新娘液兽。我一直安慰自己,他們只是感情好掌动,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布四啰。 她就那樣靜靜地躺著,像睡著了一般粗恢。 火紅的嫁衣襯著肌膚如雪柑晒。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天眷射,我揣著相機(jī)與錄音匙赞,去河邊找鬼。 笑死妖碉,一個(gè)胖子當(dāng)著我的面吹牛涌庭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播欧宜,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼坐榆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了冗茸?” 一聲冷哼從身側(cè)響起席镀,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤羹铅,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后愉昆,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體职员,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年跛溉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了焊切。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡芳室,死狀恐怖专肪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情堪侯,我是刑警寧澤嚎尤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站伍宦,受9級(jí)特大地震影響芽死,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜次洼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一关贵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧卖毁,春花似錦揖曾、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至翔脱,卻和暖如春奴拦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背碍侦。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工粱坤, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留隶糕,地道東北人瓷产。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像枚驻,于是被迫代替她去往敵國(guó)和親濒旦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容