GPyOpt获得最佳X的成本差异

时间:2019-04-03 20:28:32

标签: gpyopt

我已经使用GPyOpt优化了多维模型

opt = BayesianOptimization(f=my_eval_func, domain=domain, constraints=constraints)
opt.run_optimization(max_iter=20)

这样做之后,我得到了opt.x_opt的最优坐标,而模型成本是opt.fx_opt。但是,我也对fx在此最佳位置的方差感兴趣。我该如何实现?

1 个答案:

答案 0 :(得分:0)

我通过针对优化的x_opt变量(即m.model.predict(m.x_opt))应用内部GP模型来解决此问题。但是,我认为结果是在某些归一化和偏移的坐标空间中,需要对预期结果进行线性变换,例如:

def get_opt_est(m):
    X = []
    pred_X = []
    for x,y in zip(m.X, m.Y):
        X.append(y[0])
        pred_X.append(m.model.predict(x)[0][0])
    scale = (np.max(X) - np.min(X))/(np.max(pred_X) - np.min(pred_X))
    offset = np.min(X) - np.min(pred_X)*scale
    pred = m.model.predict(m.x_opt)
    return(pred[0][0]*scale+offset,pred[1][0]*scale)

print("Predicted loss and variance is",get_opt_est(opt))