随机森林似乎不能处理超过 32 类因素。我该怎么做才能在训练我的模型时包含这些因素?

Posted

技术标签:

【中文标题】随机森林似乎不能处理超过 32 类因素。我该怎么做才能在训练我的模型时包含这些因素?【英文标题】:Random forest does not seem to handle more than 32 categories of factors. What do I do to include these factors in training my model? 【发布时间】:2013-06-06 07:59:10 【问题描述】:

我正在尝试根据我的训练数据训练随机森林,其中包含“名称”、“城市”等预测变量。这两个预测变量有超过 32 个类别。我该怎么做才能包括他们?

即使是其他一些算法似乎也无法处理更大的类别,如 SVM 或 gbm。

【问题讨论】:

(1) 32 个二进制变量,或 (2) 将变量折叠到更少的类别。在这种情况下,限制是技术上的限制,但具有大量类别的变量可能会在统计上产生问题,因为这通常表明您很少考虑数据选择和准备。 或者,不要使用这些变量,而是使用您收集的另一个变量。 @joran 如何使用美国所有 50 个州,例如数据选择的“标志很少考虑”?您如何对这些变量进行分类/分组? @Gaffi 50 个状态在某些情况下可能是合理的,具体取决于模型。但那是你的例子,不是我的,也不是 OP,他们只引用了名字和城市(在我看来,这意味着超过 50 个)。通常,由于样本量和可估计性问题,具有大量类别的变量往往信息量不大。但凡事都有例外。 @joran 我想我的意思是我和 OP 有同样的问题,但我不确定如何处理所有 50 个州。你还能如何将这些预测因素放在一起?拆分为 25/25 并运行两种不同的分析? 【参考方案1】:

出于速度的原因,通常建议避免使用公式接口来随机森林。相反,将model.matrix 与您的公式一起使用,并将结果提供给随机森林。然后,您可以拥有任意数量的类别,因为它们是二分法(即虚拟化或变成二元变量)。

正如@joran 指出的那样,您可能还想更多地考虑您的问题。

【讨论】:

这个答案救了我的命:) 乐于助人 :-)

以上是关于随机森林似乎不能处理超过 32 类因素。我该怎么做才能在训练我的模型时包含这些因素?的主要内容,如果未能解决你的问题,请参考以下文章

R中随机森林中的二元分类或未知类

多类决策森林与随机森林

随机森林

在 Java 中使用随机森林打印实际和预测的类标签

sklearn 随机森林分类器可以处理分类变量吗?

随机森林分类器