尽快 运行 随机森林模型的最佳实践

Best practices to run a random forest model as fast as possible

我想要运行一个随机森林分类器模型。我的数据集非常大,有 100 万行和 300 列。当然,宁愿不要运行 模型像3 天一样马不停蹄。所以我想知道是否有一些好的做法可以找到 运行宁时间和预测质量之间的最佳权衡。

以下是 a 的想法的一些示例:

我可以使用 x 行的随机子样本来调整参数,然后对包含所有数据的模型使用参数吗? (如果是,我如何找到 x 的最佳值?)

有没有办法知道在什么时候继续添加更多数据是无用的,因为预测将停止改进? (即,在 运行ning 时间内可以得到最佳结果的最少行数是多少)

如何估计模型的 运行ning 时间? 4000 行模型需要 4 分钟,8000 行需要 10 分钟。 运行ning 时间是指数的,或者它或多或少是线性的,我可以预期 1280 分钟的 运行ning 时间有 100 万行?

  1. 随机子采样然后调整完整数据很少起作用,因为小子样本可能不能代表完整数据。

  2. 关于数据量与模型质量:尝试使用 sklearn 的学习曲线:https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.learning_curve.html

    train_sizes, train_scores, test_scores, fit_times, _ = learning_curve(
        estimator,
        X,
        y,
        cv=cv,
        n_jobs=n_jobs,
        train_sizes=train_sizes,
        return_times=True,
    )

这样您就可以绘制数据量与模型性能的关系图。 以下是绘图的一些示例: https://scikit-learn.org/stable/auto_examples/miscellaneous/plot_kernel_ridge_regression.html#sphx-glr-auto-examples-miscellaneous-plot-kernel-ridge-regression-py

https://scikit-learn.org/stable/auto_examples/model_selection/plot_learning_curve.html#sphx-glr-auto-examples-model-selection-plot-learning-curve-py

  1. 估计总时间很困难,因为它不是线性的。

一些额外的实用建议:

  • n_jobs=-1设置为运行模型在所有内核上并行;
  • 使用任何特征选择方法来减少特征的数量。 300个特征真的很多,去掉一半左右应该是可以的,模型性能不会严重下降。