我想知道有哪些软件包可以拆分我的数据。
我更愿意在 2/3 的数据上优化我的模型。 然后在最后 1/3 上运行它,看看它的表现如何。
这也听起来像是一个愚蠢的问题......但是为了在最后 1/3/rd 的数据上转发运行优化的模型,有没有办法做到这一点?否则我又要回测了吧?想法是在最后 1/3 的数据上进行前向测试,就像看到真实的实时数据一样......如果我有意义。
有没有可以做到这一点的 R 包?
**理解答案。
在这种情况下,这似乎是一个相对简单的任务,只需以下步骤:
- 将模型优化到数据的前 2/3 点。
- 在数据的最后 1/3 上测试这些参数。
这与在整个样本量上测试和优化模型形成对比。通过这种方式,模型可以看到看不见的数据。
有包,但根据您的要求,您可以使用基 R 的提取运算符执行此操作。这听起来像您使用时间序列或某种有序观察。
获得数据后,创建训练索引。 接下来,按训练索引对数据进行子集化以创建训练集。 然后,通过再次对数据进行子集化但减去训练索引来创建测试集。
data <- data.frame(x=runif(10000), y=runif(10000))
train_index <- 1:(NROW(data)*0.666)
train_set <- data[train_index, ]
test_set <- data[-train_index, ]
此外,caret
包非常受欢迎,并且具有train
函数,该函数具有许多附加参数,用于实现不同复杂程度的采样技术,具体取决于您使用的模型和数据。如果您还没有使用它,请检查一下。
如果您正在使用时间序列,则forecast
包有两个可能感兴趣的功能,CVar
和tsCV
,尽管它们不会以您需要的方式拆分数据,但它们将滚动训练您的数据,这与某些时间序列模型更相关。
祝你好运!
有一些软件包可以帮助解决这个问题。caTools
包具有一个名为sample.split
的函数,专门用于将数据集拆分为测试和训练集。
请参见:示例拆分文档
将数据集中的一列作为第一个参数(通常是响应变量(传入,它会在该变量中的值之间按比例拆分数据集。 如果你有一个响应变量,可能只在 5% 的时间内出现一些值,这很有帮助,你希望你的训练和测试集在每个值中都有类似的表示形式。 它可以像这样使用:
split = sample.split(wikiWords$Vandal, SplitRatio = 2/3)
wikitrain = subset(wikiWords, split == TRUE)
wikitest = subset(wikiWords, split == FALSE)