Уровень алгоритма

Участник:Demon smd/Нечеткий алгоритм С средних: различия между версиями

Материал из Алговики
Перейти к навигации Перейти к поиску
Строка 60: Строка 60:
* Нормализация всех коэффициентов принадлежности объекта производится по формуле: <math>u_{i,j} = {u_{i,j} \over \sum_{j = 1}^{C}{u_{i,j}}} </math>
* Нормализация всех коэффициентов принадлежности объекта производится по формуле: <math>u_{i,j} = {u_{i,j} \over \sum_{j = 1}^{C}{u_{i,j}}} </math>


* Решающая функция рассчитывается по формуле: <math>\max_{i,j}(|u_{i,j}^(k) - u_{i,j}^(k-1)|)</math>, где <math>k</math> - номер итерации алгоритма
* Решающая функция рассчитывается по формуле: <math>\max_{i,j}(|u_{i,j}^{(k)} - u_{i,j}^{(k-1)}|)</math>, где <math>k</math> - номер итерации алгоритма


== Литература ==
== Литература ==


<references \>
<references \>

Версия от 16:50, 25 сентября 2016


Нечткий алгоритм C средних (Fuzzy C-means)
Последовательный алгоритм
Последовательная сложность [math]\displaystyle{ - }[/math]
Объём входных данных [math]\displaystyle{ - }[/math]
Объём выходных данных [math]\displaystyle{ - }[/math]
Параллельный алгоритм
Высота ярусно-параллельной формы [math]\displaystyle{ - }[/math]
Ширина ярусно-параллельной формы [math]\displaystyle{ - }[/math]


Авторы описания алгоритма: Д.А.Гуськов

Свойства и структура алгоритма

Общее описание алгоритма

Нечёткий алгоритм кластеризации С-средних был разработан (для случая m=2) J.C. Dunn в 1973 г. [1] и усовершенствован (для случая m>1) J.C. Bezdek в 1981 г. [2] . В отличие от алгоритма c-means Данный метод кластеризации предполагает, что входные данные могут принадлежать более, чем одному кластеру одновременно. Алгоритм получает на вход набор кластеризируемых векторов, количество кластеров, коэффициент неопределённости m и коэффициент [math]\displaystyle{ \varepsilon \gt 0 }[/math], определяющий точность алгоритма. На выходе алгоритма получаем матрицу вероятностей принадлежности каждого входного вектора каждому кластеру.

Нечеткий алгоритм С средних для каждого вектора определяет случайным образом значения принадлежности вектора к каждому кластеру и запускает итерационный процесс, на каждой итерации которого происходит:

1) Расчёт центров кластеров.

2) Расчёт Евклидова расстояния от каждого вектора до центра каждого кластера

3) Расчёт и нормализация коэффициентов принадлежности векторов кластерам

4) Расчёт значения решающей функции и сравнение этого значения со значением решающей функции на предшествующей итерации.Если их разница меньше установленного значения, то алгоритм прекращает работу. Решающая функция возвращает сумму всех Евклидовых расстояний каждого объекта к каждому центру кластера умноженному на коэффициент принадлежности

Математическое описание алгоритма

Нечеткий алгоритм С средних минимизирует величину:

[math]\displaystyle{ \begin{align} J_{m} = \sum_{i = 1}^{N}\sum_{j = 1}^{C}u_{i,j}^m\left\Vert{x_{i}-c_{j}}\right\|^2 & & , & & 1 \le m \le \infty & ; \\ \end{align} }[/math]

где m - это действительное число не меньше единицы, [math]\displaystyle{ u_{i,j} }[/math] - коэффициент принадлежности вектора [math]\displaystyle{ x_{i} }[/math] к кластеру [math]\displaystyle{ c_{j} }[/math], [math]\displaystyle{ x_{i} }[/math] - [math]\displaystyle{ i }[/math]-ый компонент [math]\displaystyle{ N }[/math]-мерного вектора [math]\displaystyle{ x }[/math], [math]\displaystyle{ c_{j} }[/math] - центр [math]\displaystyle{ j }[/math]-ого кластера, а [math]\displaystyle{ \left\Vert{*}\right\| }[/math] - это любая норма, определяющая расстояние от вектора до центра кластера. Нечёткое разбиение входных данных на кластеры производится итеративной оптимизацией вышеуказанной функции с обновлением коэффициента принадлежности [math]\displaystyle{ u_{i,j} }[/math] и переопределением центра кластера [math]\displaystyle{ c_{j} }[/math] на каждой итерации алгоритма.

Входные данные алгоритма

  • [math]\displaystyle{ x_{i} }[/math] - набор входных векторов
  • [math]\displaystyle{ C }[/math] - количество кластеров
  • [math]\displaystyle{ m }[/math] - коэффициент неопределённости
  • [math]\displaystyle{ \varepsilon \gt 0 }[/math] - коэффициент, определяющий точность алгоритма.

Выходные данные алгоритма

  • [math]\displaystyle{ u }[/math] - матрица принадлежности векторов кластерам

Вычисляемые данные

  • Центры кластеров рассчитываются по следующей формуле: [math]\displaystyle{ c_{j} = {{\sum_{i = 1}^{n}{u_{i,j}^m} * x_{i}} \over {\sum_{i = 1}^{n}{u_{i,j}^m}}} }[/math], где [math]\displaystyle{ u_{i,j} }[/math] — коэффициент принадлежности [math]\displaystyle{ x_{i} }[/math] вектора к кластеру [math]\displaystyle{ c_{j} }[/math].
  • Евклидово расстояние от вектора [math]\displaystyle{ x_{i} }[/math] до центра кластера [math]\displaystyle{ c_{j} }[/math] рассчитывается по формуле: [math]\displaystyle{ \left\Vert{x_{i}-c_{j}}\right\|^2 }[/math]
  • Коэффициент принадлежности рассчитывается по формуле: [math]\displaystyle{ u_{i,j} = {1 \over \sum_{k = 1}^{C}{({\left\Vert{x_{i}-c_{j}}\right\| \over \left\Vert{x_{i}-c_{k}}\right\|})}^{2 \over m-1}} }[/math]
  • Нормализация всех коэффициентов принадлежности объекта производится по формуле: [math]\displaystyle{ u_{i,j} = {u_{i,j} \over \sum_{j = 1}^{C}{u_{i,j}}} }[/math]
  • Решающая функция рассчитывается по формуле: [math]\displaystyle{ \max_{i,j}(|u_{i,j}^{(k)} - u_{i,j}^{(k-1)}|) }[/math], где [math]\displaystyle{ k }[/math] - номер итерации алгоритма

Литература

<references \>

  1. ↑ Dunn, J. C. (1973-01-01). "A Fuzzy Relative of the ISODATA Process and Its Use in Detecting Compact Well-Separated Clusters". Journal of Cybernetics. 3 (3): 32–57. doi:10.1080/01969727308546046. ISSN 0022-0280.
  2. ↑ Bezdek, James C. (1981). Pattern Recognition with Fuzzy Objective Function Algorithms. ISBN 0-306-40671-3.