我正在使用 sklearn 的 GPR 库,但偶尔会遇到这个烦人的警告:
ConvergenceWarning: lbfgs failed to converge (status=2):
ABNORMAL_TERMINATION_IN_LNSRCH.
Increase the number of iterations (max_iter) or scale the data as shown in:
https://scikit-learn.org/stable/modules/preprocessing.html
_check_optimize_result("lbfgs", opt_res)
Run Code Online (Sandbox Code Playgroud)
我不仅几乎找不到有关此警告的文档,而且 max_iter 根本不是 sklearn 的 GPR 模型中的参数。我试图按照建议重新调整数据,但它没有用,坦率地说我不理解它(我还需要调整输出吗?同样,很少有文档)。
增加优化过程中的最大迭代次数是有道理的,但 sklearn 似乎没有办法做到这一点,这令人沮丧,因为他们建议这样做以响应此警告。
查看 GPR源代码,这是 sklearn 调用优化器的方式,
def _constrained_optimization(self, obj_func, initial_theta, bounds):
if self.optimizer == "fmin_l_bfgs_b":
opt_res = scipy.optimize.minimize(
obj_func, initial_theta, method="L-BFGS-B", jac=True,
bounds=bounds)
_check_optimize_result("lbfgs", opt_res)
theta_opt, func_min = opt_res.x, opt_res.fun
elif callable(self.optimizer):
theta_opt, func_min = \
self.optimizer(obj_func, initial_theta, bounds=bounds)
else:
raise ValueError("Unknown …Run Code Online (Sandbox Code Playgroud)