在R中的大数据集上运行回归树

我正在处理大约150万个观测数据集。 我发现运行一个回归树(我使用party包中的mob() *函数)在我的数据的一小部分子集上花费了很长时间(我无法运行超过50k obs的子集)。

我可以想到两个主要的问题,即放慢计算速度

  • 在每一步使用整个数据集计算分裂。 只要它继续补充树中每个子节点上样本的大小,我就会对选择变量在每个节点上基于数据的随机子集进行拆分的结果感到满意。
  • 该操作未被并行化。 在我看来,只要树已经完成了第一次分割,它就应该能够使用两个处理器,这样当我的机器中的每个处理器都有16个分割的时候,它就会被使用。 在实践中,似乎只有一个正在被使用。
  • 有没有人对任何替代树实现提出建议,这些实现可以更好地处理大型数据集,或者我可以更改以使计算更快的事情**?

    *我正在使用mob() ,因为我想在每个节点的底部拟合线性回归,根据对处理变量的响应来分割数据。

    **有一件事似乎在减慢计算速度,我有一个因子变量,有16种类型。 计算要分割的变量的哪个子集似乎需要比其他分割更长的时间(因为有很多不同的方法来分组)。 这个变量是我们认为重要的变量,所以我不愿意完全放弃它。 在将类型放入树模型之前,是否有建议的方法将这些类型分组为少量值?


    我的回答来自我使用这些幻灯片的课程(请参见幻灯片20)。

    有一种说法是,处理大量类别的分类预测因子并不容易。 另外,我知道决策树和随机森林会自动更喜欢在具有大量类别的分类预测因子上进行分割。

    一些推荐的解决方案:

  • 将您的分类预测器分为更少的箱子(对您仍然有意义)。
  • 按照手段对预测结果进行排序(幻灯片20)。 这是我教授的建议。 但是它会导致我在R使用一个ordered factor
  • 最后,你需要注意这个分类预测器的影响。 例如,我知道你可以使用randomForest包做的一件事是将randomForest参数mtry设置为较小的数字。 这控制了算法为每个分割查找的变量的数量。 当它设置得越低时,你的分类预测变量的实例出现的次数就会比其余的变量少。 这将加快估计时间,并且允许randomForest方法的解相关优势确保您不会过度使用分类变量。
  • 最后,我建议您查看MARS或PRIM方法。 我的教授在这里有一些幻灯片。 我知道PRIM因计算要求低而出名。

    链接地址: http://www.djcxy.com/p/74115.html

    上一篇: Running regression tree on large dataset in R

    下一篇: elements exist as properties on the window