#python #scikit-learn #gaussian #gaussian-process
Вопрос:
Я пытаюсь использовать регрессионную модель гауссовского процесса для байесовской оптимизации. Модель GP предназначена для аппроксимации моей целевой функции. Он имеет два входа (переменные) (x, y), которые возвращают один вывод z. Я изо всех сил пытаюсь понять, какое ядро / какую комбинацию ядер использовать для модели GP. Я попробовал продукт и сумму двух ядер SE (RBF RBF и RBF x RBF), и до сих пор прогнозы не так уж велики. Я использовал 81 тренировочную точку (пары x,y) и результирующие значения z для обучения модели. Я также включил изображение 3D-данных ниже, если это поможет, и код. На самом деле мне просто нужна помощь, чтобы понять, какие ядра использовать / как создать собственное, соответствующее моим данным. Любая помощь будет очень признательна.
Ниже приведен мой код:
x_train = np.array(list_of_pairs)
y_train = training_data['result'].to_list()
kernel = gp.kernels.RBF(length_scale=0.00000000005, length_scale_bounds=(0.000001, 100000)) * gp.kernels.RBF(length_scale=0.00000000005, length_scale_bounds=(0.000001, 100000))
model = gp.GaussianProcessRegressor(kernel = kernel, n_restarts_optimizer=4)
model.fit(x_train, y_train)
test_sample = [[0.1,57]]
test_sample = np.array(test_sample)
yhat, covar = model.predict(test_sample, return_std=True)
print(yhat, covar)
print(model.kernel_.get_params())
ниже приведен скриншот некоторых ошибок вывода, которые я также мог бы использовать для понимания.
Комментарии:
1. Пожалуйста, обратите внимание, что переполнение стека препятствует скриншоту , который содержит только текст . Вместо этого скопируйте и вставьте этот текст непосредственно в сообщение с вопросом.
2. Я бы предложил следующие действия, которые, я думаю, приблизят вас к решению вашей проблемы. 1. Стандартизируйте свои данные. GP очень чувствителен к различным масштабам. 2. Пока используйте только одно универсальное ядро, например RBF. Если эти два шага выполняются без ошибок и дают приблизительные результаты, вы можете усложнить свою модель, возможно, настроив гиперпараметры или используя более сложные ядра.