什么因素使训练(fit())对5000训练组的速度极慢?

时间:2017-10-13 13:25:20

标签: apache-spark-mllib

我使用LogisticRegression作为分类器,使用大约5,000行的训练集运行fit()。我正在使用CrossValidator和一个参数网格(总共大约480个组合,假设每个参数都与其他参数的所有组合一起尝试)

这是在本地运行("本地[*]" - 因此应该使用所有可用的核心),并分配12GB的RAM。与我们最终的训练集相比,训练集很小。

这已经运行了好几天 - 不是我的预期。有人可以提供一些可能影响这种表现的主要领域的提示/解释吗?

除非绝对必要,否则我不会将Spark设置为群集。我原以为这不是一项艰巨的任务。

参数网格的一个例子:

return new ParamGridBuilder()
    .addGrid(classifier.regParam(), new double[]{0.0, 0.1, 0.01, .3, .9})
    .addGrid(classifier.fitIntercept())
    .addGrid(classifier.maxIter(), new int[]{10, 20, 100}) 
    .addGrid(classifier.elasticNetParam(), new double[]{.8, .003}) 
    .addGrid(classifier.threshold(), new double[]{0.0, .03, 0.5, 1.0})
    .addGrid(classifier.standardization());

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

嗯,480个模型必须经过培训和测试..这是一项巨大的工作。

我建议您做一些手动探索,以确定在哪里做GridSearch ..

例如,您可以验证fitIntercept是好还是不好一次(而不是一次使用240次,另一次使用240次)

标准化也是如此..

其中一些参数是黑/白决定。