GPyOpt получает изменение стоимости для оптимального X - PullRequest
0 голосов
/ 03 апреля 2019

Я использовал 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 голосов
/ 06 апреля 2019

Я решил это для себя, применив внутреннюю модель GP для оптимизированной переменной x_opt, то есть m.model.predict(m.x_opt).Однако результаты, как мне кажется, находятся в некотором нормализованном и смещенном координатном пространстве, требующем линейного преобразования в ожидаемые результаты, например:

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))
...