【发布时间】:2014-07-28 06:49:41
【问题描述】:
我正在使用随机森林生成物种分布模型。这些模型试图根据各种环境属性预测一个物种发生的概率。对于大多数物种,我们的初始潜在预测变量集介于 10 到 25 个之间,每个预测变量都由一个包含 460,000,000 个像元的 GIS 栅格文件表示。由于训练数据的性质,我不会在这里详细介绍,我实际上是在基于数据子集构建多个 RF 模型(大约 10 到 100+),然后结合起来为每个物种创建我的整体模型.实际上构建模型花费的时间相对较少(通常几分钟或更短),但使用 predict 函数基于此模型生成预测概率的栅格层可能需要 20 多个小时。我怀疑这个漫长的过程大部分是由于读取/写入大型光栅文件,瓶颈可能是硬盘读取/写入速度。
为了提供更多细节...一旦我有了训练有素的模型,我将通过 raster 包创建代表预测层的层的栅格堆栈,然后使用 predict() 预测该堆栈光栅包中的函数。我有一个相当强大的桌面(Core i7,3.5GHz,w/32 GB RAM),输入和输出光栅文件在本地硬盘上,而不是通过网络移动。我看到 mbq 的回答 here 提供了关于使用 randomForest 加速模型生成的有用建议,并且正在寻找类似的建议来加速预测操作。我能想到许多可能有帮助的事情(例如,种植少量的树,使用其中一个库进行并行处理),我计划在时间允许的情况下测试这些,但它是如果问题主要是读写瓶颈,我不清楚这些是否会产生重大影响。我将不胜感激任何建议。
【问题讨论】:
-
我只是提供一个轶事,以这种方式在栅格上进行数学运算非常慢,所以这可能确实是您的问题。
-
我确实看到了有关 parallelRandomForest 的帖子。它似乎只支持回归,而不是分类。此外,目前尚不清楚这是否真的会加快预测速度,因为重点似乎是在训练上。读/写速度可能仍然存在瓶颈。
标签: r performance prediction random-forest r-raster