首先
欢迎来到SO。
很难理解你到底在想什么,你的问题很广泛。
如果您需要统计信息,我建议您在
Cross Validated.
问题(&A);面向对统计学、机器学习、数据分析、数据挖掘和数据可视化感兴趣的人。
我发现的问题是,在
分层数据集我得到了显著不同的结果(这可能是
部分原因是相对较小的数据样本M=1000)。
我假设您指的是模型的不同迭代。这取决于您的不同团队有多大。E、 g.如果您试图将包含1000个样本的数据集分成10个样本的组,那么您的模型很可能不稳定,因此在每次迭代中会给出不同的结果。这也可能是因为您的模型依赖于某种随机性
更小
您的数据(以及更多组)将
更大的
变异
See here
或
here
有关交叉验证、稳定性和引导聚合的更多信息。
-
生成分层数据样本
如何生成它:
dplyr
包在根据不同变量对数据进行分组方面非常出色。您可能还想使用
split
中找到的函数
base
包裹
See here for more information
. 您还可以使用
caret
包裹
found here
.
如何知道如何划分:这在很大程度上取决于你想回答的问题,很可能你想平衡一些变量,例如性别和年龄,以便创建疾病预测模型。
See here for more info
.
如果有重复的观察结果,并且你想用不同的重复组合和它的唯一测量值创建唯一的子集,你必须使用其他方法。如果复制有一个公共标识符
sample_names
. 您可以这样做来选择所有样本,但使用不同的复制组合:
tg <- data.frame(sample_names = rep(1:5,each=2))
set.seed(10)
tg$values<-rnorm(10)
partition <- lapply(1:100, function(z) {
set.seed(z)
sapply(unique(tg$sample_names), function(x) {
which(x == tg$sample_names)[sample(1:2, 1)]
})
})
#the first partition of your data to train a model.
tg[partition[[1]],]
-
创建机器学习模型
如果要使用
插入符号
,你可以去
caret webpage
. 并查看所有可用的型号。根据您的研究问题和/或数据,您希望使用不同类型的模型。因此,我建议您参加一些在线机器学习课程,例如
Stanford University course given by Andrew Ng
(我自己拿过),以便更熟悉不同的主要算法。如果您熟悉算法,只需搜索可用的模型即可。
-
重复1000次;取平均模型输出
您可以使用不同的种子将模型重复1000次(请参见
set.seed
)以及不同的培训方法,例如交叉验证或引导聚合。中有许多不同的训练参数
插入符号
包裹:
功能
trainControl
生成进一步控制的参数
如何创建模型,以及可能的值:
方法:重采样方法:“boot”、“cv”、“LOOCV”、“LGOCV”,
“repeatedcv”、“timeslice”、“none”和“oob”
有关方法的更多信息,
see here
.