我正在做一个随机森林实现(用于分类),我有一些关于文献中提到的树木生长算法的问题。
在训练决策树时,有两个停止树生长的标准:
a.当没有其他功能可用于拆分节点时停止。
b.当节点中的所有样本都属于同一类时停止。
基于此,
一考虑在森林里种一棵树。当分割树的一个节点时,我随机选择m的m个总特征,然后从这些M特征中找到一个具有最大信息增益的特征。在我找到这一个特性(比如f)之后,我应该先从特性列表中删除这个特性,然后再继续到节点的子节点吗如果我不删除此功能,则可能会在树下再次选择此功能。
如果我在不删除节点上选择的特征的情况下实现算法,那么停止树生长的唯一方法就是当树的叶子变得“纯”时。当我这样做时,我得到了Python中的“最大递归深度”达到错误,因为这棵树不能更早地达到那个“纯”条件。
即使是布赖曼写的RF文献也说,树应该生长到最大。这是什么意思?
2.在节点拆分时,在选择要拆分的最佳功能(按信息增益)后,拆分的阈值应该是多少一种方法是没有阈值,为特征的每个唯一值创建一个子节点;但是我也有连续值的特征,这意味着为每个样本创建一个子节点!
最佳答案
第一季度
你不应该删除m中的特征。否则它将无法检测某些类型的关系(例如:线性关系)
也许你可以早点停下来,在你的情况下,它可能会上升到只有一个样本的叶,这将没有统计意义所以最好停在say,当leaf的样本数问题2
对于连续的特性,您可以将它们分组并使用它们来确定分割点。