为啥我们不能在决策树中随机启动根节点?

Posted

技术标签:

【中文标题】为啥我们不能在决策树中随机启动根节点?【英文标题】:Why can't we initiate the root node randomly in Decision Trees?为什么我们不能在决策树中随机启动根节点? 【发布时间】:2020-10-25 11:46:32 【问题描述】:

我刚刚开始学习决策树。所以问题可能有点傻。

选择根节点的想法有点混乱。为什么我们不能随机选择根节点?它似乎唯一的区别是它会使决策树更长更复杂,但最终会得到相同的结果。

同样作为决策树中特征选择过程的扩展,为什么不能使用特征与目标之间的相关性或卡方检验等简单的方法来确定从哪个特征开始?

【问题讨论】:

【参考方案1】:

为什么不能随机选择根节点?

我们可以,但这也可以扩展到它的子节点和该子节点的子节点等等......

它似乎唯一的区别是它会使决策树变得更长更复杂,但最终会得到相同的结果。

树越复杂,它的方差就越大,这意味着两件事:

训练数据集的微小变化会极大地影响三者的形状 它过拟合了训练集

这些都不好,即使您在每一步都根据熵或基尼杂质指数做出明智的选择,您最终可能仍会得到比您想要的更大的三个。是的,这棵树在训练集上可能有很好的准确性,但它可能会过度拟合训练集。

大多数使用决策树的算法都有自己的方法来对抗这种差异,以一种或另一种方式。如果考虑简单的决策树算法本身,降低方差的方法是先训练树,然后修剪树,使其更小,减少过拟合。随机森林通过对大量树进行平均来解决这个问题,同时随机限制每次必须做出决定时可以考虑分割的预测变量。

因此,随机选择根节点最终会导致相同的结果,但仅在训练集上且仅在过度拟合非常极端以至于树简单地以 100% 准确率预测所有内容时。但是树越适合训练集,它在测试集上的准确度就越低(通常),我们关心的是测试集上的准确度,而不是训练集上的准确度。

【讨论】:

嘿@Matus,这说明了很多。谢谢你的详细解释! @DaviedZuhraph 另一篇文章与我的做法相同。它只是没有解释如此糟糕的初始选择的含义,它只假设了训练集。如果您只考虑训练集(您用于拟合模型的数据),那么无论初始拆分的选择如何,都会导致一致的假设(在无约束树的假设下)。实际上,您可以使所有拆分随机化,并且仍然会导致一致的假设,因为该算法允许具有与数据集中的样本一样多的叶节点。 @DaviedZuhraph 是的,但前提是树不受约束。例如,如果你在你的树上放置一个约束,如果一个节点有,比如说,10个或更少的样本,它不能再被分割,那么这不再成立,你可以得到不同的结果基于初始分割的选择。另外,请注意,在训练集上获得一致的假设并不能告诉您模型的优劣。正如我所说,这样一个单独分类每个样本的模型在训练集上将具有 100% 的准确度,但它很可能完全没用。

以上是关于为啥我们不能在决策树中随机启动根节点?的主要内容,如果未能解决你的问题,请参考以下文章

第五十三课 树中节点的查找操作

决策树与随机森林

将节点添加到树 - 为啥根没有被初始化?

决策树中的J48算法分析

查找树中两个节点之间的深度差异,而无需一直到根

权值(点分治)