我正在处理一个包含大约 150 万个观测值的数据集。我发现在超过一小部分数据上运行回归树(我正在使用 mob()
* 包中的 party
* 函数)花费的时间非常长(我无法在超过50k 观察)。
我能想到两个导致计算速度变慢的主要问题
有没有人对更适合大型数据集的替代树实现或我可以更改以使计算更快**的内容提出建议?
* 我正在使用
mob()
,因为我想在每个节点的底部拟合线性回归,根据它们对处理变量的响应来拆分数据。** 似乎大大减慢计算速度的一件事是我有一个包含 16 种类型的因子变量。计算要拆分的变量子集似乎比其他拆分需要更长的时间(因为有很多不同的方法可以对它们进行分组)。这个变量是我们认为很重要的变量,所以我不愿意完全放弃它。在将类型放入树模型之前,是否有推荐的方法将类型分组为较少数量的值?
最佳答案
我的回答来自我上过的一门课,该课使用过 these slides (see slide 20) .
那里的说法是没有简单的方法来处理具有大量类别的分类预测变量。此外,我知道决策树和随机森林会自动更喜欢在具有大量类别的分类预测变量上进行拆分。
几个推荐的解决方案:
ordered factor
在 R
randomForest
做一件事。包是设置randomForest
参数 mtry
到一个较低的数字。这控制了算法为每个拆分查找的变量数量。当它设置得较低时,与其他变量相比,出现的分类预测变量的实例会更少。这将加快估计时间,并允许来自 randomForest
的去相关优势。方法确保您不会过度拟合您的分类变量。 最后,我建议查看 MARS 或 PRIM 方法。我的教授 has some slides on that here .我知道 PRIM 以计算要求低而闻名。
关于在 R 中的大型数据集上运行回归树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18709291/