我正在处理大约150万次观测的数据集。我发现在我的数据的一小部分上运行一个回归树(我使用mob()
包中的party
*函数)花了很长时间(我无法运行超过50k的子集)。
我可以想到两个影响计算速度的主要问题
有没有人对替代树实现提出建议,这些实现对大型数据集更有效,或者我可以改变以使计算更快的事情**?
*我正在使用mob()
,因为我想在每个节点的底部进行线性回归,根据对治疗变量的响应来分割数据。
**似乎减慢计算的一件事是我有一个16种类型的因子变量。计算要拆分的变量的哪个子集似乎比其他拆分需要更长的时间(因为有很多不同的方法可以对它们进行分组)。这个变量是我们认为重要的变量,因此我不愿完全放弃它。是否有推荐的方法在将类型放入树模型之前将其分组为较少数量的值?
答案 0 :(得分:4)
我的回答来自我使用these slides (see slide 20)的课程。
有一种说法是,没有简单的方法来处理具有大量类别的分类预测变量。此外,我知道决策树和随机森林会自动选择拆分具有大量类别的分类预测变量。
一些推荐的解决方案:
ordered factor
R
randomForest
包执行的一项操作是将randomForest
参数mtry
设置为较小的数字。这将控制算法为每个拆分查看的变量数。当它设置得更低时,您的分类预测变量的实例将显示为与其余变量相比较少。这将加快估计时间,并允许使用randomForest
方法的去相关优势,确保您不会过度填充分类变量。最后,我建议您查看MARS或PRIM方法。我的教授has some slides on that here。我知道PRIM因计算要求低而闻名。