最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

【R機器學習:mlr3verse技術手冊】1 基礎知識

2022-11-27 16:22 作者:張敬信老師  | 我要投稿

0 前言

  • 曾經:R中各個機器學習算法,都是單獨的包實現,沒有統一接口,不方便使用

  • 過去:整合機器學習算法的包:

-?mlr

-?caret

  • 現在:新一代整合機器學習算法的包,也是上面兩個的進化版:

-?mlr3verse包(首推):面向對象

-?tidymodels包:tidyverse一脈相承

- 模型(工業(yè))部署:vetiver包、plumber

mlr3verse是最新、最先進的R機器學習框架,它基于面向對象R6語法和?data.table底層數據流(速度超快),支持future并行,支持搭建“圖”流學習器,理念非常先進、功能非常強大。

mlr3verse整合了各種機器學習算法包,實現了統一、整潔的機器學習流程化操作,足以媲美Pythonscikit-learn機器學習庫。

圖片
圖1 mlr3verse最新生態(tài)

加載包:

幾點技術說明:

  • 使用幫助:?對象名字,比如?ResampleResult,或對象的$help()方法,比如?learner$help()

  • 一些對象結果并不是數據框,as.data.table()轉化為數據框再使用;

  • 學習器超參數的幫助,需要找到原包算法的函數幫助。

1 基礎知識

1.1 R6類:面向對象

R6類,R新一代面向對象語法:真正面向對象,支持繼承、引用語法。

將數據、方法綁定到一個對象,例如學習器對象:

圖片
圖2 學習器對象
  • 訪問屬性:Learner$param_set

  • 調用方法:Learner$train()

1.2 任務:封裝數據

任務是對表格數據的封裝,自變量稱為特征,因變量稱為目標或結果變量。

  • 目標決定了機器學習的“任務”:

- 連續(xù)目標,就是回歸;

- 離散目標,就是分類;

- 無目標,無監(jiān)督學習(聚類、降維)

mlr3生態(tài)下還有若干特殊任務:生存分析任務、密度估計任務、時空分析任務、有序分析任務、函數分析任務、多標簽分類任務、成本敏感分類任務、聚類任務。

創(chuàng)建任務:

圖片
圖片

屬性:$nrow, $ncol, $row_roles$use, $holdout, $early_stopping),?$col_roles$feature, $target, …),?$feature_names(用于模型的特征), ……

方法:$data(), $set_row_roles(), $set_col_roles(), $filter()(選擇行),?$select()(選擇特征), ……

獲取幫助:?Task

示例:

圖片
  • 劃分訓練集、測試集:

得到訓練集、測試集的索引(行號),分別在split$train、split$test中。

1.3 學習器:封裝算法

圖片
圖3 學習器工作流

機器學習有很多種算法,如決策樹、支持向量機等,往往來自不同的包,函數接口各異,不易于統一學習和使用。

mlr3將算法封裝在學習器中,提供了統一的方便接口,算法實現整合自相應的算法包(需要安裝)。

圖片

獲取幫助:?Learner

更多的學習器,可安裝mlr3extralearners包。

圖片

學習器$model屬性為NULL,用$train()方法在訓練數據上訓練模型,模型結果將存入$model(可取用,一般與原包函數返回值一致),再用$predict()方法在測試數據上做預測,得到結果是Prediction對象。

圖片

圖片

1.4 性能評估

訓練集上訓練好的模型性能如何,需要這樣來檢驗:

  • 將模型用到測試集(不能與訓練集有交集,否則會有數據泄露)得到預測值;

  • 選擇一種合適的性能度量指標,來度量預測值與真實值相差多少。

圖片

獲取幫助:?Measure

有二/多分類度量、回歸度量、聚類度量等,選擇一種性能度量指標,比如準確率,用預測對象的$score()方法,計算該度量指標的得分:

圖片
圖片
圖片

1.5 重抽樣

重抽樣就是對數據集重復抽樣,得到數據集的若干副本。

機器學習傳統的數據劃分:訓練集+測試集,就是對數據的一種重抽樣:留出法("holdout")。

留出法最簡單,只得到了數據集的一個副本,所以只能做一次“擬合模型+模型預測+評估性能”。

一次考試就決定最終成績,存在偶然性顯然是不夠科學的,因此有必要從數據集抽樣出多個副本,以做多次“擬合模型+模型預測+評估性能”,取平均性能作為最終成績。

k 折交叉驗證("cv"),就是這種重抽樣的代表:

圖片
圖4 10折交叉驗證示意圖

10 折交叉驗證是將數據集隨機分成 10 份,分別以其中 1 份為測試集,其余 9 份為訓練集,組成 10 組數據:訓練 10 個模型+做 10 次模型預測+評估 10 次模型性能,取平均作為最終模型性能。

k 折交叉驗證,還可以重復做 m 次(?m×k?個副本),叫做重復 k 折交叉驗證("repeated_cv")。

Bootstrap(自助)重抽樣(多用于統計學習中計算統計量),是從包含?n?個觀測的原數據集隨機可重復抽樣?n?個觀測,得到分析數據是有重復的,未被抽取到的觀測作為評估數據,也稱為“袋外”(out-of-bag)樣本。

圖片

除了上面介紹過的之外,還有:

  • 留一交叉驗證("loo")

  • 子抽樣("subsampling")

  • 樣本內抽樣("insample")

  • 自定義抽樣("custom")

  • 自定義交叉驗證抽樣("custom_cv")

獲取幫助:?Resampling

(1) 調試用:查看重抽樣的效果

提供任務給重抽樣對象的$instantiate()方法,則實例化重抽樣對象:

可以查看:

圖片
圖片
圖片

(2) 使用重抽樣

重抽樣是創(chuàng)建了若干個數據副本,使用它們就是分別在每個數據副本上:“擬合模型+模型預測+評估性能”,我們關心的是這些評估性能的平均性能。當然若有需要,每個數據副本上的模型和性能結果都可以保存和取用。

resample()函數來實現,需要提供任務、學習器、重抽樣方法,若要保存每個數據副本上的模型和性能結果,需設置參數store_models = TRUE

返回ResampleResult對象已包含所有結果,有專門方法訪問和取用:

圖片

1.6 基準測試

機器學習中有一個常見的場景是,比較多個機器學習算法的性能。這在mlr3verse框架下,叫做基準測試。

基準測試(benchmark),用來比較不同學習器(算法)、在多個任務(數據)和/或不同重抽樣策略(多個數據副本)上的平均性能表現。

基準測試時有一個關鍵問題是,測試的公平性,即每個算法的每次測試必須在相同的重抽樣訓練集擬合模型,在相同的重抽樣測試集評估性能。這些事情benchmark()?函數會自動幫你做好。

首先,需要用benchmark_grid()創(chuàng)建一個基準測試的"設計",即你想執(zhí)行的設置表,是多個任務、學習器、重抽樣的所有唯一值組合。

舉例來看:

  • 選取一個自帶的二分類任務

  • 選取多個學習器:決策樹、KNN、隨機森林、支持向量機(因為要計算AUC值,預測類型需要改為?"prob"

  • 創(chuàng)建基準測試“設計”(每個學習器不能只憑一次結果,采用5折交叉驗證的平均結果)

  • 查看性能指標:準確率、AUC

  • 箱線圖展示AUC值的對比結果

將上述基準"設計"交給benchmark(),即執(zhí)行基準測試:

參考文獻

  1. Marc Becker et al. mlr3book. 2022.

我正在寫一本《R機器學習:基于mlr3verse》的書,其中的mlr3verse技術篇草稿,歡迎您的閱讀品鑒和轉發(fā)擴散(但禁止用于任何出版)!

想提前學習本書內容,也可以關注我的?2023年寒假“R機器學習(基于mlr3verse)”培訓班,邀請函鏈接:提取碼:xxul

https://pan.baidu.com/s/1_SaYPebqhnXoxDT8W9tjJA?pwd=xxul

另外,我在第15屆中國R會上做的報告,相當于是?mlr3verse技術手冊?的整體略講:

張敬信 第15屆R會報告-R機器學習:mlr3verse核心工作流https://www.zhihu.com/zvideo/1579758441576534016
講座 PPT?以及?R機器學習:mlr3verse技術手冊,可到我的 Gitee/Github下載:

https://gitee.com/zhjx19/rconf15

https://github.com/zhjx19/RConf15


【R機器學習:mlr3verse技術手冊】1 基礎知識的評論 (共 條)

分享到微博請遵守國家法律
蒙山县| 蒙城县| 资溪县| 东平县| 义乌市| 岑溪市| 隆德县| 汤原县| 阿克苏市| 郴州市| 海原县| 金溪县| 洱源县| 昌平区| 广德县| 房山区| 莲花县| 和林格尔县| 博客| 古浪县| 社旗县| 静宁县| 桦南县| 临洮县| 铅山县| 塘沽区| 宁海县| 泰顺县| 安吉县| 维西| 偏关县| 陆河县| 乃东县| 福海县| 屏东市| 绥德县| 会泽县| 湖口县| 张北县| 灵台县| 扶余县|