如何在boosting中实现决策树

How to implement decision trees in boosting

我正在实施将使用 CART 和 C4.5 的 AdaBoost(Boosting)。我阅读了有关 AdaBoost 的信息,但我找不到如何将 AdaBoost 与决策树结合起来的好解释。假设我有包含 n 个示例的数据集 D。我将 D 拆分为 TR 训练示例和 TE 测试示例。 假设 TR.count = m, 所以我设置的权重应该是 1/m,然后我用 TR 来构建树,我用 TR 测试它以获得错误的例子,并用 TE 测试来计算错误。然后我改变重量,现在我将如何获得下一个训练集?我应该使用什么样的采样(有或没有 replacemnet)?我知道新的训练集应该更多地关注分类错误的样本,但我该如何实现呢?那么 CART 或 C4.5 如何知道他们应该关注具有更大权重的示例?

据我所知,TE数据集并不是用来估计错误率的。原始数据可以分为两部分(一部分用于训练,另一部分用于交叉验证)。主要是,我们有两种方法在训练数据集分布上应用权重。使用哪种方法由您选择的弱学习器决定。

如何应用权重?

  • 不放回地重新采样训练数据集。这种方法可以看作是 weighted boosting method。生成的重采样数据集包含误分类实例,其概率高于正确分类实例,因此它迫使弱学习算法专注于误分类数据。

  • 学习时直接使用权重。这些模型包括贝叶斯分类、决策树(C4.5和CART)等。关于C4.5,我们计算增益信息(变异信息)来确定哪个预测器将被选为下一个节点。因此,我们可以结合权重和熵来估计测量值。例如,我们将权重视为样本在分布中的概率。给定 X = [1,2,3,3],权重 [3/8,1/16,3/16,6/16]。通常,X的交叉熵为(-0.25log(0.25)-0.25log(0.25)-0.5log(0.5)),但考虑到权重,其加权交叉熵为(-(3/8)对数(3/8)-(1/16)对数(1/16)-(9/16对数(9/16)))。 C4.5一般可以通过加权交叉熵来实现,其权重为[1,1,...,1]/N。 如果你想用 C4.5 算法实现 AdaboostM.1,你应该阅读第 339 页中的一些内容,统计学习的要素。