决策树修剪的效果

Posted

技术标签:

【中文标题】决策树修剪的效果【英文标题】:The effect of Decision Tree Pruning 【发布时间】:2011-04-28 21:13:29 【问题描述】:

我想知道我是否从训练和验证集构建了一个类似 ID3 的决策树 A,但 A 未修剪。 同时,我在 ID3 中也有另一个决策树 B,它是从相同的训练和验证集生成的,但是 B 被修剪了。 现在我在未来的未标记测试集上同时测试 A 和 B,是否总是修剪后的树会表现得更好? 欢迎任何想法,谢谢。

【问题讨论】:

您是否正在寻找修剪后的树可能表现更差的特定情况? 【参考方案1】:

我认为我们需要更清楚地区分:修剪过的树总是在 validation 集上表现更好,但在 testing 集上不一定如此(事实上它是在 training 集上的表现也相同或更差)。我假设修剪是在树建成后完成的(即:后修剪)..

请记住,使用验证集的全部原因是为了避免在训练数据集上过度拟合,这里的关键是泛化:我们想要一个模型(决策树),将“训练时”提供的实例推广到新的未见示例。

【讨论】:

【参考方案2】:

修剪是应该通过防止过度拟合来改进分类。由于剪枝只有在提高验证集的分类率时才会发生,因此在验证期间,剪枝树的性能将与未剪枝树一样好或更好。

【讨论】:

OP 从来没有提到交叉验证,我认为你的意思是验证集 @Amro:对,在交叉验证期间的验证集上。我会解决的。【参考方案3】:

修剪不当会导致错误的结果。尽管通常需要减小决策树的大小,但您通常会在修剪时以更好的结果为目标。因此,如何是修剪的关键。

【讨论】:

【参考方案4】:

我同意@AMRO 的第一个回答。 Post-pruning 是最常用的决策树修剪方法,它在树构建后完成。但是,Pre-pruning 也可以。在pre-pruning 中,通过使用指定的阈值提前停止其构造来修剪树。例如,通过决定不在给定节点拆分训练元组的子集。

然后那个节点变成叶子。这个叶子可能包含元组子集中最频繁的类或这些元组的概率。

【讨论】:

以上是关于决策树修剪的效果的主要内容,如果未能解决你的问题,请参考以下文章

黑客/克隆 sklearn 以支持修剪决策树?

C4.5 决策树算法没有提高准确性

机器学习之决策树(Decision Tree)

使用 rpart 为决策树修剪选择 CP 值

3.决策树学习

决策树