在R的randomForest包中,因子变量是否需要明确标记为因子?

4

那么这个程序包会意识到它们不是连续的而将它们视为因子吗?我知道,在分类中,被分类的特征确实需要成为一个因子。但是对于预测性特征呢?我在一些玩具数据集上运行了它,发现分类特征是数值型还是因子型会得到稍微不同的结果,但算法是随机的,所以我不知道结果的差异是否有意义。

谢谢!


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

3
是的,这两者之间是有区别的。如果你想使用一个因子变量,你应该明确指定它,而不是将其留作数字。
对于分类数据(在CrossValidated上这里有一个非常好的答案):
引用如下: “对于具有N个级别的因子,其分裂实际上是选择(2 ^ N) - 2个可能组合中的一个。因此,算法将检查所有可能的组合并选择产生更好分裂的那个。”
对于数值数据(如这里所见):
引用如下: “数值预测变量被排序,然后为每个值计算Gini不纯度或熵,并选择一个阈值,该阈值提供最佳分裂。”
所以,无论你将其添加为因子还是数字变量,它都会有所不同。这种差异的程度取决于实际数据。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接