Байесовская оптимизация с изменяющейся во времени целью и ее реализация на Python
Мне нужно смоделировать агента, который оптимизирует изменяющуюся во времени целевую функцию (подробности ниже). Я пытаюсь сделать это, придавая больший вес последним испытаниям и / или полностью забывая старые. Это то, что делает эта статья.
Я ищу библиотеку Python, которая реализует это. Hyperopt, кажется, обеспечивает "линейное забвение" через свои tpe.suggest
функция и этот документ даже говорит, что они использовали Hyperopt, чтобы сделать это.
Однако эта функция (если имеется) не задокументирована, и я даже не уверен, была ли она правильно реализована в Hyperopt (см. Эту проблему).
Поэтому я буду признателен за любые советы или подсказки о том, как использовать Hyperopt (или любую другую библиотеку) для этого.
Повторюсь, это то, чего я пытаюсь достичь (из http://proceedings.mlr.press/v28/bergstra13.pdf):
По отношению к Bergstra et al. (2011) мы сделали две незначительные модификации алгоритма поиска. Первая модификация заключалась в том, чтобы облегчить испытания по мере их старения, чтобы старые результаты не учитывались так же, как более поздние. Мы дали полный вес последним 25 испытаниям и применили линейное изменение от 0 до 1,0 к более старым испытаниям. Это эвристическая уступка предположению TPE о независимости гиперпараметров: когда наш поиск перемещается в пространстве, мы используем временное расстояние в эксперименте в качестве суррогата расстояния в пространстве поиска.
Подробнее о проблеме: я моделирую рынок в дискретном времени, где каждый период люди выбирают цену, а затем пытаются найти соответствие. Они узнают свою выплату (как функцию цены) со временем и пытаются максимизировать ее, выбирая лучшую цену в следующем периоде. Однако, поскольку все остальные делают то же самое, выигрыш и оптимальная цена со временем меняются. Поэтому я хочу, чтобы агенты придавали более высокие значения последним наблюдениям.