我正在使用随机森林生成物种分布模型 . 这些模型试图以各种环境属性为条件来预测物种发生的概率 . 对于大多数物种,我们的初始潜在预测因子集合介于10到25之间,每个预测变量都由具有460,000,000个单元格的GIS光栅文件表示 . 由于训练数据的性质,我不会在这里讨论,我实际上是基于数据的子集构建多个RF模型(大约10到100),然后组合以创建每个物种的整体模型 . 实际上构建模型花费的时间相对较少(通常为几分钟或更短),但使用预测函数根据此模型生成预测概率的栅格图层可能需要20个小时 . 我怀疑这个冗长的过程大部分是由于读取/写入大型光栅文件,而瓶颈可能是硬盘读/写速度 .
提供更多详细信息......一旦我拥有训练有素的模型,我就会通过光栅包创建表示预测器层的图层的光栅堆栈,然后使用中的predict()函数预测到该堆栈 . 光栅包 . 我有一个相当强大的桌面(Core i7,3.5GHz,w / 32 GB的RAM),输入和输出光栅文件在本地硬盘上,而不是通过网络移动 . 我看到了mbq的答案here,其中有关使用randomForest加速模型生成的有用建议,并且我正在寻找类似的建议来加速预测操作 . 我可以想到许多可能有帮助的事情(例如,使用其中一个库进行并行处理来种植少量树木),我计划在时间允许的情况下测试这些树,但我不清楚是否有这些如果问题主要是读写瓶颈,将会产生重大影响 . 我会很感激任何建议 .
1 回答
你可能会看mctune function here . 这使用e1071软件包来查找最佳参数 . 但是,您可以调整它以满足您的需求 .
另一个选择可能是使用来自doparallel包的foreach(see here) . 您可以将每个数据子集(针对新的RF模型)分配给每个核心:
每个经过培训的RF模型将作为RF_outputs列表的一部分返回给您 . 所以
RF_outputs[[1]]
将是您第一个训练有素的射频模型 .