RandomForestRegressor predict() 从根本上来说是慢的吗?

Is RandomForestRegressor predict() fundamentally slow?

我每秒只能用这个超级慢的模型做出 2-3 次预测。 使用 LinearRegression 模型时,我可以轻松实现 40 倍加速。

我正在使用 scikit-learn python 包和一个包含 3 列(dayhourresult)的非常简单的数据集,所以基本上是 2功能。
dayhour 是分类变量。
自然有7day和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)

以下是使用 sklearn 优化 RandomForest 的一些步骤

  1. 通过将多个数据点传递给 predict() 进行批量预测。这减少了 Python 开销。
  2. 减少树的深度。使用 min_samples_leafmin_samples_split 之类的东西来避免有很多小的决策节点。要使用 5% 的训练集,请使用 0.05.
  3. 减少树木的数量。通过稍微修剪树,RF 通常只需 n_estimators=10.
  4. 就可以正常执行
  5. 使用像 emtrees 这样的优化 RF 推理实现。最后一件事要尝试,也取决于先前的步骤才能表现良好。

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