largeRCRF/tests/testthat/test_deterministic_forests.R

86 lines
2.8 KiB
R
Raw Permalink Normal View History

context("Test deterministic forests")
test_that("Two forests produce identical results", {
x1 <- rnorm(100)
x2 <- rnorm(100)
y <- 1 + x1 + x2 + rnorm(100)
data <- data.frame(x1, x2, y)
forest1 <- train(y ~ x1 + x2, data,
ntree=100, numberOfSplits = 5, mtry = 1, nodeSize = 5,
randomSeed=5, displayProgress=FALSE)
forest2 <- train(y ~ x1 + x2, data,
ntree=100, numberOfSplits = 5, mtry = 1, nodeSize = 5,
randomSeed=5, displayProgress=FALSE)
newData <- data.frame(x1=rnorm(10), x2=rnorm(10))
predictions1 <- predict(forest1, newData)
predictions2 <- predict(forest2, newData)
expect_equal(round(predictions1, digits=6), round(predictions2, digits=6))
})
test_that("Finishing an interrupted forest produces the same results as having finished it", {
expect_false(file.exists("trees_deterministic_forests")) # Folder shouldn't exist yet
x1 <- rnorm(1000)
x2 <- rnorm(1000)
y <- 1 + x1 + x2 + rnorm(1000)
data <- data.frame(x1, x2, y)
forest1 <- train(y ~ x1 + x2, data,
ntree=100, numberOfSplits = 5, mtry = 1, nodeSize = 5,
randomSeed=6, displayProgress=FALSE)
forest2.incomplete <- train(y ~ x1 + x2, data,
ntree=50, numberOfSplits = 5, mtry = 1, nodeSize = 5,
randomSeed=6, savePath="trees_deterministic_forests",
displayProgress=FALSE)
forest2.complete <- train(y ~ x1 + x2, data,
ntree=100, numberOfSplits = 5, mtry = 1, nodeSize = 5,
randomSeed=6, savePath="trees_deterministic_forests",
savePath.overwrite="merge",
displayProgress=FALSE)
newData <- data.frame(x1=rnorm(10), x2=rnorm(10))
predictions1 <- predict(forest1, newData)
predictions2 <- predict(forest2.complete, newData)
expect_equal(round(predictions1, digits=6), round(predictions2, digits=6))
unlink("trees_deterministic_forests", recursive=TRUE)
})
test_that("Adding trees is equivalent to training all at once", {
x1 <- rnorm(100)
x2 <- rnorm(100)
y <- 1 + x1 + x2 + rnorm(100)
data <- data.frame(x1, x2, y)
forest1 <- train(y ~ x1 + x2, data,
ntree=100, numberOfSplits = 5, mtry = 1, nodeSize = 5,
randomSeed=5, displayProgress=FALSE)
forest2 <- train(y ~ x1 + x2, data,
ntree=50, numberOfSplits = 5, mtry = 1, nodeSize = 5,
randomSeed=5, displayProgress=FALSE)
forest2 <- addTrees(forest2, 50, displayProgress=FALSE)
newData <- data.frame(x1=rnorm(10), x2=rnorm(10))
predictions1 <- predict(forest1, newData)
predictions2 <- predict(forest2, newData)
expect_equal(round(predictions1, digits=6), round(predictions2, digits=6))
})