用于在看不见的数据上测试模型的包



我想知道有哪些软件包可以拆分我的数据。

我更愿意在 2/3 的数据上优化我的模型。 然后在最后 1/3 上运行它,看看它的表现如何。

这也听起来像是一个愚蠢的问题......但是为了在最后 1/3/rd 的数据上转发运行优化的模型,有没有办法做到这一点?否则我又要回测了吧?想法是在最后 1/3 的数据上进行前向测试,就像看到真实的实时数据一样......如果我有意义。

有没有可以做到这一点的 R 包?

**理解答案。

在这种情况下,这似乎是一个相对简单的任务,只需以下步骤:

  1. 将模型优化到数据的前 2/3 点。
  2. 在数据的最后 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包有两个可能感兴趣的功能,CVartsCV,尽管它们不会以您需要的方式拆分数据,但它们将滚动训练您的数据,这与某些时间序列模型更相关。

祝你好运!

有一些软件包可以帮助解决这个问题。caTools包具有一个名为sample.split的函数,专门用于将数据集拆分为测试和训练集。

请参见:示例拆分文档

将数据集中的一列作为第一个参数(通常是响应变量(传入,它会在该变量中的值之间按比例拆分数据集。 如果你有一个响应变量,可能只在 5% 的时间内出现一些值,这很有帮助,你希望你的训练和测试集在每个值中都有类似的表示形式。 它可以像这样使用:

split = sample.split(wikiWords$Vandal, SplitRatio = 2/3)
wikitrain = subset(wikiWords, split == TRUE)
wikitest = subset(wikiWords, split == FALSE)

最新更新