代码之家  ›  专栏  ›  技术社区  ›  JFG123

如何对样本数据集进行分层,使用插入符号进行统计分析,并在r中重复?

  •  2
  • JFG123  · 技术社区  · 8 年前

    我有一个数据集,我想对样本进行分层,使用 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.
    

    提前感谢您提供的任何可能有用的帮助或套餐建议。是否可以在插入符号中分层样本或在插入符号中模拟样本?

    1 回复  |  直到 6 年前
        1
  •  1
  •   nadizan    8 年前

    首先 欢迎来到SO。

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

    如果您需要统计信息,我建议您在 Cross Validated. 问题(&A);面向对统计学、机器学习、数据分析、数据挖掘和数据可视化感兴趣的人。

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

    我假设您指的是模型的不同迭代。这取决于您的不同团队有多大。E、 g.如果您试图将包含1000个样本的数据集分成10个样本的组,那么您的模型很可能不稳定,因此在每次迭代中会给出不同的结果。这也可能是因为您的模型依赖于某种随机性 更小 您的数据(以及更多组)将 更大的 变异 See here here 有关交叉验证、稳定性和引导聚合的更多信息。

    1. 生成分层数据样本

    如何生成它: 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]],]
    
    1. 创建机器学习模型

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

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

    您可以使用不同的种子将模型重复1000次(请参见 set.seed )以及不同的培训方法,例如交叉验证或引导聚合。中有许多不同的训练参数 插入符号 包裹:

    功能 trainControl 生成进一步控制的参数 如何创建模型,以及可能的值:

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

    有关方法的更多信息, see here .

    推荐文章