我应该为我的训练集和测试集分配多少数据?(在 R 中)

数据挖掘 机器学习 分类 r 数据集 训练
2022-02-25 10:26:21

我有一个包含 358.367 个数据的矩阵。每行都是来自人类基因组的 DNA 序列。我想在 R 中建立一个分类模型,使用 XGBoost 算法和 83 个特征(二核苷酸、三核苷酸等)。

我应该如何拆分训练集和测试集的数据?

例如,70% 用于训练集,30% 用于测试集?训练集 30%,测试集 70%?

1个回答

这里没有“黄金法则”。您的数据集非常方便——既不太大也不太小。听起来是一个非常令人兴奋的项目!

以下是我在类似环境中经常进行的操作。

  1. 按响应分层,或者,如果行不是独立的,而是由一些分组变量(例如家庭等)聚集在一起,则进行分组抽样。重要规则:避免跨裂口的任何泄漏。

  2. 留出 10%-15% 的行用于测试。在分析完成之前不要触摸它们。就像你永远不会使用这个测试集一样。

  3. 选择损失函数和相关的性能度量。

  4. 无需调整即可拟合随机森林,并使用其 OOB 误差作为基准。

  5. 通过网格搜索迭代的 5 折交叉验证选择 XGB 的参数,首先从非常宽的参数范围开始,然后使这些范围越来越小。通过提早停止自动优化提升轮数。

  6. 选择模型并展示交叉验证性能。

  7. 最后,显示测试性能。