我使用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());
有什么建议吗?
答案 0 :(得分:1)
嗯,480个模型必须经过培训和测试..这是一项巨大的工作。
我建议您做一些手动探索,以确定在哪里做GridSearch ..
例如,您可以验证fitIntercept是好还是不好一次(而不是一次使用240次,另一次使用240次)
标准化也是如此..
其中一些参数是黑/白决定。