我有一个由20个特征和大约300,000个观察值组成的数据集。我使用插入符号来训练带有doParallel和四个内核的模型。对于我尝试过的方法(rf,nnet,adabag,svmPoly),即使在我10%的数据上训练也要花8个多小时。我用bootstrapping重采样了3次,我的tuneLength是5。我能做些什么来加快这个令人痛苦的缓慢过程吗?有人建议使用底层库可以将我的过程加快10倍,但在我走上这条路之前,我想确保没有其他选择。
发布于 2015-10-05 18:46:30
@phiver一针见血,但是,对于这种情况,有一些建议:
最大值
发布于 2015-10-02 21:09:08
当比较底层模型和使用插入符号时,人们忘记了插入符号有很多额外的东西。
以你的随机森林为例。所以,bootstrap,编号3,tuneLength 5。因此您重采样了3次,并且由于tuneLength,您尝试为mtry找到一个好的值。总共运行15个随机森林,并对这些森林进行比较,以获得最终模型的最佳森林,而如果使用基本随机森林模型,则只有1个。
此外,你在4个内核上并行运行,随机森林需要所有可用的观察数据,因此所有训练观察数据将在内存中存储4次。训练模型的内存可能不多了。
我的建议是开始缩小规模,看看是否可以加快速度,比如将bootstrap数量设置为1,并将长度调回到默认的3。或者甚至将培训控制方法设置为"none",只是为了了解模型在最小设置下的速度,并且不进行重采样。
发布于 2016-01-08 14:20:26
@phiver和@topepo的出色输入。我将尝试总结并添加更多的观点,这些观点是我在搜索类似问题的一些SO帖子中收集的:
https://stackoverflow.com/questions/32899418
复制相似问题