首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spark2 - LogisticRegression训练完成,但结果没有收敛,因为:行搜索失败

Spark2 - LogisticRegression训练完成,但结果没有收敛,因为:行搜索失败
EN

Stack Overflow用户
提问于 2016-08-16 18:14:10
回答 1查看 3K关注 0票数 8

在训练Logistic回归分类器时,我得到以下错误:

代码语言:javascript
运行
复制
2016-08-16 20:50:23,833 ERROR [main] optimize.LBFGS (Logger.scala:error(27)) - Failure! Resetting history: breeze.optimize.FirstOrderException: Line search zoom failed
2016-08-16 20:50:24,009 INFO  [main] optimize.StrongWolfeLineSearch (Logger.scala:info(11)) - Line search t: 0.9 fval: 0.4515497761131565 rhs: 0.45154977611314895 cdd: 3.4166889881493167E-16

然后,程序继续了一段时间,但随后我遇到了以下错误:

代码语言:javascript
运行
复制
2016-08-16 20:50:24,365 ERROR [main] optimize.LBFGS (Logger.scala:error(27)) - Failure again! Giving up and returning. Maybe the objective is just poorly behaved?
2016-08-16 20:50:24,367 WARN  [main] classification.LogisticRegression (Logging.scala:logWarning(66)) - LogisticRegression training finished but the result is not converged because: line search failed!
2016-08-16 20:50:27,143 INFO  [main] optimize.StrongWolfeLineSearch (Logger.scala:info(11)) - Line search t: 0.4496001808762097 fval: 0.5641490068577 rhs: 0.6931115872739131 cdd: 0.01924752705390458
2016-08-16 20:50:27,143 INFO  [main] optimize.LBFGS (Logger.scala:info(11)) - Step Size: 0.4496
2016-08-16 20:50:27,144 INFO  [main] optimize.LBFGS (Logger.scala:info(11)) - Val and Grad Norm: 0.564149 (rel: 0.186) 0.622296
2016-08-16 20:50:27,181 INFO  [main] optimize.LBFGS (Logger.scala:info(11)) - Step Size: 1.000
2016-08-16 20:50:27,181 INFO  [main] optimize.LBFGS (Logger.scala:info(11)) - Val and Grad Norm: 0.484949 (rel: 0.140) 0.285684
2016-08-16 20:50:27,226 INFO  [main] optimize.LBFGS (Logger.scala:info(11)) - Step Size: 1.000
2016-08-16 20:50:27,226 INFO  [main] optimize.LBFGS (Logger.scala:info(11)) - Val and Grad Norm: 0.458425 (rel: 0.0547) 0.0789000
2016-08-16 20:50:27,263 INFO  [main] optimize.LBFGS (Logger.scala:info(11)) - Step Size: 1.000

但训练还在继续。

尽管培训看起来已经成功完成(我得到了一个模型,我在testset上做了预测,验证了分类器等等),但是我担心这个错误。知道这个错误意味着什么吗?有什么建议可以克服吗?(我使用10,000作为最大迭代次数)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-21 12:37:17

问题在于LBFGS优化器,这是Logistic回归算法所使用的。

这种错误最有可能发生在梯度错误或收敛公差设置太紧时。

在我的例子中,我运行的算法如下:

代码语言:javascript
运行
复制
new LogisticRegression().
        setFitIntercept(true).
        setRegParam(0.3).
        setMaxIter(100000).
        setTol(0.0).
        setStandardization(true).
        setWeightCol("classWeightCol").setLabelCol("label").setFeaturesCol("features")

当迭代的收敛容限设置为0 (setTol(0.0))时,火花文档状态:

代码语言:javascript
运行
复制
"Smaller value will lead to higher accuracy with the cost of more iterations. Default is 1E-6. "

但是,一旦将设置器更改为setTol(0.1),行搜索错误就不再发生。

当模型不收敛时,更多的可能性是增加迭代次数

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38981793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档