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