我有一个包含 358.367 个数据的矩阵。每行都是来自人类基因组的 DNA 序列。我想在 R 中建立一个分类模型,使用 XGBoost 算法和 83 个特征(二核苷酸、三核苷酸等)。
我应该如何拆分训练集和测试集的数据?
例如,70% 用于训练集,30% 用于测试集?训练集 30%,测试集 70%?
我有一个包含 358.367 个数据的矩阵。每行都是来自人类基因组的 DNA 序列。我想在 R 中建立一个分类模型,使用 XGBoost 算法和 83 个特征(二核苷酸、三核苷酸等)。
我应该如何拆分训练集和测试集的数据?
例如,70% 用于训练集,30% 用于测试集?训练集 30%,测试集 70%?
这里没有“黄金法则”。您的数据集非常方便——既不太大也不太小。听起来是一个非常令人兴奋的项目!
以下是我在类似环境中经常进行的操作。
按响应分层,或者,如果行不是独立的,而是由一些分组变量(例如家庭等)聚集在一起,则进行分组抽样。重要规则:避免跨裂口的任何泄漏。
留出 10%-15% 的行用于测试。在分析完成之前不要触摸它们。就像你永远不会使用这个测试集一样。
选择损失函数和相关的性能度量。
无需调整即可拟合随机森林,并使用其 OOB 误差作为基准。
通过网格搜索迭代的 5 折交叉验证选择 XGB 的参数,首先从非常宽的参数范围开始,然后使这些范围越来越小。通过提早停止自动优化提升轮数。
选择模型并展示交叉验证性能。
最后,显示测试性能。