随机林木生长算法

时间:2016-03-18 10:00:47

标签: python algorithm machine-learning random-forest decision-tree

我正在做一个随机森林实现(用于分类),我对文献中提到的树生长算法有一些疑问。

在培训决策树时,有两个标准可以停止种植树木:
一个。当没有剩余功能可以拆分节点时停止 湾当节点中的所有样本属于同一个类时停止。

基于此,
1。考虑在森林中种植一棵树。在拆分树的节点时,我随机选择 M 总功能的 m ,然后从这些 m 功能我发现一个功能获得最大信息的功能。在我找到这个功能后,比如 f ,我应该从功能列表中删除此功能,然后再继续查看节点的子节点吗?如果我不删除此功能,则可能会再次从树中选择此功能 如果我实现算法而不删除在节点处选择的特征,那么停止生长树的唯一方法是树的叶子变得“纯净”。当我这样做时,我在Python中遇到了“最大递归深度”错误,因为树在之前无法达到那种“纯粹”状态。
甚至那些由布莱曼写的RF文献也说这棵树应该长到最大。这是什么意思?

2. 在节点拆分中,在选择要拆分的最佳特征(通过信息增益)后,应该拆分的阈值是多少?一种方法是没有阈值,为特征的每个唯一值创建一个子节点;但我也有连续值的功能,所以这意味着每个样本创建一个子节点!

1 个答案:

答案 0 :(得分:1)

Q1

  • 您不应该从M中删除这些功能。否则它将无法检测某些类型的关系(例如:线性关系)
  • 也许你可以提前停止,在你的情况下它可能会只有1个样本,但这没有统计学意义。因此,当叶子上的样本数量<= 3
  • 时,最好停下来说

Q2

  • 对于连续特征,您可以将它们分组到组中并使用它们来计算分裂点。