【问题标题】:Multiple levels of parallelization with scikit-learnscikit-learn 的多级并行化
【发布时间】:2015-07-06 10:42:17
【问题描述】:

我在多核服务器上使用 scikit-learn 的 RandomForestClassifier 来适应大型数据集,因此我通过设置 n_jobs = -1 来利用其并行化功能。

同时,我想执行交叉验证(与cross_val_score)并利用其并行化功能(同样,通过设置n_jobs = -1)。

我的问题是使用 both 类型的并行化是否会比仅使用 single 类型的并行化显着提高模型构建速度。如果后者是真的,那么我不确定我应该更喜欢哪种类型的并行化。 scikit-learn 文档和 SO 没有提供关于如何使两种类型的并行化协同工作的任何想法。

请让我知道是否可以为您提供有关我的设置的更多信息,如果提供更有帮助的答案有用的话。谢谢!

【问题讨论】:

  • 为什么不用数据的子样本来试验计时?
  • 在模型拟合之后 不会执行cross_val_score 吗?
  • 不,折叠有一个循环,在其中调用 fit。

标签: python parallel-processing machine-learning scikit-learn cross-validation


【解决方案1】:

不,只会使用一种类型的并行化。无法嵌套 joblib 调用。我认为将使用最外层的循环,即cross_val_score,但我不确定。

实际上应该并行化哪个循环取决于您的设置。我可能会选择 RandomForestClassifier(n_jobs=-1) 并连续执行 cross_val_score。借助详细的 GridSearchCV,它还可以很快让您深入了解验证的准确性。

假设您并行执行 cross_val_score,与 CPU 相比,您的倍数很少(比如 5 倍和 5 个 CPU)。通常,如果您搜索最大深度,某些森林将比其他森林花费更短的时间。 然后快速森林将完成他们的工作,CPU 将处于空闲状态,而“慢”森林仍在训练中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-29
    • 2020-09-28
    • 2021-05-09
    • 2016-10-12
    • 2016-02-23
    • 2016-06-05
    • 2018-12-21
    • 2012-10-15
    相关资源
    最近更新 更多