R中的SuperLearner
包返回SL.predict
下训练集中包含的所有观测值的预测值,并返回系数(coef
),这些系数对不同的基础算法进行加权以构成针对交叉验证中每个折叠的SuperLearner算法,但我无法弄清楚如何使用该包来获得样本外测试集的预测值。例如,下面是他们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)
答案 0 :(得分:2)
您可以对predict
对象使用SuperLearner
方法
在估算了所有数据的模型之后
(CV.SuperLearner
估计数据的几个子集上的模型,
不是整个数据。)
r <- SuperLearner(Y = Y, X = X, SL.library = SL.library, verbose = TRUE, method = "method.NNLS")
plot( Y2 ~ predict(r, newdata=X2)$pred )
答案 1 :(得分:1)
简单,在CV.SuperLearner过程中使用hold out示例。 在此过程中,正在使用交叉验证方法评估经过培训的SuperLearner。 希望这可以帮助 -Remko -