原英文地址:https://mlr.mlr-org.com/articles/tutorial/usecase_regression.html
目錄
- 定義任務(wù)
- 調(diào)整
- 基準(zhǔn)測(cè)試
- 性能
我們使用著名的mlbench::BostonHousing()
數(shù)據(jù)集進(jìn)行回歸。
首先缘滥,讓我們看一下數(shù)據(jù):
data(BostonHousing, package = "mlbench")
summary(BostonHousing)
## crim zn indus chas
## Min. : 0.00632 Min. : 0.00 Min. : 0.46 0:471
## 1st Qu.: 0.08204 1st Qu.: 0.00 1st Qu.: 5.19 1: 35
## Median : 0.25651 Median : 0.00 Median : 9.69
## Mean : 3.61352 Mean : 11.36 Mean :11.14
## 3rd Qu.: 3.67708 3rd Qu.: 12.50 3rd Qu.:18.10
## Max. :88.97620 Max. :100.00 Max. :27.74
## nox rm age dis
## Min. :0.3850 Min. :3.561 Min. : 2.90 Min. : 1.130
## 1st Qu.:0.4490 1st Qu.:5.886 1st Qu.: 45.02 1st Qu.: 2.100
## Median :0.5380 Median :6.208 Median : 77.50 Median : 3.207
## Mean :0.5547 Mean :6.285 Mean : 68.57 Mean : 3.795
## 3rd Qu.:0.6240 3rd Qu.:6.623 3rd Qu.: 94.08 3rd Qu.: 5.188
## Max. :0.8710 Max. :8.780 Max. :100.00 Max. :12.127
## rad tax ptratio b
## Min. : 1.000 Min. :187.0 Min. :12.60 Min. : 0.32
## 1st Qu.: 4.000 1st Qu.:279.0 1st Qu.:17.40 1st Qu.:375.38
## Median : 5.000 Median :330.0 Median :19.05 Median :391.44
## Mean : 9.549 Mean :408.2 Mean :18.46 Mean :356.67
## 3rd Qu.:24.000 3rd Qu.:666.0 3rd Qu.:20.20 3rd Qu.:396.23
## Max. :24.000 Max. :711.0 Max. :22.00 Max. :396.90
## lstat medv
## Min. : 1.73 Min. : 5.00
## 1st Qu.: 6.95 1st Qu.:17.02
## Median :11.36 Median :21.20
## Mean :12.65 Mean :22.53
## 3rd Qu.:16.95 3rd Qu.:25.00
## Max. :37.97 Max. :50.00
這個(gè)數(shù)據(jù)集涉及波士頓郊區(qū)的房?jī)r(jià)。用于回歸訓(xùn)練的目標(biāo)向量是medv
——是以1000美元為單位的房?jī)r(jià)中位數(shù)值于宙。關(guān)于其他13個(gè)變量的描述可以通過(guò)`mlbench::BostonHousing()獲取摩梧。
定義一個(gè)任務(wù)
現(xiàn)在,讓我們定義一個(gè)回歸任務(wù)卖漫。
# Make a task
regr.task = makeRegrTask(data = BostonHousing, target = "medv")
regr.task
## Supervised task: BostonHousing
## Type: regr
## Target: medv
## Observations: 506
## Features:
## numerics factors ordered functionals
## 12 1 0 0
## Missings: FALSE
## Has weights: FALSE
## Has blocking: FALSE
## Has coordinates: FALSE
為了得到一個(gè)特征類(lèi)型的概覽费尽,我們打印了regr.task
。結(jié)果顯示數(shù)據(jù)集中有12個(gè)數(shù)值變量和1個(gè)因子變量羊始。
調(diào)整
輸入listLearners("regr")
我們可以看到可以用于回歸任務(wù)的學(xué)習(xí)器有哪些旱幼。
存在如此多的學(xué)習(xí)器,因此我們難以為該任務(wù)選擇一個(gè)最優(yōu)的突委,因此我們會(huì)選擇其中的一些柏卤,并且比較它們的結(jié)果。這個(gè)分析使用經(jīng)典的線性回歸模型(regr.lm
)匀油、帶徑向基核(regr.ksvm
)的SVM(kernlab::ksvm()
)和來(lái)自ranger包(ranger::ranger()
)的隨機(jī)森林缘缚。
為了快速瀏覽所有學(xué)習(xí)器特異的可調(diào)整參數(shù),你可以使用getLearnerParamSet()
或者他的別名ParamHelpers::getParamSet()
敌蚜,它會(huì)列出學(xué)習(xí)器的超參數(shù)和其他屬性桥滨。
在設(shè)定一個(gè)基準(zhǔn)實(shí)驗(yàn)之前,我們可以指定將要調(diào)整的超參數(shù)弛车。mlr
包提供的強(qiáng)大的調(diào)整算法齐媒,比如iterated F-racing (irace::irace()
), CMA Evolution Strategy (cmaes::cma_es()
), model-based / Bayesian optimization (mlrMBO::mbo()
) and generalized simulated annealing (GenSA::GenSA()
)。
對(duì)每個(gè)模型都有一個(gè)超參數(shù)將會(huì)調(diào)整纷跛,即SVM模型中的參數(shù)和隨機(jī)森林中樹(shù)的數(shù)目喻括。我們先指定這些參數(shù)的搜索空間。通過(guò)
makeTuneControlCMAES()
忽舟,我們?cè)O(shè)定調(diào)整方法為CMA Evolution Strategy (cmaes::cma_es()
)双妨。隨后我們使用重采樣策略中的5折交叉驗(yàn)證淮阐,并以均方根誤差(rmse
)作為優(yōu)化標(biāo)準(zhǔn)。
set.seed(1234)
# Define a search space for each learner'S parameter
ps_ksvm = makeParamSet(
makeNumericParam("sigma", lower = -12, upper = 12, trafo = function(x) 2^x)
)
ps_rf = makeParamSet(
makeIntegerParam("num.trees", lower = 1L, upper = 200L)
)
# Choose a resampling strategy
rdesc = makeResampleDesc("CV", iters = 5L)
# Choose a performance measure
meas = rmse
# Choose a tuning method
ctrl = makeTuneControlCMAES(budget = 100L)
# Make tuning wrappers
tuned.ksvm = makeTuneWrapper(learner = "regr.ksvm", resampling = rdesc, measures = meas,
par.set = ps_ksvm, control = ctrl, show.info = FALSE)
tuned.rf = makeTuneWrapper(learner = "regr.ranger", resampling = rdesc, measures = meas,
par.set = ps_rf, control = ctrl, show.info = FALSE)
基準(zhǔn)實(shí)驗(yàn)
為了指導(dǎo)基準(zhǔn)實(shí)驗(yàn)刁品,必須選擇一個(gè)評(píng)估方法泣特。我們使用前面設(shè)定的重采樣策略和性能度量并將其包裝為參數(shù)傳入benchmark()
函數(shù)。
# Four learners to be compared
lrns = list(makeLearner("regr.lm"), tuned.ksvm, tuned.rf)
# Conduct the benchmark experiment
bmr = benchmark(learners = lrns, tasks = regr.task, resamplings = rdesc, measures = rmse,
show.info = FALSE)
性能
現(xiàn)在我們來(lái)評(píng)估結(jié)果:
getBMRAggrPerformances(bmr)
## $BostonHousing
## $BostonHousing$regr.lm
## rmse.test.rmse
## 4.901218
##
## $BostonHousing$regr.ksvm.tuned
## rmse.test.rmse
## 3.643597
##
## $BostonHousing$regr.ranger.tuned
## rmse.test.rmse
## 3.425189
箱線圖顯示了RF在這個(gè)任務(wù)中優(yōu)于其他學(xué)習(xí)器挑随。盡管之前進(jìn)行了調(diào)整状您,但線性和套索回歸的基準(zhǔn)實(shí)驗(yàn)產(chǎn)生了類(lèi)似但不良的結(jié)果。
plotBMRBoxplots(bmr)
文章有些細(xì)節(jié)部分我現(xiàn)在也不是很理解兜挨,感興趣的朋友不妨讀讀原文膏孟。