測試後的感想

之前R中的機器學習領域的包一直是各有各的小山頭,且新山頭不斷,於是我們需要追包,追一個個新出的包和包的更新,這時候最大的問題是你不知道還有其它演算法的存在,且每個包有自己的包處理方式…

這就好比蓋一個房子時,我們需要自己去找泥瓦匠、小工和管道工等,這時候面臨三個問題:

  • 蓋房子都需要哪些工種?
  • 去哪裡找這些工種對應的能手?
  • 各工種之間如何配合幹活?

現在mlr包提供一個通用平臺,就好比一個包工頭,蓋房子時,只要找到這個包工頭,說要蓋個房子,包工頭會考慮下面的事情:

  • 蓋一個什麼樣的房子,根據房子類型,建立一個task;
  • 蓋這個房子需要什麼技能,確定一個方法learner;
  • 需要準備什麼材料,如何切割處理,定義一個處理策略resampling strategy;
  • 協調大家搭夥幹活Do the resampling;
  • 評估下大家幹活質量performance and benchmark;

在這個基礎上,還可以根據過往幹活train的效果預測將來的狀況predict,內部流程優化引入並行處理parallelization,以示公平展示工資待遇與幹活質量之間的關聯規則visualization,及其它黑技能。

例:一個小回歸

分析mlbench包BostonHousing數據中medv與其它變數之間的關係。

library(mlr, quietly = TRUE)

## 數據集
data(BostonHousing, package = "mlbench")

## 創建一個回歸任務
regr.task = makeRegrTask(id = "bh", data = BostonHousing, target = "medv")
# regr.task

## 定義回歸方法
regr.lrn = makeLearner("regr.gbm", par.vals = list(n.trees = 500, interaction.depth = 3))
# regr.lrn

## 定義樣本策略
rdesc = makeResampleDesc("CV", iters = 3)
# rdesc

## 計算
r = resample(learner = regr.lrn, task = regr.task, resampling = rdesc, models = TRUE,
show.info = FALSE)

## 性能一覽
r
#> Resample Result
#> Task: bh
#> Learner: regr.gbm
#> mse.aggr: 46.84
#> mse.mean: 46.84
#> mse.sd: 6.94
#> Runtime: 0.604034

上面只是其基本流程,這個中間還可以穿插很多其它的部分,比如變數特徵選擇、多模型比較、性能展示等.

All depends on your thinking and imagination.

推薦閱讀:

相關文章