【发布时间】:2013-09-13 14:16:32
【问题描述】:
我正在处理一个包含大约 150 万个观测值的数据集。我发现在我的数据的一小部分上运行回归树(我正在使用 party 包中的 mob()* 函数)需要很长时间(我不能在超过50k obs)。
我能想到两个导致计算速度变慢的主要问题
- 使用整个数据集在每个步骤中计算拆分。我会对根据数据的随机子集在每个节点处选择要拆分的变量的结果感到满意,只要它继续在树中的每个子节点处补充样本的大小。
- 操作未并行化。在我看来,一旦树进行了第一次拆分,它就应该能够使用两个处理器,所以到 16 次拆分时,我的机器中的每个处理器都将被使用。在实践中,似乎只有一个被使用。
是否有人对更适合大型数据集的替代树实现或我可以更改以加快计算速度的事情提出建议**?
* 我使用mob(),因为我想在每个节点的底部拟合一个线性回归,根据它们对处理变量的响应来拆分数据。
** 似乎大大减慢了计算速度的一件事是我有一个包含 16 种类型的因子变量。计算要拆分的变量子集似乎比其他拆分花费的时间要长得多(因为有很多不同的方法可以对它们进行分组)。这个变量是我们认为很重要的变量,所以我不愿意完全放弃它。在将类型放入树模型之前,是否有推荐的方法将类型分组为较少数量的值?
【问题讨论】:
-
R 和它的大多数包都不是开箱即用的并行化,所以你对第 2 点是正确的。不幸的是,在你的情况下,如果不对源代码进行重大编辑,你将无能为力
party的代码。
标签: r parallel-processing regression cart-analysis large-data