как применить генетический алгоритм для уменьшения атрибутов в наборе данных

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


person XYZ    schedule 13.02.2016    source источник


Ответы (3)


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

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

  1. Импорт исходного набора данных
  2. Выберите важные функции из набора данных (данные генетическим кодом)
  3. Уменьшите набор данных (импортированный на шаге 1) в соответствии с выбранными функциями на шаге 2 (*)
  4. Обучите и предскажите свой классификатор
  5. Оцените функцию пригодности (например, частоту ошибок)
  6. Переходите к шагу № 2 до тех пор, пока не будет достигнута конвергенция (т. е. не будет создано максимальное количество поколений)

Итак, в более практическом плане ГА создает первую популяцию из N особей. Для каждой особи, поскольку это первая популяция, генетический код по умолчанию в Matlab является чисто случайным (или вы можете написать функцию, объясняющую, как выбрать начальную популяцию), и для каждой особи выполняются шаги #3, #4 и #. 5 оцениваются. Как только каждому индивидууму соответствует определенное значение пригодности, ГА создает следующее поколение (то есть генетические коды для индивидуумов в следующем поколении) с помощью генетических операторов (в основном кроссинговера, элитарности и отбора). Для особей следующего поколения такие генетические коды оцениваются, начиная с «лучших» (то есть с наименьшим значением приспособленности, если ваша проблема связана с минимизацией) особей в предыдущем поколении. Возможно, вы захотите проверить генетические операторы и то, как они работают, чтобы лучше понять этот «репродуктивный» процесс.

Если вы используете функцию ga() в Matlab, тогда входной параметр nvars будет равен 10; параметр IntCon будет иметь значение [1:10], потому что вы хотите, чтобы все они были либо 0, либо 1; а входной параметр option, который является выходом функции gaoptimset(), будет иметь следующие параметры: верхняя граница — это вектор с 10 единицами, тогда как нижняя граница — это вектор с 10 нулями. Функция ga() рассматривает вашу проблему как проблему минимизации, поэтому я бы предложил использовать частоту ошибок в качестве фитнес-функции (или что-то еще, что вы стремитесь минимизировать).
Чтобы указать бинарную популяцию, вы также можете полагаться на PopulationType введите в gaoptimset(), но я никогда не использовал его, поэтому рекомендую вам прочитать справку по этой функции (с помощью gaoptimset() вы также можете указать количество особей в вашей популяции и количество поколений, которые ГА создаст перед остановкой.. .и многие другие параметры!).

(*) Примечание. сокращение набора данных не обязательно означает, что вы фактически удалите столбцы (атрибуты), отмеченные 0 вашим генетическим алгоритмом. Это, скорее всего, испортит вашу оценку несходства/расстояния между паттернами. Вы можете использовать генетический код в качестве веса для ваших шаблонов при оценке меры несходства: шаблон из 10 признаков, поэлементно умноженный на 10-битный генетический код, и признаки, которые будут умножены на ноль, не будут иметь никакого значения (вес). в мере непохожести.

person AlessioX    schedule 13.02.2016

RapidMiner Studio поставляется с некоторыми образцами генетических алгоритмов в репозитории по умолчанию.

//Выборки/процессы/04_Attributes/10_EvolutionaryFeatureSelection //Выборки/процессы/04_Attributes/12_EvolutionaryWeighting //Выборки/процессы/06_Meta/06_EvolutionaryParameterOptimization

Оператор Optimize Selection (Evolutionary), вероятно, является оператором, который следует использовать. Если вы просмотрите справку для этого оператора, оттуда можно загрузить пример процесса. Этот процесс выбирает лучшие атрибуты, чтобы максимизировать производительность модели классификации.

person Andrew Chisholm    schedule 18.02.2016

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

http://www.mathworks.com/matlabcentral/fileexchange/46961-binary-genetic-algorithm-feature-selection-zip

Возможно, этот файл поможет вам в вашей проблеме. Они даже включают свою статью о кодах для дальнейшего понимания.

person Rahmat Izaizi    schedule 10.03.2016