RandomForestRegressor是否预测()从根本上缓慢?

时间:2017-06-18 05:23:55

标签: python scikit-learn random-forest

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

我使用scikit-learn python包,其中包含一个包含3列(dayhourresult的非常简单的数据集,因此基本上有2个功能。 /> dayhour是分类变量 当然,有7个day和24个hour类别 训练样本相对较小(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)

1 个答案:

答案 0 :(得分:1)

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

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

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