首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >样本外测试集的SuperLearner预测

样本外测试集的SuperLearner预测
EN

Stack Overflow用户
提问于 2013-09-08 04:50:01
回答 2查看 1.9K关注 0票数 3

R中的SuperLearner包返回SL.predict下训练集中包含的所有观测的预测值,并返回系数(coef),该系数对不同的底层算法进行加权,以构成交叉验证中每个折叠的SuperLearner算法,但我不知道如何使用该包来获得样本外测试集的预测值。例如,下面是他们的手册中的玩具示例。我所做的唯一改变就是在最后添加一个延迟测试集X2和Y2。如何根据训练集中的SuperLearner模型来估计这个样本外测试集的预测值?如何保存模型结果,以便根据同一模型估算未来的预测值?

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-08 09:54:31

在对所有数据进行模型估计之后,您可以对predict对象使用SuperLearner方法(CV.SuperLearner估计模型在数据的几个子集上,而不是整个数据)。

代码语言:javascript
复制
r <- SuperLearner(Y = Y, X = X, SL.library = SL.library, verbose = TRUE, method = "method.NNLS")
plot( Y2 ~ predict(r, newdata=X2)$pred )
票数 3
EN

Stack Overflow用户

发布于 2013-09-25 13:16:21

简单地说,通过在CV.SuperLearner过程中使用hold示例。在此过程中,使用交叉验证方法对经过训练的SuperLearner进行评估。希望这能帮上忙-雷姆科-

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18680529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档