繁体   English   中英

如何对数据集进行分层抽样,用Caret进行统计分析并在r中重复?

[英]How to stratify sample a data set, conduct statistical analysis with Caret and repeat in r?

我有一个数据集,我想对样本进行分层,使用caret包创建统计模型,然后生成预测。

我发现的问题是,在分层数据集的不同迭代中,我得到了显着不同的结果(这可能部分是由于数据样本M=1000相对较小)。

我希望能够做的是:

  1. 生成分层数据样本
  2. 创建机器学习模型
  3. 重复1000次并取平均模型输出

我希望通过重复分层数据集变化的步骤,我能够避免由于较小的数据样本而产生的预测的细微变化。

例如,它在 r 中可能看起来像这样;

Original.Dataset = data.frame(A)

Stratified.Dataset = stratified(Original.Dataset, group = x)

Model = train(Stratified.Dataset.....other model inputs)

Repeat process with new stratified data set based on the original data and average out.

在此先感谢您的任何帮助或可能有用的打包建议。 是否可以在插入符号中对样本进行分层或在插入符号中模拟?

首先,欢迎来到SO。

很难理解您到底在想什么,您的问题非常广泛。

如果您需要统计数据,我建议您在Cross Validated 中提出更明确定义的问题 对统计、机器学习、数据分析、数据挖掘和数据可视化感兴趣的人的问答。

我发现的问题是,在分层数据集的不同迭代中,我得到了显着不同的结果(这可能部分是由于数据样本 M=1000 相对较小)。

我假设您指的是模型的不同迭代。 这取决于您的不同群体有多大。 例如,如果您尝试将包含 1000 个样本的数据集划分为 10 个样本的组,则您的模型很可能不稳定,因此在每次迭代中都会给出不同的结果。 这也可能是因为您的模型取决于一些随机性,并且您的数据越小(组越多),您的变化就会越大 有关交叉验证、稳定性和引导程序聚合的更多信息, 请参见此处此处

  1. 生成分层数据样本

如何生成: dplyr包在根据不同变量对数据进行分组方面非常出色。 您可能还想使用base包中的split函数。 请参阅此处了解更多信息 您还可以使用在caret包中找到的内置方法,可在此处找到

如何知道如何分割它:这在很大程度上取决于您想回答的问题,很可能您想平衡一些变量,例如用于创建预测疾病模型的性别和年龄。 请参阅此处了解更多信息

例如,如果有重复的观测值,并且您想创建具有不同重复组合的独特子集及其独特的测量,您将不得不使用其他方法。 如果复制品有一个共同的标识符,这里是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]],]
  1. 创建机器学习模型

如果你想使用caret ,你可以去插入符号网页 并查看所有可用型号。 根据您的研究问题和/或数据,您希望使用不同类型的模型。 因此,我会建议你参加一些在线机器学习课程,例如Andrew Ng斯坦福大学课程(我自己参加过),以更熟悉不同的主要算法。 如果你熟悉算法,只需搜索可用的模型。

  1. 重复 1000 次并取平均模型输出

您可以使用不同的种子(参见set.seed )和不同的训练方法(例如交叉验证或引导程序聚合)重复模型 1000 次。 caret包中有很多不同的训练参数:

函数trainControl生成参数,进一步控制模型的创建方式,可能的值:

方法:重采样方法:“boot”、“cv”、“LOOCV”、“LGOCV”、“repeatedcv”、“timeslice”、“none”和“oob”

有关这些方法的更多信息, 请参见此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM