Оптимизация по регрессионной модели с несколькими выходами - PullRequest
1 голос
/ 22 апреля 2020

В настоящее время я подгоняю модель гауссовского процесса к набору данных. Каждый из моих входов X производит один выход, и в итоге я использую сумму всех выходов как Y модели, Y_single_output в фрагменте. Однако мне было интересно, что может произойти в случае, если я выполню регрессию, вместо того, чтобы суммировать выходные данные каждого X, просто установить модель множественной выходной регрессии с Y для каждого X, что будет Y_mult_output во фрагменте.

Для одного вывода я мог бы сделать следующее:

kernel = C(1.0, (1e-4, 1e4))*RBF(1.0,(1e-3,1e3))
model = GaussianProcessRegressor(kernel = kernel, n_restarts_optimizer = 10,optimizer='fmin_l_bfgs_b')           
model.fit(X,Y_single_output)

В этих ситуациях X - это массив с измерениями (20,4) и Y (20). Теперь я бы выбрал минимизацию:

min_func = shgo(lambda x: -model.predict(np.array([x])), bounds=bounds)

, которая прекрасно работает. Тем не менее, моя проблема заключается в том, что когда я пытаюсь выполнить то же самое для гауссовского процесса с размерами, равными X, это будет (20,4). Я подгоняю модель следующим образом:

kernel = C(1.0, (1e-4, 1e4))*RBF(1.0,(1e-3,1e3))
model = GaussianProcessRegressor(kernel = kernel, n_restarts_optimizer = 10, optimizer='fmin_l_bfgs_b')           
model.fit(X,Y_mult_output)

Но когда я пытаюсь свести к минимуму, используя тот же метод, упомянутый выше, я получаю следующую ошибку:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Итак, мой вопрос: возможно ли свести к минимуму модель множественной регрессии с помощью scipy?

...