使用 REP 修剪树

数据挖掘 决策树
2022-02-20 10:12:08

我使用 c4.5 算法创建了一个决策树模型。创建模型后,我使用 10 折交叉验证评估模型,并使用测试数据对模型进行分类以获得准确性。然后我用 REP 运行 prune tree。

我的问题是我应该使用哪些数据来比较准确性(修剪后和修剪前)以决定移除叶子?我从哪里得到准确性?使用交叉验证或分类测试数据?

1个回答

减少错误修剪策略的工作方式如下:

  1. 在训练数据集上训练树
  2. 将修剪数据集(与训练数据集不同)拟合到树。您将拥有的是在第一步中学习的树,但是对于每个节点,您将拥有来自修剪数据集的一些实例。
  3. 如果从修剪的数据集中为实例计算的错误分类错误不大于在训练数据上计算的原始错误分类错误率,则从树中修剪每个节点。例如,假设您进行二元分类并从训练数据集构建树。现在您从修剪数据集中拟合数据,并且一些实例到达给定的非叶节点。假设在该节点到达正实例和个负实例。的错误率现在从那个节点开始,实例被拆分为已经学习的标准到两个子节点,一个将有正实例和280.222负实例,在另一个子节点中是其他负实例。儿童的累积误差也是这意味着进一步拆分是没有意义的,因为数据变化很大。这意味着您实际上可以切割子节点并使原始非叶节点成为叶节点。60.2

使用新数据(剪枝数据集)的目的是检查拆分是否有用,或者数据中的噪声是否覆盖了拆分给出的信号。

要评估两个模型在修剪前后的性能,您需要另一个不同的数据集,名为验证数据。要了解方式,您必须了解修剪实际上也是扩展训练的一部分。与普通学习的唯一区别是,在使用 REM 进行训练时,您将学习如何使用一些数据进行扩展,并且您将学习如何使用其他一些数据来取消学习。

如果您使用来自训练的相同数据进行修剪,您根本不会进步(您可以提前停止)。用于修剪数据集以进行测试将使您的模型选择标准无效,因为修剪树几乎总是表现得更好(原始树从训练数据集中学习,修剪树从两者中学习)。我敢说,如果你想利用预测误差,你将不得不使用不同的数据集,或者将所有内容都包含在交叉验证中。