Алгоритм ФорЭл

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
 
(20 промежуточных версий не показаны.)
Строка 2: Строка 2:
=Цель кластеризации=
=Цель кластеризации=
-
Разбить выборку на такое (заранее неизвестное число) таксонов, чтобы сумма расстояний от объектов кластеров до центров кластеров была минимальной по всем кластерам.
+
Разбить [[Выборка |выборку]] на такое (заранее неизвестное число) таксонов, чтобы сумма расстояний от объектов кластеров до центров кластеров была минимальной по всем кластерам.
Т.е. наша задача - выделить группы максимально близких друг к другу объектов, которые в силу гипотезы схожести и будут образовывать наши кластеры.
Т.е. наша задача - выделить группы максимально близких друг к другу объектов, которые в силу гипотезы схожести и будут образовывать наши кластеры.
-
=Минимзируемый алгоритмом функционал качества=
+
=Минимизируемый алгоритмом функционал качества=
: <tex>F=\sum_{j=1}^k \sum_{x \in K_j}\rho(x,W_j),</tex>,
: <tex>F=\sum_{j=1}^k \sum_{x \in K_j}\rho(x,W_j),</tex>,
Строка 11: Строка 11:
=Необходимые условия работы=
=Необходимые условия работы=
-
*Выполнение принципа сходства
+
*Выполнение [[гипотеза компактности|гипотезы компактности]], предполагающей, что близкие друг к другу объекты с большой вероятностью принадлежат к одному кластеру (таксону).
-
Это означает, что близкие друг к другу объекты с большой вероятностью принадлежат к одному кластеру (таксону).
+
*Наличие линейного или метрического пространства кластеризуемых объектов
*Наличие линейного или метрического пространства кластеризуемых объектов
=Входные данные=
=Входные данные=
*Кластеризуемая выборка
*Кластеризуемая выборка
-
Может быть задана признаковыми описаниями объектов - линейное пространство либо матрицей попарных расстояний между объектами.
+
Может быть задана признаковыми описаниями объектов - линейное пространство либо матрицей попарных расстояний между объектами. <br />
-
''Замечание:'' в реальных задачах зачастую храниние всех данных невозможно или бессмыслено, поэтому необходимые данные собираются в процессе кластеризации
+
''Замечание:'' в реальных задачах зачастую хранение всех данных невозможно или бессмыслено, поэтому необходимые данные собираются в процессе кластеризации
*Параметр R - радиус поиска локальных сгущений
*Параметр R - радиус поиска локальных сгущений
Его можно задавать как из априорных соображений (знание о диаметре кластеров), так и настраивать скользящим контролем.
Его можно задавать как из априорных соображений (знание о диаметре кластеров), так и настраивать скользящим контролем.
Строка 30: Строка 29:
=Алгоритм=
=Алгоритм=
-
***Случайно выбираем объект из выборки
+
#Случайно выбираем текущий объект из выборки
-
***Помечаем объекты находящиеся на расстоянии менее, чем R от текущего
+
#Помечаем объекты выборки, находящиеся на расстоянии менее, чем R от текущего
-
***Вычисляем их центр тяжести, помечаем этот центр как новый текущий объект
+
#Вычисляем их центр тяжести, помечаем этот центр как новый текущий объект
-
**Повторяем пока новый текущий объект не совпадет с прежним
+
#Повторяем шаги 2-3, пока новый текущий объект не совпадет с прежним
-
**Помечаем объекты внутри сферы радиуса R вокруг текущего объекта как кластеризованные, выкидываем их из выборки
+
#Помечаем объекты внутри сферы радиуса R вокруг текущего объекта как кластеризованные, выкидываем их из выборки
-
*Повторяем, пока не будет кластеризована вся выборка
+
#Повторяем шаги 1-5, пока не будет кластеризована вся выборка
 +
 
 +
<source lang="matlab">
 +
#define R 30 //ширина поиска локальных сгущений - входной параметр алгоритма
 +
Clustering_not_finish(); //все ли объекты кластеризованы
 +
Rand_object(); //возвращает произвольный некластеризованный объект
 +
Generate_same_object(type *object); //возвращает массив объектов, расположенных на расстоянии <= R от текущего
 +
Center_of_objects(type *mas_of_objects); //возвращает центр тяжести указанных объектов
 +
Delete_objects(type *mas_of_objects); //удаляет указанные объекты из выборки (мы их уже кластеризовали)
 +
 
 +
while(Clustering_not_finish())
 +
{
 +
currently_object = Rand_object();
 +
mas_of_same_objects = Generate_same_object(currently_object);
 +
center_object = Center_of_objects(mas_of_same_objects);
 +
 +
while (center_object != currently_object) //пока центр тяжести не стабилизируется
 +
{
 +
currently_object = center_object;
 +
mas_of_same_objects = Generate_same_object(currently_object);
 +
center_object = Center_of_objects(mas_of_same_objects);
 +
}
 +
Delete_objects(mas_of_same_objects);
 +
}</source>
=Эвристики выбора центра тяжести=
=Эвристики выбора центра тяжести=
Строка 51: Строка 73:
*При повторении итераций возможно уменьшение параметра R, для скорейшей сходимости
*При повторении итераций возможно уменьшение параметра R, для скорейшей сходимости
*Кластеризация сильно зависит от начального приближения (выбора объекта на первом шаге)
*Кластеризация сильно зависит от начального приближения (выбора объекта на первом шаге)
 +
*Рекомендуется повторная прогонка алгоритма для исключения ситуации "плохой" кластеризации, по причине неудачного выбора начальных объектов
=Модификации=
=Модификации=
 +
 +
=Преимущества=
 +
#Точность минимизации функционала качества (при удачном подборе параметра R)
 +
#Наглядность визуализации кластеризации
 +
#Сходимость алгоритма
 +
#Возможность операций над центрами кластеров - они известны в процессе работы алгоритма
 +
#Возможность подсчета промежуточных функционалов качества, например, длины цепочки локальных сгущений
 +
#Возможность проверки гипотез схожести и компактности в процессе работы алгоритма
 +
 +
=Недостатки=
 +
#Относительно низкая производительность (решается введение функции пересчета поиска центра при добавлении 1 объекта внутрь сферы)
 +
#Плохая применимость алгоритма при плохой разделимости выборки на кластеры
 +
#Неустойчивость алгоритма (зависимость от выбора начального объекта)
 +
#Произвольное по количеству разбиение на кластеры
 +
#Необходимость априорных знаний о ширине (диаметре) кластеров
 +
 +
=Надстройки=
 +
После работы алгоритма над готовой кластеризацией можно производить некоторые действия
 +
#Выбор наиболее репрезентативных (представительных) объектов из каждого кластера. Можно выбирать центры кластеров, можно несколько объектов из каждого кластера, учитывая априорные знания о необходимой репрезентативности выборки. Т.О. по готовой кластеризации мы имеем возможность строить наиболее репрезентативную выборку
 +
#Пересчет кластеризации (многоуровненвость) с использованием метода КНП
 +
 +
=Область примениния=
 +
#Решение задач кластеризации
 +
#Решение задач ранжирования выборки
=Литература=
=Литература=
Строка 58: Строка 105:
#Прикладные методы анализа данных и знаний Новосибирск Н.Г.Загоруйко: Изд-во Ин-та математики, 1999, 270 с. ISBN 5-86134-060-9
#Прикладные методы анализа данных и знаний Новосибирск Н.Г.Загоруйко: Изд-во Ин-та математики, 1999, 270 с. ISBN 5-86134-060-9
-
{{Задание|Rooney|Константин Воронцов|4 января 2010}}
+
=Ссылки=
 +
http://en.wikipedia.org/wiki/Cluster_analysis
 +
 
 +
[[Категория:Кластеризация]]

Текущая версия

FOREL (Формальный Элемент) - алгоритм кластеризации, основанный на идее объединения в один кластер объектов в областях их наибольшего сгущения.

Содержание

Цель кластеризации

Разбить выборку на такое (заранее неизвестное число) таксонов, чтобы сумма расстояний от объектов кластеров до центров кластеров была минимальной по всем кластерам. Т.е. наша задача - выделить группы максимально близких друг к другу объектов, которые в силу гипотезы схожести и будут образовывать наши кластеры.

Минимизируемый алгоритмом функционал качества

F=\sum_{j=1}^k \sum_{x \in K_j}\rho(x,W_j),,

где первое суммирование ведется по всем кластерам выборки, второе суммирование - по всем объектам x, принадлежащим текущему кластеруK_j, а W_j - центр текущего кластера, \rho(x,y) - расстояние между объектами.

Необходимые условия работы

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

Входные данные

  • Кластеризуемая выборка

Может быть задана признаковыми описаниями объектов - линейное пространство либо матрицей попарных расстояний между объектами.
Замечание: в реальных задачах зачастую хранение всех данных невозможно или бессмыслено, поэтому необходимые данные собираются в процессе кластеризации

  • Параметр R - радиус поиска локальных сгущений

Его можно задавать как из априорных соображений (знание о диаметре кластеров), так и настраивать скользящим контролем.

  • В модификациях возможно введение параметра k - количества кластеров

Выходные данные

Кластеризация на заранее неизвестное число таксонов

Принцип работы

На каждом шаге мы случайным образом выбираем объект из выборки, раздуваем вокруг него сферу радиуса R, внутри этой сферы выбираем центр тяжести и делаем его центром новой сферы. Т.о. мы на каждом шаге двигаем сферу в сторону локального сгущения объектов выбоки, т.е. стараемся захватить как можно больше объектов выборки сферой фиксированного радиуса. После того как центр сферы стабилизируется, все объекты внутри сферы с этим центром мы помечаем как кластеризованные и выкидываем их из выборки. Этот процесс мы повторяем до тех пор, пока вся выборка не будет кластеризована.

Алгоритм

  1. Случайно выбираем текущий объект из выборки
  2. Помечаем объекты выборки, находящиеся на расстоянии менее, чем R от текущего
  3. Вычисляем их центр тяжести, помечаем этот центр как новый текущий объект
  4. Повторяем шаги 2-3, пока новый текущий объект не совпадет с прежним
  5. Помечаем объекты внутри сферы радиуса R вокруг текущего объекта как кластеризованные, выкидываем их из выборки
  6. Повторяем шаги 1-5, пока не будет кластеризована вся выборка
#define R 30     //ширина поиска локальных сгущений - входной параметр алгоритма
Clustering_not_finish();      //все ли объекты кластеризованы
Rand_object();      //возвращает произвольный некластеризованный объект
Generate_same_object(type *object);     //возвращает массив объектов, расположенных на расстоянии <= R от текущего
Center_of_objects(type *mas_of_objects);      //возвращает центр тяжести указанных объектов
Delete_objects(type *mas_of_objects);    //удаляет указанные объекты из выборки (мы их уже кластеризовали)
 
while(Clustering_not_finish())
{
   currently_object = Rand_object();
   mas_of_same_objects = Generate_same_object(currently_object); 
   center_object = Center_of_objects(mas_of_same_objects);
 
   while (center_object != currently_object)  //пока центр тяжести не стабилизируется
   {
      currently_object = center_object;
      mas_of_same_objects = Generate_same_object(currently_object);
      center_object = Center_of_objects(mas_of_same_objects);
   } 
   Delete_objects(mas_of_same_objects);
}

Эвристики выбора центра тяжести

  • В линейном пространстве - центр масс
  • В метрическом пространстве - объект, сумма расстояний до которого минимальна, среди всех внутри сферы
  • Объект, который внутри сферы радиуса R содержит максимальное количество других объектов из всей выборки (медленно)
  • Объект, который внутри сферы маленького радиуса содержит максимальное количество объектов (из сферы радиуса R)

Наблюдения

  • Доказана сходимость алгоритма за конечное число шагов
  • В линейном прстранстве центром тяжести может выступать произвольная точка пространства, в метрическом - только объект выборки
  • Чем меньше R, тем больше таксонов (кластеров)
  • В линейном пространстве поиск центра происходит за время О(n), в метрическом O(n²)
  • Наилучших результатов алгоритм достигает на выборках с хорошим выполнением условий компактности
  • При повторении итераций возможно уменьшение параметра R, для скорейшей сходимости
  • Кластеризация сильно зависит от начального приближения (выбора объекта на первом шаге)
  • Рекомендуется повторная прогонка алгоритма для исключения ситуации "плохой" кластеризации, по причине неудачного выбора начальных объектов

Модификации

Преимущества

  1. Точность минимизации функционала качества (при удачном подборе параметра R)
  2. Наглядность визуализации кластеризации
  3. Сходимость алгоритма
  4. Возможность операций над центрами кластеров - они известны в процессе работы алгоритма
  5. Возможность подсчета промежуточных функционалов качества, например, длины цепочки локальных сгущений
  6. Возможность проверки гипотез схожести и компактности в процессе работы алгоритма

Недостатки

  1. Относительно низкая производительность (решается введение функции пересчета поиска центра при добавлении 1 объекта внутрь сферы)
  2. Плохая применимость алгоритма при плохой разделимости выборки на кластеры
  3. Неустойчивость алгоритма (зависимость от выбора начального объекта)
  4. Произвольное по количеству разбиение на кластеры
  5. Необходимость априорных знаний о ширине (диаметре) кластеров

Надстройки

После работы алгоритма над готовой кластеризацией можно производить некоторые действия

  1. Выбор наиболее репрезентативных (представительных) объектов из каждого кластера. Можно выбирать центры кластеров, можно несколько объектов из каждого кластера, учитывая априорные знания о необходимой репрезентативности выборки. Т.О. по готовой кластеризации мы имеем возможность строить наиболее репрезентативную выборку
  2. Пересчет кластеризации (многоуровненвость) с использованием метода КНП

Область примениния

  1. Решение задач кластеризации
  2. Решение задач ранжирования выборки

Литература

  1. Лекции по алгоритмам кластеризации и многомерного шкалирования К.В.Воронцов
  2. Прикладные методы анализа данных и знаний Новосибирск Н.Г.Загоруйко: Изд-во Ин-та математики, 1999, 270 с. ISBN 5-86134-060-9

Ссылки

http://en.wikipedia.org/wiki/Cluster_analysis