有人可以提供有关此的工作流程吗?例如,假设我正在做二进制分类,
对于算法的每次迭代:
- 随机采样
k*N行,其中k是bag.fraction,N是nrow(dataset)。 - 使用这个训练样本构建一个分类器,假设我们在这里使用分类树。
- 预测终端节点类标签。
这就是在没有简历的情况下完成提升的方式。如果我想做一个 3-fold CV,我到底应该在哪里应用它?在第 1 步和第 2 步之间还是在第 3 步之后?
有人可以提供有关此的工作流程吗?例如,假设我正在做二进制分类,
对于算法的每次迭代:
k*N行,其中k是bag.fraction,N是nrow(dataset)。这就是在没有简历的情况下完成提升的方式。如果我想做一个 3-fold CV,我到底应该在哪里应用它?在第 1 步和第 2 步之间还是在第 3 步之后?
如果要在预测新观测值时估计模型的误差及其相应的可变性,请在第 3 步之后。在拟合所有树之后。这里正在验证的模型是弱学习器的整体。但自然你也可以使用 CV 调整超参数。例如,提升树的最佳数量。在“dismo”包中,函数 gbm.step 正是这样做的。使用示例:
brtTuning<- gbm.step(data=yourData,
gbm.x = 1:18,
gbm.y = 19,
family = "gaussian",
tree.complexity = 5,
learning.rate = 0.005,
bag.fraction = 0.5)
如果您想调整然后验证我相信您需要进行嵌套交叉验证。
交叉验证通过随机(或通过其他方式)选择行大小相等的近似平衡的折叠,训练分类器折叠,对剩余折叠进行测试,然后计算预测损失函数。重复此操作,以便将每个折叠用作测试集。如果您为折叠随机抽样行,则可以根据需要重新抽样。在 R 中有许多包可以做到这一点,而且很容易自己编写代码。在 boosting 中使用某种形式的交叉验证有点复杂(我对 boosting 不是很熟悉)。不过,这个问题似乎提供了一些见解。