context("Compboost parallel")
test_that("If parallel execution speeds up the algorithm", {
if (FALSE) {
if ((parallel::detectCores() >= 2) && (Sys.info()["sysname"] != "Darwin")) {
feats = 40
n = 10000
mstop = 500
mydata = as.data.frame(do.call(cbind, lapply(seq_len(feats + 1), function(x) { rnorm(n) })))
names(mydata) = c("target", paste0("feat", seq_len(feats)))
optimizer = expect_silent(OptimizerCoordinateDescent$new())
time1 = proc.time()
cboost1 = expect_silent(Compboost$new(data = mydata, target = "target", optimizer = optimizer,
loss = LossQuadratic$new(), learning_rate = 0.01))
nuisance = lapply(names(mydata)[-1], function(feat) cboost1$addBaselearner(feat, "spline", BaselearnerPSpline))
cboost1$addLogger(logger = LoggerTime, use_as_stopper = FALSE, logger_id = "time",
max_time = 0, time_unit = "seconds")
expect_output(cboost1$train(mstop))
time1 = (proc.time() - time1)[3]
optimizer = expect_silent(OptimizerCoordinateDescent$new(2))
time2 = proc.time()
cboost2 = expect_silent(Compboost$new(data = mydata, target = "target", optimizer = optimizer,
loss = LossQuadratic$new(), learning_rate = 0.01))
nuisance = lapply(names(mydata)[-1], function (feat) cboost2$addBaselearner(feat, "spline", BaselearnerPSpline))
cboost2$addLogger(logger = LoggerTime, use_as_stopper = FALSE, logger_id = "time",
max_time = 0, time_unit = "seconds")
expect_output(cboost2$train(mstop))
cboost2$train(mstop)
time2 = (proc.time() - time2)[3]
expect_true(time1 > time2)
expect_true(tail(cboost1$getLoggerData()$time, n = 1) > tail(cboost2$getLoggerData()$time, n = 1))
expect_equal(cboost1$getSelectedBaselearner(), cboost2$getSelectedBaselearner())
expect_equal(cboost1$predict(), cboost2$predict())
expect_equal(cboost1$getCoef(), cboost2$getCoef())
}
}
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.