什么因素使训练 (fit()) 对于 5,000 个训练集非常慢?
What factors make training (fit()) extremely slow for training set of 5,000?
我是 运行 fit() 使用大约 5,000 行的训练集,使用 LogisticRegression 作为分类器。我正在使用 CrossValidator 和参数网格(假设每个参数与其他参数的所有组合一起尝试,总共可能有 480 种组合)
这是 运行 本地("local[*]" -- 因此应使用所有可用内核),并分配了 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());
有什么建议吗?
嗯,必须训练和测试 480 个模型。这是一项巨大的工作量。
我建议您进行一些手动探索以确定在何处执行 GridSearch..
例如,您可以仅验证一次 fitIntercept 是否良好(而不是使用一个值验证 240 次,使用另一个值验证 240 次)
与标准化相同..
其中一些参数是 black/white 做出的决定。
我是 运行 fit() 使用大约 5,000 行的训练集,使用 LogisticRegression 作为分类器。我正在使用 CrossValidator 和参数网格(假设每个参数与其他参数的所有组合一起尝试,总共可能有 480 种组合)
这是 运行 本地("local[*]" -- 因此应使用所有可用内核),并分配了 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());
有什么建议吗?
嗯,必须训练和测试 480 个模型。这是一项巨大的工作量。
我建议您进行一些手动探索以确定在何处执行 GridSearch..
例如,您可以仅验证一次 fitIntercept 是否良好(而不是使用一个值验证 240 次,使用另一个值验证 240 次)
与标准化相同..
其中一些参数是 black/white 做出的决定。