是否有必要做ķk- 随机森林中决策树的折叠交叉验证?

机器算法验证 随机森林
2022-04-05 21:01:14

考虑以下数据集train

    z   a   b   c
    0   1   40  185
    0   1   25  128
    0   0   32  100
    0   0   29  100
    1   1   30  107
    0   0   30  133
    1   1   38  132
    1   1   37  127
    1   0   30  184
    1   0   40  199
    1   1   26  185
    0   1   21  185
    0   0   21  134
    0   0   20  137
    1   1   22  135
    0   0   23  189
    1   0   32  109
    1   0   31  152
    1   0   38  130
    1   1   37  191
    0   1   39  168
    1   0   28  183
    0   1   26  171
    1   1   23  164
    0   1   32  111
    0   0   34  131
    1   0   30  121
    1   0   27  195
    1   1   29  117
    1   0   26  187
    1   0   34  183
    0   0   28  189
    0   1   34  150
    0   1   34  176
    0   1   24  140
    1   0   37  181
    0   1   36  109
    1   0   39  198
    0   0   32  164

其中z是具有预测变量a,b,c的二元变量。假设有一些其他测试集具有与训练数据集相同的变量,我们想要预测z对于决策树,使用完整的训练数据集来构建树会更好吗?折交叉验证的目的是什么?4

在随机森林中,是否折交叉验证?我以为你可以使用OOB错误?k

3个回答

我可以推荐这篇讨论良好简历实践的文章。

  • (A) 当简单地运行一个 RF 模型时:是的 OOB-CV 是对您未来预测性能的精细估计,给定 iid 采样。对于许多实际情况,您没有时间也不需要更多。默认的 RF 模型就足够了,如果有的话,您稍后将首先开始摆弄超参数。我会花更多时间想知道哪个预测性能指标(AUC、准确性、召回率等)最能回答我的问题。稍微摆弄超参数(mtry,samplesize)不会让您的 OOB-CV 过于乐观。

  • (B1) 跨分类器(SVM、逻辑、RF 等)进行比较时:您需要使用相同的 CV 机制,因此您不能使用仅适用于 RF 的 OOB-CV。使用例如 20 次重复、10 倍的 CV,其中所有模型都在相同的折叠中进行测试(/通过相同的分区)。

  • (B2) 执行网格搜索和变量选择时要评估模型的每个变体的预测性能,您可能会使用 OOB-CV 或其他一些 CV。为了不偏不倚地估计整体性能,您需要将模型选择过程包装在称为嵌套 CV 的外部交叉验证中。

对于决策树,使用完整的训练数据集来构建树会更好吗?

拥有更多数据来训练您的模型总是更好。但是如果你使用你手头的所有数据,那么你就不知道你的测试误差(当然你可以间接估计它,但估计仍然是估计),而且很难知道你是否过度拟合你的数据. 因此,根据我的经验,不建议使用所有数据来拟合您的模型。

在随机森林中,是否需要 k 折交叉验证?我以为你可以使用OOB错误?

OOB 错误可用于调整参数,一旦完成,OOB 就不再是评估模型的有效测试集。

答案是否定的。随机森林不需要 k 折 CV。例如,当我将 RF 分类结果与使用 k 倍 CV 的其他分类器进行比较时,我只对 RF 模型的整个输入数据集执行一次运行。RF 将自行处理训练和测试数据——因此它与许多其他分类器不同,这是设计使然(由 Leo Breiman 设计)。