决策树学习算法中的重复训练数据

Duplicate Training Data in Decision Tree Learning Algorithm

我有以下训练数据集,其中第一行显示属性名称。

S_Length, Se_Width, P_Length, P_Width, Predicate
5.1,3.5,1.4,0.2,Ili
4.9,3.0,1.4,0.2,Iri
4.7,3.2,1.3,0.2,Iyr
4.6,3.1,1.5,0.2,Ir
5.0,3.6,1.4,0.2,Po
5.4,3.9,1.7,0.4,II
4.6,3.1,1.5,0.2,Ir
5.0,3.4,1.5,0.2,Imt
4.6,3.1,1.5,0.2,Ir

上述数据集中,第4,7,9行,数据集重复。它如何影响算法?我应该省略重复的数据吗?

如果这是正确收集的数据(一些随机 process/problem 的随机样本),那么您永远不应该删除样本。这只是您的数据的特征,您已经对两个具有相同表示的对象进行了采样。有效地,这将更加重视这一点,如果现实是这样的话,这是一件有效的事情。简而言之,永远不要删除任何东西,除非你100% 确定这是由于错误或者你想要实现一些非标准的东西(比如对不同分布的偏差估计,计算效率的近似解等)。

对于统计机器学习lejlot给出了很好的答案。然而,决策树学习有点不同。它使用贪婪搜索来寻找一个好的结构,这可能会导致奇怪的结果。从历史上看,这是因为它们来自机器学习更像是一门艺术(或工程学,但这听起来不那么性感)的时代。 .

在继续之前我们需要两个确保两个属性(第一个已经由 lejlot 解释)

  1. 这种重复不是由于数据收集过程中的错误造成的
  2. 您的数据仍然是i.i.d。如果你想做 LOO 或 CV,训练、测试、验证拆分。这对我来说非常重要。如果看到很多这样的例子,这会破坏统计评估的所有属性。特别是,train/test 拆分可能适用于修剪等。如果是这样并且您的示例不是独立的,您需要确保它们以相同的 fold

对于数字数据,我会立即怀疑其中任何一个被违反了。

鉴于这些假设——此外您还使用 C4.5——我们可以分析对学习模型的影响。如果我们假设,您的 classes 可由决策树分离,并且您不施加任何约束,则没有任何区别。在这种情况下,您实际上可以安全地删除它们,但是,保留它们对 class 化没有太大影响。但是,树的结构在很大程度上受这些添加示例的影响。在不计算 entropy/gini 索引的实际值的情况下,我假设第一个拆分将在 S_Length =< 4.6 上进行。这是这些额外示例的最重要结果:C4.5 的贪婪性会将结构推向能够很好地捕捉这些示例的东西。您可以称该结构对某个 class 过度拟合。如果与其他特征相比这种差异相当微不足道,这可能会成为一个问题。 SVM 在这里的反应会更好(不足为奇:统计 ML)。

总的来说,我实际上会保留它们并删除它们。在归纳树的结构过程中,我会忽略它们,只计算剩余示例的结构。但是,为了计算叶子中的 classifications 和修剪,我会使用它们。

上一段包含最重要的建议:我将对此类域中的树应用修剪。