构建决策树时的终止标准

时间:2010-10-19 11:39:20

标签: artificial-intelligence machine-learning decision-tree classification

我正在为决策树编写自己的代码。我需要决定何时终止树构建过程。我可以想到限制树的高度,但这似乎微不足道。谁能让我更好地了解如何实现我的终止功能。

这是我的树构建算法。

4 个答案:

答案 0 :(得分:1)

您的问题中几乎没有上下文,但我假设您正在使用大量数据构建树?在这种情况下,解决方案是“LearnSet”的补充,以获取示例的“StopSet”并定期验证您在此StopSet上的决策制定过程。如果质量下降,则表明您在LearnSet上过度训练。

我故意使用“StopSet”而不是“TestSet”,因为在此之后你应该在TestSet上应用你的决策树来评估真实的质量。

答案 1 :(得分:1)

当决策树产生不平衡分裂时,树的一部分可能比另一部分重。因此,使用树的高度并不聪明,因为它在同一级别的任何地方停止。更好的是使用分割搜索所需的最少数量的观察。这在http://zyxo.wordpress.com/2011/07/04/how-to-use-the-settings-to-control-the-size-of-decision-trees/

更详细

答案 2 :(得分:1)

我们有3个一般终止条件: 1.分区中的所有元组都属于同一类 2.没有剩余的元组可以进一步分区的属性。 3.给定分支没有元组。

当然,您还可以设置其他条件,例如最大深度或其他条件。

答案 3 :(得分:0)

这是一个有点老问题,但我想我可以改进答案。理论是当分裂是纯的(即杂质= 0)或左或右节点中的所有成员是相同的输出值时停止。例如,如果您正在尝试预测心脏病发作,并且如果一个组有心脏病发作或没有心脏病发作,那么您可以安全地停止拆分该组,因为一切都是相同的,您可以安全地预测共同的价值。修剪过程支持该理论,因为您可以构建一个非常高的树,如果一个节点对精度没有贡献,它就会被修剪。

现在很难获得完全纯粹的分裂。通常为了将数据分成完全纯粹的集合,您将分割很多,从而制作越来越小的集合,直到您在每个节点中进行单个观察。高大的树木通常无法在修剪过程中存活下来,无论如何你很可能过度拟合训练数据。因此,通常的做法是在修剪算法中节省额外的时间,以便简单地限制您愿意拆分的观察数量,并从结果拆分中设置最小数量。你不会保持分裂,导致1和999观察。这是一个糟糕的分裂,再试一次。

因此,您可以为节点中的最小观察数量(即分割后)添加配置参数,并为用户可以调整的分割(分割前)所需的最小节点数量添加。

最后的标准也是如果你的分裂没有从最后的纯度测量改进。如果一个节点不能被拆分,以产生一个更纯粹的集合,那么它之前有什么。你可以停下来,因为你的方向是错误的。这实质上意味着如果我是您要分裂的节点的纯度测量。而我(s [l])是左分裂集的纯度,I(s [r])是右分裂集的纯度,而p(s)是设置为父集合的部分:

Gain = I(s) - p(s[r]) * I(s[r]) - p(s[l]) * I(s[l])

如果那个增益< 0,因为你没有通过分裂得到更多的纯度。