使用此代码时,我注意到它的收敛速度令人难以置信(很小) 一秒的分数),即使模型和/或数据非常大。一世 怀疑在某些情况下我没有得到任何接近最佳解决方案的东西, 但这很难证明。有一些类型的选项会很高兴 全局优化器如盆地跳跃算法,即使这消耗了100 CPU的1000倍。有没有人对这个问题有任何想法?
答案 0 :(得分:9)
这是一个非常复杂的问题,这个答案可能不完整,但应该给你一些提示(因为你的问题也表明了一些知识差距):
(1)首先,我不同意some type of global optimizer such as the basin hopping algorithm, even if this consumed 100 to 1,000 times as much CPU
的愿望,因为这在大多数情况下(在ML世界中)没有帮助,因为差异是如此微妙,优化错误经常会与其他错误(模型权力;经验风险)相比可忽略不计
"Stochastic Gradient Descent Tricks" (Battou)
以获取一些概述(以及错误组件!)(2)盆地跳跃是全球优化的一些高度启发式工具(寻找全局最小值而不是局部最小值)完全保证(接触NP-硬度和co。)。 这是你想在这里使用的最后一个算法(见第(3)点)!
(3)逻辑回归问题是凸优化问题!
(4)有不同的求解器,每个求解器都支持不同的问题变体(不同的正则化和合作)。我们并不确切知道您正在优化什么,但当然这些解算器在融合方面的工作方式不同:
当然,二阶方法会因大规模数据(甚至是复杂性)而受到更多伤害,并且如前所述,并非所有解算器都支持sklearn中支持的每个logreg-optimization问题。
我希望你知道这个问题有多复杂(因为解决者内部非常复杂)。
最重要的事情: