我正在使用大约 150 万个观测值的数据集。我发现在我的数据的一小部分上运行回归树(我正在使用包中的mob()
* 函数party
)需要很长时间(我不能在超过 50k obs 的子集上运行)。
我可以想到两个减慢计算速度的主要问题
- 使用整个数据集在每一步计算拆分。我会对根据数据的随机子集在每个节点处选择要拆分的变量的结果感到满意,只要它继续在树中的每个子节点处补充样本的大小。
- 该操作未并行化。在我看来,一旦树进行了第一次拆分,它就应该能够使用两个处理器,所以到 16 次拆分时,我的机器中的每个处理器都将被使用。在实践中,似乎只有一个被使用。
有没有人对更适合大型数据集的替代树实现或我可以更改以使计算更快的事情提出建议**?
* 我正在使用mob()
,因为我想在每个节点的底部拟合一个线性回归,以根据它们对处理变量的响应来拆分数据。
** 似乎大大减慢了计算速度的一件事是我有一个包含 16 种类型的因子变量。计算要拆分的变量子集似乎比其他拆分花费的时间要长得多(因为有很多不同的方法可以对它们进行分组)。这个变量是我们认为很重要的变量,所以我不愿意完全放弃它。在将类型放入树模型之前,是否有推荐的方法将类型分组为较少数量的值?