RandomForestRegressor Predict() 从根本上来说很慢吗?

vei*_*ich 4 python random-forest scikit-learn

我每秒只能用这个模型进行 2-3 次预测,速度非常慢。使用LinearRegression模型时,我可以轻松实现 40 倍的加速。

我正在使用scikit-learnpython 包和一个非常简单的数据集,其中包含 3 列(dayhourresult),所以基本上有 2 个功能。
dayhour是分类变量。
自然有7类day和24hour类。
训练样本相对较小(cca 5000 个样本)。
训练它只需要一露秒。
但当我继续预测某事时,速度就非常慢。

所以我的问题是:这是基本特征吗?RandomForrestRegressor或者我实际上可以对此做些什么?

from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor(n_estimators=100,
                              max_features='auto',
                              oob_score=True,
                              n_jobs=-1,
                              random_state=42,
                              min_samples_leaf=2)
Run Code Online (Sandbox Code Playgroud)

jon*_*nor 5

以下是使用 sklearn 优化随机森林的一些步骤

  1. 通过将多个数据点传递到 来进行批量预测predict()。这减少了 Python 开销。
  2. 减少树木的深度。使用类似min_samples_leaf或 的东西min_samples_split来避免有很多小的决策节点。要使用训练集的 5%,请使用0.05
  3. 减少树木数量。对于经过一定程度修剪的树木,RF 通常只需很少的n_estimators=10.
  4. 使用优化的 RF 推理实现,例如emtrees。最后一件事要尝试,也依赖于之前的步骤才能表现良好。

必须使用交叉验证或类似方法来验证优化模型的性能。步骤 2 和步骤 3 是相关的,因此可以进行网格搜索来找到最能保持模型性能的组合。