我正在研究具有大量特征(numFeatures > 100)的多类逻辑回归模型。使用基于成本函数和梯度的最大似然估计,fmincg 算法可以快速解决问题。但是,我也在尝试不同的成本函数并且没有梯度。
有没有加快计算过程的好方法?例如,我可以使用不同的算法或 fmincg 设置吗?
我正在研究具有大量特征(numFeatures > 100)的多类逻辑回归模型。使用基于成本函数和梯度的最大似然估计,fmincg 算法可以快速解决问题。但是,我也在尝试不同的成本函数并且没有梯度。
有没有加快计算过程的好方法?例如,我可以使用不同的算法或 fmincg 设置吗?
如果您没有可用的梯度,但问题是凸的,则可以使用Nelder-Mead 单纯形法。它在大多数优化包中都可用,例如在scipy.optimize中。
共轭梯度——函数最小化(非线性)共轭梯度中的 cg——要求你有一个梯度函数(或近似值),因为这是算法本身的关键部分:它需要快速找到最陡的下降方向。
fminsearch实现 Nelder-Mead,一种非线性无梯度方法。它的收敛特性远没有那么好。
你的成本函数是什么?是否存在可微分的近似值(首选两次,以便您可以使用非常强大的准牛顿方法)?
我已经能够通过模拟退火优化非常奇怪的函数,而且它不需要梯度。相反,它以非常类似于马尔可夫链蒙特卡罗的方式使用随机数,这有助于避免陷入局部最优。可以在本讲座中找到一个体面的解释,给出其背后的直觉:模拟退火。scipy 0.14 在其优化模块中包含此算法:scipy.optimize.anneal。