在 R 的 randomForest 包中,因子是不是必须明确标记为因子?

Posted

技术标签:

【中文标题】在 R 的 randomForest 包中,因子是不是必须明确标记为因子?【英文标题】:In R's randomForest package, do factors have to be explicitly labeled as factors?在 R 的 randomForest 包中,因子是否必须明确标记为因子? 【发布时间】:2016-01-18 01:41:53 【问题描述】:

或者包会意识到它们不是连续的并将它们视为因素?我知道,对于分类,被分类的特征确实需要成为一个因素。但是预测功能呢?我已经在几个玩具数据集上运行它,根据分类特征是数字还是因子,我得到的结果略有不同,但算法是随机的,所以我不知道我的结果差异是否有意义。

谢谢!

【问题讨论】:

如果您想以可重现的方式测试使用随机数生成器 (RNG) 的脚本或函数,请尝试使用 set.seed(number) 设置 RNG 的种子,其中 number 是任何整数,在运行函数之前。然后你可以测试你的假设是否正确。 【参考方案1】:

是的,两者之间是有区别的。如果你想使用一个因子变量,你应该这样指定它,而不是把它保留为数字。

对于分类数据(this 实际上是 CrossValidated 上一个非常好的答案):

对具有 N 个级别的因子进行拆分实际上是从 (2^N)−2 个可能的组合中选择一个。因此,该算法将检查所有可能的组合并选择产生更好拆分的组合


对于数值数据(见here):

然后对数值预测变量进行排序,然后为每个值计算基尼杂质或熵,并选择一个阈值来提供最佳分割。


所以,是的,将其添加为因子还是数字变量会有所不同。相差多少取决于实际数据。

【讨论】:

它确实取决于手头的数据,就像你说的那样。我在基因组数据上使用了 randomForest 包(所以所有预测变量都在 0, 1 中)并将它们作为连续或分类传递没有任何区别。在前一种情况下,分裂的条件是x > 0.5x < 0.5,相当于0和1之间的二元选择。然而,令人费解的是,RF在分类预测器上要慢得多,所以如果可以的话,我总是选择不连续属性。

以上是关于在 R 的 randomForest 包中,因子是不是必须明确标记为因子?的主要内容,如果未能解决你的问题,请参考以下文章

R中RandomForest包中的RandomForest函数中的参数'classwt'代表啥?

R的randomForest包中的缺失值错误

在 randomForest 包中绘制 500 棵树中的一棵

R 中 h2o 包中的 predict.H2OModel() 是不是为 h2o.randomForest() 模型提供 OOB 预测?

在 R 中使用 randomforest() 进行分类?

R ranger 包中的预测概率