在R中,
SuperLearner
包在交叉验证的每个折叠中使用SL.predict
返回训练集中所有观测值的预测值,并返回加权不同基础算法以构成SuperLearner算法的系数(coef
)。但我无法弄清如何使用该包来获取超出样本测试集的预测值。例如,下面是他们manual中的玩具示例。我唯一修改的是在末尾添加了一个保留测试集X2和Y2。如何根据训练集中的SuperLearner模型估计这个超出样本测试集的预测值?如何保存模型结果,以便我可以基于同一模型在未来估计预测值?library(SuperLearner)
set.seed(23432)
## training set
n <- 500
p <- 50
X <- matrix(rnorm(n*p), nrow = n, ncol = p)
colnames(X) <- paste("X", 1:p, sep="")
X <- data.frame(X)
Y <- X[, 1] + sqrt(abs(X[, 2] * X[, 3])) + X[, 2] - X[, 3] + rnorm(n)
# build Library and run Super Learner
SL.library <- c("SL.glm", "SL.randomForest", "SL.gam", "SL.polymars", "SL.mean")
## Not run:
test <- CV.SuperLearner(Y = Y, X = X, V = 10, SL.library = SL.library,
verbose = TRUE, method = "method.NNLS")
test
summary(test)
# Look at the coefficients across folds
coef(test)
## End(Not run)
###Added Test Set
X2 <- matrix(rnorm(n*p), nrow = n, ncol = p)
colnames(X2) <- paste("X", 1:p, sep="")
X2 <- data.frame(X2)
Y2 <- X2[, 1] + sqrt(abs(X2[, 2] * X2[, 3])) + X2[, 2] - X2[, 3] + rnorm(n)
CV.SuperLearner
将训练集分成多个折,则无法实现该功能。 - MichaelSuperLearner
函数的默认值是V = 10,在cvControl
参数的默认值中指定。 - Michael