Минимизируйте значения, предсказанные на основе модели XGBoost, путем оптимизации функций - PullRequest
0 голосов
/ 21 мая 2019

Я создал модель XGBoost в python, которая предсказывает время, затраченное на драйверы ключей данного процесса. Намерение теперь найти правильную комбинацию драйверов, которая минимизирует время обработки. В настоящее время существует 30 драйверов, которые помогают предсказать время обработки. Однако я хочу оптимизировать только 3 из этих 30 драйверов.

Эта проблема звучит как ограниченная задача нелинейной оптимизации (поправьте меня, если я ошибаюсь), поскольку 3 драйвера могут принимать только несколько значений.

В настоящее время я создал простой цикл for (основанный на ограничениях) для создания комбинаций из 3 драйверов.

for x in range(70,130):
    for i in range(0, 15):
        for j in range(34, 80):
            for k in range(25,40):
                if i+j+k==x:
                    val_rng_w_scrap.append({'PROCESS_TYPE':'Process1', 'Driver1': i, 'Driver2': j, 'Driver3':k})

sim_at_pred = model_at.predict(master_sim_14_all_iter_at)

Где master_sim_14_all_iter_at содержит различные комбинации Driver1, Driver2 и Driver3 вместе с фиксированным статическим набором из 27 других драйверов, которые важны для прогнозирования времени процесса. После оценки по модели XGBoost я выбрал комбинацию Driver1, Driver2 и Driver3, которая дает наименьшее время обработки в качестве моего оптимального решения.

Есть ли способ использовать генетические алгоритмы или scipy. оптимизировать для получения оптимизированных комбинаций Driver1, Driver2 и Driver3 (вместо того, чтобы использовать метод грубой силы, упомянутый выше)? Или есть другой возможный способ прийти к оптимальному решению?

...