2016-01-21 55 views
4

mlr軟件包非常棒,創建ModelMultiplexer的想法也有所幫助。但ModelMultiplexer「選擇」1個單一的模型使用的模型。mlr - Ensemble Models

是否有任何支持或計劃支持創建單個模型的Bagged或Boosted合奏?

bls = list(
    makeLearner("classif.ksvm"), 
    makeLearner("classif.randomForest") 
) 
lrn = makeModelMultiplexer(bls) 
ps = makeModelMultiplexerParamSet(lrn, 
    makeNumericParam("sigma", lower = -10, upper = 10, trafo = function(x) 2^x), 
    makeIntegerParam("ntree", lower = 1L, upper = 500L)) 
> print(res) 
Tune result: 
**Op. pars: selected.learner=classif.randomForest; classif.randomForest.ntree=197 
mmce.test.mean=0.0333** 

回答

5

你有幾個選項在mlr。在the tutorial這個

lrn = makeLearner("classif.PART") 
bag.lrn = makeBaggingWrapper(lrn, bw.iters = 50, bw.replace = TRUE, bw.size = 0.8, bw.feats = 3/4) 

更多細節:如果你有一個單一的模式,你可以使用BaggingWrapper

幾年學習者,你可以使用stacking

base.learners = list(
    makeLearner("classif.ksvm"), 
    makeLearner("classif.randomForest") 
) 
lrn = makeStackedLearner(base.learners, super.learner = NULL, predict.type = NULL, 
    method = "stack.nocv", use.feat = FALSE, resampling = NULL, 
    parset = list()) 

可以使用不同的方法,包括安裝在它們之上的另一個學習相結合的基礎學習者的預測。你也可以將這個與單獨學習者的裝袋結合起來。

mlr支持的許多學習者都支持提升,請參閱list of all learners