如何在R中对数据集进行分层抽样、使用Caret进行统计分析并重复操作?

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

非常感谢提前提供的任何帮助,或可能有用的包建议。是否可以在caret中进行分层抽样或模拟?


回答:

首先,欢迎来到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)]  })})#您数据的第一个分区,用于训练模型。tg[partition[[1]],]
  1. 创建机器学习模型

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

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

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

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

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

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

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注