Weka:随机森林的实现

数据挖掘 随机森林 威卡
2022-02-17 19:37:08

我想知道随机森林是如何在 Weka 中实现的。这篇论文非常具体地介绍了 Weka 中的 RF,但第 2 章中对其学习过程的描述对我来说似乎很奇怪。他们说:

  1. 引导样本Bi对于每棵树ti
  2. 为每个随机选择一个特征子集ti
  3. 信息增益用于种植未修剪的树木ti

我的问题:

  • 不应该在决策树的所有级别上重复第 2 步吗?否则每棵树将永远看不到某些特征
  • 设置时默认是什么numFeatures=0我认为这是每个拆分可用的功能数量。它是所有特征数量的平方根吗?
  • 信息增益真的用于确定最佳分割属性吗?

我正在使用 Weka 3.8.3 - 不确定这是否重要。

感谢所有提示:)

1个回答

您链接的论文在特征子集方面似乎是错误的。我在 randomForest 的文档中找不到它,但是 randomForest的源代码使用 randomTree 作为基本模型,并且在文档中它说

一棵树,它在每个节点上考虑 K 个随机选择的属性。

因此,选择似乎发生在每次拆分时。
(请注意,xgboost 在每个树、级别(深度)和节点上都有特征子集。我没有看到任何明显的理由表明这些选项中的一个或多个应该总是更可取...)

对于默认的特征数量,sqrt(m) 是最常见的,但看起来 Weka 使用的是 lg(m)。请参阅https://weka.sourceforge.io/doc.dev/weka/classifiers/trees/RandomForest.html上的选项 -K

是的,Weka 使用 Quinlan 决策树家族,它使用信息增益进行拆分(与使用 gini 的 CART 相反)。