如何在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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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