【发布时间】:2012-12-06 10:01:26
【问题描述】:
我正在尝试使用 fmin_bfgs() 或 fmin_l_bfgs_b() 最小化具有大量参数(略超过 7000)的函数。当我输入命令时
opt_pars = fmin_l_bfgs_b(obj_f, pars, approx_grad=1)
(其中 obj_f 是我要最小化的函数,而 pars 是初始参数的向量)该函数永远运行,直到 python 告诉我它必须终止程序。从来没有任何输出。我尝试添加参数 maxfunc = 2 以查看它是否到达任何地方并且发生了同样的事情(永远运行然后python终止了程序)。
我只是想弄清楚该函数可能出了什么问题。似乎它可能陷入了一个while循环或其他东西。有没有人遇到过这个问题?如果没有,我还可以在此处使用一些一般调试帮助(因为我对 Python 比较陌生)来了解如何监视函数正在执行的操作。
最后,也许有人可以为我正在尝试的任务推荐不同的功能或包。我正在尝试将套索正则化泊松回归拟合到稀疏数据,其中包含对 7000 个变量的大约 1200 万个观测值。
PS 很抱歉没有包括我试图最小化的 -log 似然函数,但这将是完全无法解释的。
非常感谢您的帮助!
扎克
【问题讨论】:
-
7000个参数太多了! fmin 正在尝试评估您的函数以了解所有这些变化,这可能就是它需要这么长时间的原因。当然,对于 7000 个变量,可能会有很多局部最小值。我的建议是尝试一些 PCA 来减少问题的维度。
-
很多!但它完全是凸的,所以没有局部最小值......
标签: python debugging optimization scipy regression