Изменения

Перейти к: навигация, поиск

Эволюционные алгоритмы кластеризации

Нет изменений в размере, 23:16, 8 апреля 2019
Параметры эволюционного алгоритма
== Представление особи ==
Различные мутации, кроссоверы и способы инициализации особи предполагают некоторое её представление в памяти. Например:
* '''целочисленное кодирование по меткам кластеров''' (''англ. '' label-based integer encoding'') {{---}} для каждого объекта в выборке его кластер задаётся непосредственно. Таким образом, вся особь {{---}} это массив из $N$ чисел, соответствующих кластерам элементов выборки размера $N$.
* '''решётчатое кодирование''' {{---}} для каждого вещественного признака объектов одного кластера задаются верхняя и нижняя граница. Таким образом, область одного кластера $d$-мерной выборки ограничивается $d$-мерным гиперкубом.
* '''вещественное кодирование''' (''англ. '' real encoding'') {{---}} для каждого кластера $d$-мерной выборки задаётся его ''центроид'' {{---}} синтезированный объект, определяемый его координатами в пространстве выборки. Принадлежность объекта к кластеру определяется центроидом, который ближе всего к объекту согласно используемой метрике. Вся особь определяется вещественным вектором размера $k \cdot d$.* '''бинарное кодирование''' (''англ. '' binary encoding'') {{---}} то же самое, что и вещественное кодирование, но в качестве центроида используется элемент выборки (''прототип''). Таким образом, одна особь может быть представлена вектором из $N$ булевых значений, из которых $k$ истинных определяют прототипы соответствующих $k$ кластеров.* '''бинарное кодирование по остовному дереву''' (''англ. '' tree-based binary encoding'') {{---}} по выборке строится [[Остовные деревья: определения, лемма о безопасном ребре|минимальное остовное дерево]]; особь кодируется вектором из $N-1$ булевых значений, среди которых $k-1$ истинное соответвует рёбрам остовного дерева, разделяющим кластеры.
== Мутации ==
В качестве мутации можно либо использовать одну из операций, приведённых ниже, либо случайно (н-р, равновероятно) выбирать одну из нескольких таких операций.
=== Разбиения, слияния и переназначения ===
В этом разделе приведён ряд мутаций, предполагающих целочисленное кодирование особи.
Общим свойством этих операций является необходимость выбрать один, два или более кластеров, над которыми операции производятся. Делать это можно либо '''случайно''' (''англ. unguided''unguided), либо '''выборочно''' (''англ. guided''guided) на основе той или иной характеристики кластера (''англ. interestingness''interestingness) {{---}} например, расстояний объектов до центроида, плотности объектов в кластере и т.п.* '''разбиение кластера''' (''англ. '' split-gene'') {{---}} выбранный кластер делится вдоль $N-1$-мерной поверхности (н-р, гиперплоскости; для двухмерного случая это прямая) на два новых. Гиперплоскость можно задать:
** случайно на основе выпуклой оболочки кластера;
** случайно по направлению, а по положению {{---}} выборочно на основе индуцированной функции распределения (или гистограммы) положения объектов кластера вдоль оси, перпендикулярной гиперплоскости;
** детерминированно как медиану между центроидом кластера и самой отдалённым от центроида объектом.
* '''слияние двух кластеров''' (''англ. '' merge-gene'') {{---}} выбранные два кластера объединяются в один.
* '''удаление кластера''' {{---}} все объекты выбранного кластера переназначаются в другие кластеры на основе расстояния до них.
* '''переназначение элементов кластера''' (''англ. '' remove-and-reclassify'') {{---}} небольшой набор объектов выбранного кластера переназначается в другие кластеры. Вместе с объектом можно также переместить случайное число (от 0 до $N/k$) ближайших к нему объектов. Набор объектов и целевой кластер можно задать случайно или выборочно на основе расстояний до соседних кластеров.
Следует заметить, что если алгоритм использует хотя бы одну операцию разбиения, то должна быть включена в рассмотрение какая-нибудь операция слияния, и наоборот. Иначе количество кластеров либо уменьшится до двух, либо возрастёт до $N$.
=== Модификация прототипа ===
== Кроссовер ==
В качестве операций кроссовера различными авторами были опробованы:
* '''k-точечный кроссовер''' (''англ. '' k-point crossover'') на целочисленном и вещественном кодировании;* '''однородный кроссовер''' (''англ. '' uniform crossover'') на бинарном кодированиии по остовному дереву;* '''скрещивание кластеров''' {{---}} из выбранного кластера первой особи удаляется часть объектов, после чего в него добавляются случайно выбранные объекты из кластера второй особи. Удалённые объекты переназначаются в другие кластеры первой особи. На всех стадиях этой операции, требующих выбор объектов или кластеров, можно использовать как выборочную (''англ. guided''guided), так и полностью случайную (''англ. unguided''unguided) стратегии, аналогично описанию мутаций разбиения и слияния.
== Инициализация ==
Задание особей первого поколения алгоритма может производиться с помощью различных эвристик:
Анонимный участник

Навигация