xgb.cv 似乎只使用训练数据进行 xfold 验证?

xgb.cv only seems to use training data for xfold validation?

我对 R 中的 ml 还很陌生,正在尝试构建一个 10 倍交叉验证的 xgboost 模型。我在这里看到了文档:

https://www.rdocumentation.org/packages/xgboost/versions/1.1.1.1/topics/xgb.cv

然而在示例中它纯粹使用训练数据并且没有地方指定测试集或测试拆分。这对任何人都有意义吗?任何使用过该软件包的人都可以帮助我理解这个交叉验证模型的测试方式吗?

谢谢

xgboost 包允许您选择是要使用内置的交叉验证方法还是指定您自己的交叉验证。

当然你可以两者都做,看看区别!

如果您向下扫描为 xgb.cv 方法链接的页面至“详细信息”,您将看到一些有关如何从已完成模型中提取信息的简要详细信息。

10 折交叉验证方法意味着 xgboost cv 算法在内部对数据进行连续拆分,比例为 10% 用于测试,90% 用于训练,以便依次使用所有数据。 这种算法的使用实际上制作并评估了十个不同的模型,并向您展示了结果。 您可以手动或通过网格搜索调整各种超参数来改进您的模型。

如果您想自己进行数据拆分而不是使用内置的交叉验证方法,请使用算法的“普通”形式:

model <- xgboost(data = ......etc) # in R

我认为 xgb.cv 公式的一个优点是它可以让您访问更多的超参数进行调整。

使用您自己的 train/test split 而不是内置 cv 版本的普通 xgboost(....) 模型在某些情况下可能更好甚至必不可少,例如您的数据具有时间敏感结构. 假设您对过去 10 年的销售数据感兴趣,最好将前 9 年的数据用于训练并使用最后一年作为您的测试集。

我所做的是从“普通”公式开始,并使用默认参数构建模型。这成为我用于比较目的的基准模型。可以构建更复杂的连续模型,并将它们的性能与该基线进行比较。