Оптимизируйте входной вектор для достижения оптимальных результатов - PullRequest
0 голосов
/ 28 сентября 2018

Я не мог понять следующую проблему: если бы я мог, я хотел бы сразу привести вам пример
Представьте себе, вы работаете с маркетинговыми данными, и вы придумали хорошую регрессионную модель, предсказывающую«охват» определенной кампании.Все отлично и денди.Data Scientist Работа выполнена.
Но подождите.Мы можем сделать больше.
Мой вопрос к вам:
Если предположить, что у нас есть хорошая модель, как мы можем оптимизировать входной вектор (= маркетинговая кампания), чтобы получить максимально возможный охват?"(= предиктор / цель оптимизации)?
Я гуглил как сумасшедший, но не смог найти хорошего подхода (я не говорю о какой-либо оптимизации по гипертерметру).Подход лучший , который я нашел до сих пор, - это генетический алгоритм ... пример здесь и здесь
Или - грубая силаподход - вычислите огромную сетку с тоннами возможных входных векторов, а затем проверьте, какой из них лучше (прямой), но это будет вычислительно дорого.

Мне бы очень хотелось услышать ваше мнение по этому поводу.Любой совет, на какие темы я должен проверить?

1 Ответ

0 голосов
/ 28 сентября 2018

Очень длинный комментарий:

Генетические алгоритмы могут быть вложенными.Поместите свой искатель генетического решения в фитнес-функцию.Отдайте его родительскому генетическому алгоритму.Попросите их найти результаты путем «оптимизации входного вектора» из внешнего GA и «оптимизации цели» из внутреннего GA.

Вы даже можете добавить третий слой GA, чтобы протестировать параметры построения GA среднего слоя, потому что мы можемНе знаю, какое пространство поиска нам нужно.Если бы мы знали это, то нам не нужно было бы оптимизировать этот вектор.

Таким образом, вы даже можете уменьшить размер проблемы на GA.

vector:x,y,z

GA1: optimizes x and GA2 parameters
  GA2: optimizes y and GA3 parameters
     GA3: optimizes z
        fitness(x,y,z)
all pass their best fitness to parent

Я не уверен, что это такбудет быстрее / медленнее, чем

GA: optimize x,y,z
    fitness(x,y,z)

, потому что я не знаю, может ли мутация GA3 спасти весь оптимизатор от локальных минимумов.Также другая версия:

GA1: optimize GA2
   GA2: optimize x,y,z
       fitness(x,y,z)

Я не знаю его производительность.Может быть, GA сможет решить, сколько вложенных GA тоже должно быть там

GA0: optimize N, x0,x1,..xM-N
  GA1: optimize XM-N+1
    GA2: optimize XM-N+2
       ...
           GAM: optimize XM
               fitness(X0,X1,..XM)

, но я думаю, слишком большое количество объектов, построенных / разрушенных на всех уровнях, снизит производительность (связанный с пропускной способностью памяти) и читаемость (адбэк обратного вызова).

...