Сравнивая два генетических алгоритма


9

У меня есть две реализации генетического алгоритма, которые должны вести себя одинаково. Однако из-за технических ограничений, которые не могут быть разрешены, их выходные данные не совпадают, учитывая тот же вклад.

Тем не менее, я хотел бы показать, что нет существенной разницы в производительности.

У меня есть 20 прогонов с одинаковой конфигурацией для каждого из двух алгоритмов, использующих различные начальные начальные числа случайных чисел. Для каждого запуска и генерации минимальной ошибки приспособленность лучшей особи в популяции была зафиксирована. Алгоритм использует механизм сохранения элиты, поэтому приспособленность лучшего человека монотонно уменьшается. Прогон состоит из 1000 поколений, поэтому у меня есть 1000 значений за цикл. Я не могу получить больше данных, так как расчеты очень дороги.

Какой тест я должен использовать? Самый простой способ, вероятно, состоит в том, чтобы сравнить ошибку только в последних поколениях (опять же, какой тест я бы здесь использовал)? Но можно также подумать о сравнении поведения сходимости в целом.


Так же, как пояснение: разве это не тот случай, когда генетический алгоритм случайным образом ищет решение, так что начальный сегмент любого прогона вряд ли даст какое-либо стоящее решение? Кроме того, что именно вы подразумеваете под "минимальной ошибкой в ​​населении"? Если вы имеете в виду минимальную разницу между известным истинным значением и каким-либо решением из 1000 значений в прогоне, то не является ли это предвзятым показателем результата прогона? В конце концов, на практике вы принимаете окончательное решение при каждом запуске и отклоняете все, что ему предшествует, верно?
whuber

По ошибке я в основном имею в виду 1 / пригодность, поэтому я говорю о ценности лучшего человека в поколении. Я записал ценность пригодности лучшего человека для каждого поколения. Таким образом, у меня есть 1000 * 20 * 2 числа, каждое из которых соответствует «пригодности» лучшего человека в конкретном поколении конкретного забега.
2010 г.,

Я думаю, что первоначальный вопрос был некорректным, я добавил некоторые разъяснения ..
2010 г.,

Ответы:


9

Тестирование стохастических алгоритмов может быть довольно сложным!

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

В dsmts мы рассчитали (аналитически) ожидаемое значение и дисперсию конкретной модели. Затем мы выполняем проверку гипотезы, чтобы определить, отличается ли симулятор от истины. Раздел 3 UserGuide дает детали. По сути, мы делаем t-тест для средних значений и критерий хи-квадрат для дисперсий.

В вашем случае вы сравниваете два симулятора, поэтому вам следует просто использовать t-критерий с двумя выборками.


Как бы я использовал информацию всех поколений?
2010 г.,

Самый простой способ - выполнить несколько тестов, то есть тестировать каждое поколение, а затем использовать коррекцию Бонферрони или FDR.
csgillespie

При сравнении в каждом поколении мне пришлось бы тестировать на уровне значимости 1/1000 * 0,05? Разве это не немного резко?
2010 г.,

Да, но вы также много тестируете - не можете иметь все;) Вы можете ранжировать p-значения, использовать их как руководство, чтобы увидеть, где могут возникнуть возможные ошибки.
csgillespie

1
Вместо коррекции бонферрони, вы всегда можете использовать более мощный бонферрони холм. Смотрите мой ответ здесь: stats.stackexchange.com/questions/575/…
Хенрик,

4

Возможно, вы могли бы измерить среднюю разницу между двумя прогонами одного и того же алгоритма и среднюю разницу между двумя прогонами из разных алгоритмов. Не решает проблему того, как измерить эту разницу, но может быть более податливой проблемой. И отдельные значения временного ряда будут использоваться в расчете разности вместо того, чтобы обрабатываться как отдельные точки данных для оценки друг друга (я также не думаю, что конкретное различие на n-м шаге - это то, что вы действительно хотите делать заявления о).

Обновление Относительно подробностей - какие особенности временного ряда вас интересуют, кроме окончательной ошибки? Я полагаю, у вас есть три разных вопроса:

  1. Что представляет собой сходство для вас, то есть что вы имеете в виду, когда говорите, что не считаете, что эти два метода различны?
  2. Как вы его количественно оцените - можно ответить через 1, и
  3. Как вы можете проверить существенные различия между вашими двумя методами?

Все, что я говорил в первом посте, было то, что ответ на (1), вероятно, не учитывает индивидуальные различия в каждом из 1000 поколений. И что я бы посоветовал придумать скалярное значение для каждого временного ряда или хотя бы сходства между временными рядами. Только тогда вы перейдете к актуальному статистическому вопросу (о котором я знаю меньше всего из всех трех пунктов, но мне посоветовали использовать парный t-тест в аналогичном вопросе, который я только что задал, при наличии скалярного значения на элемент).


звучит разумно, больше подробностей?
2010 г.,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.