Алгоритм нечеткой самоорганизации C-means
В данном алгоритме подаваемый на вход очередной обучающий вектор Xk принадлежит различным кластерам (представленным своими центрами Ci, i =1, 2,..., M) в степени uki, 0< uki <1, при соблюдении условия
sum[i=1:M](uki)=1.
При этом значение uki тем больше, чем ближе Xk к Ci. Погрешность соотнесения обучающих векторов Xk и центров Ci для всех p обучающих векторов может быть выражена следующим образом
E=sum[i=1:M](sum[k=1:p]((uki)m*|Xk-Ci|2)),
где m - показатель, выбираемый из ряда 1, 2, 3,....
Цель обучения - подбор таких значений центров Ci, которые обеспечивают минимальное значение погрешности E при одновременном соблюдении условия
sum[i=1:M](uki)=1.
Решение этой задачи можно свести к минимизации функции Лагранжа в виде
LE=sum[i=1:M](sum[k=1:p]((uki)m*|Xk-Ci|2))+
+sum[k=1:p](Lk*(sum[i=1:M](uki)-1)),
где Lk, k =1, 2,..., p - множители Лагранжа.
Доказано, что решение этой задачи можно представить в виде
Ci=sum[k=1:p]((uki)m*Xk)/sum[k=1:p]((uki)m),
uki=1/sum[l=1:M](((dki)2/(dkl)2))1/(m-1)),
где dki=|Xk-Ci|2 - эвклидово расстояние между Xk и Ci.
Алгоритм обучения, реализующий описанную выше идею, получил название C-means. Он носит итерационный характер и может быть описан следующим образом.
|
|
1. Выполнить случайный выбор коэффициентов uki из диапазона [0,1] при соблюдении условия sum[i=1:M](uki)=1.
2. Вычислить все M центров Ci по приведенной выше формуле.
3. Рассчитать значение погрешности E. Если это значение меньше установленного порога или незначительно изменилось относительно предыдущей итерации, то закончить вычисления. Иначе перейти к п. 4.
4. Рассчитать новые значения uki по приведенной выше формуле и перейти к п. 2.
Описанный выше итерационный алгоритм ведет к достижению минимума погрешности E, который, однако, необязательно будет глобальным минимумом.
На вероятность отыскания глобального минимума влияет выбор начальных значений uki и Ci.
Специально для подбора "хороших" начальных значений центров Ci разработаны процедуры инициализации, две из которых представлены ниже.
Для отыскания "первого приближения" к наилучшему расположению центров Ci в данном алгоритме используются так называемые пиковые функции.
При подаче на вход сети p обучающих векторов Xk создается равномерная сетка, покрывающая все пространство, занимаемое данными векторами.
Узлы сетки обозначим как Vl, для каждого из них рассчитывается значение пиковой функции
m(Vl)=sum[k=1:p](exp(-(|Xk-Vl|22*b/(2*s2)))),
где s - константа, индивидуально подбираемая для каждой задачи.
Значение m(Vl) пропорционально количеству обучающих векторов Xk, находящихся в окрестности потенциального центра Vl.
Малое значение m(Vl) говорит о том, что Vl в области, где количество векторов Xk мало.
Следует отметить, что коэффициент s оказывает незначитетьное влияние на соотношение значений Vl для разных узлов сетки, поэтому подбор его величины не является критичным.
|
|
После расчета m(Vl) для всех потенциальных центров (узлов сетки) отбирается узел, имеющий наибольшее значение пиковой функции.
С этим узлом отождествляется первый центр C1.
Для выбора аналогичным образом следующего центра из рассмотрения исключается центр C1 и соседние с ним узлы сетки.
Это удобно сделать переопределением пиковой функции
mnew(Vl)=m(Vl)-m(C1)*exp(-(|Vl-C1|2*b/(2*s2))),
где m(C1) - значение пиковой функции в центре C1.
Процесс последовательного отыскания центров C1, C2, C3,... завершается после обнаружения центра CM.
Основной недостаток алгоритма пикового группирования - экспоненциальный рост сложности с увеличением размерности векторов входных данных Xk.
Следовательно, он применим лишь при при небольшом количестве входных сигналов N.
Представленный далее алгоритм также имеет экспоненциальный рост сложности, но это рост в зависимости от количества обучающих выборок p.
В этом алгоритме в качестве потенциальных центров рассматриваются обучающие векторы Xk, k =1, 2,..., p.
Пиковая функция m(Xi) определяется в следующем виде
m(Xi)=sum[k=1:p](exp(-(|Xk-Xi|2*b/(r1/2)2))),
где значение коэффициента r1 определяет размер сферы соседства.
При большой плотности входных векторов вокруг Xi значение функции велико, и, напротив, малое значение m(Xi) свидетельствует о незначительном количестве соседей.
После расчета значений m(Xi) для всех входных векторов в качестве первого центра C1 принимается Xi с наибольшим значением пиковой функции.
Для отыскания второго центра используется модифицированная пиковая функция в виде
mnew(Xi)=m(Xi)-m(C1)*exp(-(|Xi-C1|22*b/(r2/2)2)),
где r2 задает новый размер сферы соседства, обычно r2>=r1.
Пиковая функция mnew(Xi) принимает нулевое значение для Xi=C1.