<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0+%D0%90%D0%BD%D0%BD%D0%B0</id>
	<title>Алговики - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0+%D0%90%D0%BD%D0%BD%D0%B0"/>
	<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/ru/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0_%D0%90%D0%BD%D0%BD%D0%B0"/>
	<updated>2026-10-23T05:26:35Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0_%D0%90%D0%BD%D0%BD%D0%B0&amp;diff=13590</id>
		<title>Участник:Дельцова Анна</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0_%D0%90%D0%BD%D0%BD%D0%B0&amp;diff=13590"/>
		<updated>2016-10-23T22:02:36Z</updated>

		<summary type="html">&lt;p&gt;Дельцова Анна: Новая страница: «604 группа ВМК МГУ»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;604 группа ВМК МГУ&lt;/div&gt;</summary>
		<author><name>Дельцова Анна</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13588</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13588"/>
		<updated>2016-10-23T21:53:55Z</updated>

		<summary type="html">&lt;p&gt;Дельцова Анна: /* Схема реализации последовательного алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: Добровецкий Д.И., Дельцова А.В.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля точек загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек &amp;lt;math&amp;gt;p_{j}&amp;lt;/math&amp;gt;, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество;&lt;br /&gt;
&lt;br /&gt;
2) выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины;&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
&lt;br /&gt;
1) выберем произвольную точку кластера и назначим её представителем; &lt;br /&gt;
&lt;br /&gt;
2) пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек;&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; вычисляется расстояние до каждого представителя и её добавление в поддерево кластера, которому принадлежит ближайший для неё представитель.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Вычислительное ядро алгоритма представляет собой итерационное построение заданного числа кластеров, вычисление их центроид и назначение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Основную часть метода составляют разбиение некоторого числа входных точек на заданное число кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:1.5_Deltsova.png|800px|thumb|center|Схема работы реализации алгоритма CURE]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм CURE в общем случае имеет сложность &amp;lt;math&amp;gt;O(n^2 logn)&amp;lt;/math&amp;gt;. Для двумерного же пространства его сложность равняется &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Алгоритм CURE выполняет агломеративную кластеризацию, последовательно объединяя исходные элементы в кластеры по некоторому критерию &amp;quot;похожести&amp;quot;, пока не будет достигнуто необходимое число кластеров.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Inform_graf.png|600px|thumb|center| Дендрограмма иерархических методов кластеризации]]&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
 &lt;br /&gt;
Возможности распараллеливания алгоритма имеются на следующих его шагах:&lt;br /&gt;
&lt;br /&gt;
* вычисления центроид для каждого кластера;&lt;br /&gt;
* расчет расстояний между кластерами;&lt;br /&gt;
* нахождение точек-представителей для каждого кластера;&lt;br /&gt;
* сдвиг точек-представителей каждого кластера к его центроиде; &lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей каждого кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек-представителей к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля входных точек, загружаемых на 1-м шаге алгоритма в оперативную память.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: дерево, из корня которого выходят &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; ветвей, являющиеся искомыми кластерами, а листьями этого дерева являются точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Недостатки&#039;&#039;&#039; &lt;br /&gt;
* необходимо задавать пороговые значения и количество кластеров;&lt;br /&gt;
* эффективен только для данных низкой размерности;&lt;br /&gt;
* работает только на числовых данных;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Достоинства&#039;&#039;&#039; &lt;br /&gt;
* выполняет кластеризацию на высоком уровне даже при наличии выбросов;&lt;br /&gt;
* выделяет кластеры сложной формы и различных размеров;&lt;br /&gt;
* обладает линейно зависимыми требованиями к месту хранения данных;&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Последовательная реализация алгоритма CURE на Python/C++ представлена в пакете: [https://github.com/annoviko/pyclustering pyclustering].&lt;br /&gt;
&lt;br /&gt;
Также существует параллельная реализация алгоритма, описанная в сборнике [3].&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
[1] Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. - СПб.: БХВ-Петербург, 2002. - 608 с.&lt;br /&gt;
&lt;br /&gt;
[2] Guha, Sudipto; Rastogi, Rajeev; Shim, Kyuseok (2001). &amp;quot;CURE: An Efficient Clustering Algorithm for Large Databases&amp;quot;. Information Systems. 26 (1): 35–58.&lt;br /&gt;
&lt;br /&gt;
[3] Panagiotis E. Hadjidoukas, Laurent Amsaleg. OpenMP Shared Memory Parallel Programming.&lt;br /&gt;
Volume 4315 of the series Lecture Notes in Computer Science pp 289-299&lt;br /&gt;
Parallelization of a Hierarchical Data Clustering Algorithm Using OpenMP&lt;/div&gt;</summary>
		<author><name>Дельцова Анна</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13587</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13587"/>
		<updated>2016-10-23T21:53:11Z</updated>

		<summary type="html">&lt;p&gt;Дельцова Анна: /* Схема реализации последовательного алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: Добровецкий Д.И., Дельцова А.В.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля точек загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек &amp;lt;math&amp;gt;p_{j}&amp;lt;/math&amp;gt;, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество;&lt;br /&gt;
&lt;br /&gt;
2) выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины;&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
&lt;br /&gt;
1) выберем произвольную точку кластера и назначим её представителем; &lt;br /&gt;
&lt;br /&gt;
2) пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек;&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; вычисляется расстояние до каждого представителя и её добавление в поддерево кластера, которому принадлежит ближайший для неё представитель.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Вычислительное ядро алгоритма представляет собой итерационное построение заданного числа кластеров, вычисление их центроид и назначение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Основную часть метода составляют разбиение некоторого числа входных точек на заданное число кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:1.5_Deltsova.png|800px|thumb|left|Схема работы реализации алгоритма CURE]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм CURE в общем случае имеет сложность &amp;lt;math&amp;gt;O(n^2 logn)&amp;lt;/math&amp;gt;. Для двумерного же пространства его сложность равняется &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Алгоритм CURE выполняет агломеративную кластеризацию, последовательно объединяя исходные элементы в кластеры по некоторому критерию &amp;quot;похожести&amp;quot;, пока не будет достигнуто необходимое число кластеров.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Inform_graf.png|600px|thumb|center| Дендрограмма иерархических методов кластеризации]]&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
 &lt;br /&gt;
Возможности распараллеливания алгоритма имеются на следующих его шагах:&lt;br /&gt;
&lt;br /&gt;
* вычисления центроид для каждого кластера;&lt;br /&gt;
* расчет расстояний между кластерами;&lt;br /&gt;
* нахождение точек-представителей для каждого кластера;&lt;br /&gt;
* сдвиг точек-представителей каждого кластера к его центроиде; &lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей каждого кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек-представителей к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля входных точек, загружаемых на 1-м шаге алгоритма в оперативную память.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: дерево, из корня которого выходят &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; ветвей, являющиеся искомыми кластерами, а листьями этого дерева являются точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Недостатки&#039;&#039;&#039; &lt;br /&gt;
* необходимо задавать пороговые значения и количество кластеров;&lt;br /&gt;
* эффективен только для данных низкой размерности;&lt;br /&gt;
* работает только на числовых данных;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Достоинства&#039;&#039;&#039; &lt;br /&gt;
* выполняет кластеризацию на высоком уровне даже при наличии выбросов;&lt;br /&gt;
* выделяет кластеры сложной формы и различных размеров;&lt;br /&gt;
* обладает линейно зависимыми требованиями к месту хранения данных;&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Последовательная реализация алгоритма CURE на Python/C++ представлена в пакете: [https://github.com/annoviko/pyclustering pyclustering].&lt;br /&gt;
&lt;br /&gt;
Также существует параллельная реализация алгоритма, описанная в сборнике [3].&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
[1] Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. - СПб.: БХВ-Петербург, 2002. - 608 с.&lt;br /&gt;
&lt;br /&gt;
[2] Guha, Sudipto; Rastogi, Rajeev; Shim, Kyuseok (2001). &amp;quot;CURE: An Efficient Clustering Algorithm for Large Databases&amp;quot;. Information Systems. 26 (1): 35–58.&lt;br /&gt;
&lt;br /&gt;
[3] Panagiotis E. Hadjidoukas, Laurent Amsaleg. OpenMP Shared Memory Parallel Programming.&lt;br /&gt;
Volume 4315 of the series Lecture Notes in Computer Science pp 289-299&lt;br /&gt;
Parallelization of a Hierarchical Data Clustering Algorithm Using OpenMP&lt;/div&gt;</summary>
		<author><name>Дельцова Анна</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13571</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13571"/>
		<updated>2016-10-23T20:47:16Z</updated>

		<summary type="html">&lt;p&gt;Дельцова Анна: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: Добровецкий Д.И., Дельцова А.В.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля точек загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек &amp;lt;math&amp;gt;p_{j}&amp;lt;/math&amp;gt;, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество;&lt;br /&gt;
&lt;br /&gt;
2) выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины;&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
&lt;br /&gt;
1) выберем произвольную точку кластера и назначим её представителем; &lt;br /&gt;
&lt;br /&gt;
2) пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек;&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; вычисляется расстояние до каждого представителя и её добавление в поддерево кластера, которому принадлежит ближайший для неё представитель.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Вычислительное ядро алгоритма представляет собой итерационное построение заданного числа кластеров, вычисление их центроид и назначение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Основную часть метода составляют разбиение некоторого числа входных точек на заданное число кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм CURE в общем случае имеет сложность &amp;lt;math&amp;gt;O(n^2 logn)&amp;lt;/math&amp;gt;. Для двумерного же пространства его сложность равняется &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Алгоритм CURE выполняет агломеративную кластеризацию, последовательно объединяя исходные элементы в кластеры по некоторому критерию &amp;quot;похожести&amp;quot;, пока не будет достигнуто необходимое число кластеров.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Inform_graf.png|600px|thumb|center| Дендрограмма иерархических методов кластеризации]]&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
 &lt;br /&gt;
Возможности распараллеливания алгоритма имеются на следующих его шагах:&lt;br /&gt;
&lt;br /&gt;
* вычисления центроид для каждого кластера;&lt;br /&gt;
* расчет расстояний между кластерами;&lt;br /&gt;
* нахождение точек-представителей для каждого кластера;&lt;br /&gt;
* сдвиг точек-представителей каждого кластера к его центроиде; &lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей каждого кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек-представителей к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля входных точек, загружаемых на 1-м шаге алгоритма в оперативную память.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: дерево, из корня которого выходят &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; ветвей, являющиеся искомыми кластерами, а листьями этого дерева являются точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Недостатки&#039;&#039;&#039; &lt;br /&gt;
* необходимо задавать пороговые значения и количество кластеров;&lt;br /&gt;
* эффективен только для данных низкой размерности;&lt;br /&gt;
* работает только на числовых данных;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Достоинства&#039;&#039;&#039; &lt;br /&gt;
* выполняет кластеризацию на высоком уровне даже при наличии выбросов;&lt;br /&gt;
* выделяет кластеры сложной формы и различных размеров;&lt;br /&gt;
* обладает линейно зависимыми требованиями к месту хранения данных;&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Дельцова Анна</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13570</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13570"/>
		<updated>2016-10-23T20:46:58Z</updated>

		<summary type="html">&lt;p&gt;Дельцова Анна: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: Добровецкий Д.И., Дельцова А.В.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля точек загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек &amp;lt;math&amp;gt;p_{j}&amp;lt;/math&amp;gt;, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество;&lt;br /&gt;
&lt;br /&gt;
2) выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины;&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
&lt;br /&gt;
1) выберем произвольную точку кластера и назначим её представителем; &lt;br /&gt;
&lt;br /&gt;
2) пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек;&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; вычисляется расстояние до каждого представителя и её добавление в поддерево кластера, которому принадлежит ближайший для неё представитель.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Вычислительное ядро алгоритма представляет собой итерационное построение заданного числа кластеров, вычисление их центроид и назначение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Основную часть метода составляют разбиение некоторого числа входных точек на заданное число кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм CURE в общем случае имеет сложность &amp;lt;math&amp;gt;O(n^2 logn)&amp;lt;/math&amp;gt;. Для двумерного же пространства его сложность равняется &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Алгоритм CURE выполняет агломеративную кластеризацию, последовательно объединяя исходные элементы в кластеры по некоторому критерию &amp;quot;похожести&amp;quot;, пока не будет достигнуто необходимое число кластеров.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Inform_graf.png|800px|thumb|center| Дендрограмма иерархических методов кластеризации]]&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
 &lt;br /&gt;
Возможности распараллеливания алгоритма имеются на следующих его шагах:&lt;br /&gt;
&lt;br /&gt;
* вычисления центроид для каждого кластера;&lt;br /&gt;
* расчет расстояний между кластерами;&lt;br /&gt;
* нахождение точек-представителей для каждого кластера;&lt;br /&gt;
* сдвиг точек-представителей каждого кластера к его центроиде; &lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей каждого кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек-представителей к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля входных точек, загружаемых на 1-м шаге алгоритма в оперативную память.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: дерево, из корня которого выходят &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; ветвей, являющиеся искомыми кластерами, а листьями этого дерева являются точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Недостатки&#039;&#039;&#039; &lt;br /&gt;
* необходимо задавать пороговые значения и количество кластеров;&lt;br /&gt;
* эффективен только для данных низкой размерности;&lt;br /&gt;
* работает только на числовых данных;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Достоинства&#039;&#039;&#039; &lt;br /&gt;
* выполняет кластеризацию на высоком уровне даже при наличии выбросов;&lt;br /&gt;
* выделяет кластеры сложной формы и различных размеров;&lt;br /&gt;
* обладает линейно зависимыми требованиями к месту хранения данных;&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Дельцова Анна</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13569</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13569"/>
		<updated>2016-10-23T20:45:27Z</updated>

		<summary type="html">&lt;p&gt;Дельцова Анна: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: Добровецкий Д.И., Дельцова А.В.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля точек загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек &amp;lt;math&amp;gt;p_{j}&amp;lt;/math&amp;gt;, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество;&lt;br /&gt;
&lt;br /&gt;
2) выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины;&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
&lt;br /&gt;
1) выберем произвольную точку кластера и назначим её представителем; &lt;br /&gt;
&lt;br /&gt;
2) пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек;&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; вычисляется расстояние до каждого представителя и её добавление в поддерево кластера, которому принадлежит ближайший для неё представитель.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Вычислительное ядро алгоритма представляет собой итерационное построение заданного числа кластеров, вычисление их центроид и назначение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Основную часть метода составляют разбиение некоторого числа входных точек на заданное число кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм CURE в общем случае имеет сложность &amp;lt;math&amp;gt;O(n^2 logn)&amp;lt;/math&amp;gt;. Для двумерного же пространства его сложность равняется &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Алгоритм CURE выполняет агломеративную кластеризацию, последовательно объединяя исходные элементы в кластеры по некоторому критерию &amp;quot;похожести&amp;quot;, пока не будет достигнуто необходимое число кластеров.&lt;br /&gt;
&lt;br /&gt;
[Файл:Inform_graf.png|800px|thumb|center| Рисунок 1: Дендрограмма иерархических методов кластеризации]&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
 &lt;br /&gt;
Возможности распараллеливания алгоритма имеются на следующих его шагах:&lt;br /&gt;
&lt;br /&gt;
* вычисления центроид для каждого кластера;&lt;br /&gt;
* расчет расстояний между кластерами;&lt;br /&gt;
* нахождение точек-представителей для каждого кластера;&lt;br /&gt;
* сдвиг точек-представителей каждого кластера к его центроиде; &lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей каждого кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек-представителей к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля входных точек, загружаемых на 1-м шаге алгоритма в оперативную память.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: дерево, из корня которого выходят &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; ветвей, являющиеся искомыми кластерами, а листьями этого дерева являются точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Недостатки&#039;&#039;&#039; &lt;br /&gt;
* необходимо задавать пороговые значения и количество кластеров;&lt;br /&gt;
* эффективен только для данных низкой размерности;&lt;br /&gt;
* работает только на числовых данных;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Достоинства&#039;&#039;&#039; &lt;br /&gt;
* выполняет кластеризацию на высоком уровне даже при наличии выбросов;&lt;br /&gt;
* выделяет кластеры сложной формы и различных размеров;&lt;br /&gt;
* обладает линейно зависимыми требованиями к месту хранения данных;&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Дельцова Анна</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13566</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13566"/>
		<updated>2016-10-23T20:43:12Z</updated>

		<summary type="html">&lt;p&gt;Дельцова Анна: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: Добровецкий Д.И., Дельцова А.В.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля точек загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек &amp;lt;math&amp;gt;p_{j}&amp;lt;/math&amp;gt;, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество;&lt;br /&gt;
&lt;br /&gt;
2) выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины;&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
&lt;br /&gt;
1) выберем произвольную точку кластера и назначим её представителем; &lt;br /&gt;
&lt;br /&gt;
2) пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек;&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; вычисляется расстояние до каждого представителя и её добавление в поддерево кластера, которому принадлежит ближайший для неё представитель.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Вычислительное ядро алгоритма представляет собой итерационное построение заданного числа кластеров, вычисление их центроид и назначение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Основную часть метода составляют разбиение некоторого числа входных точек на заданное число кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм CURE в общем случае имеет сложность &amp;lt;math&amp;gt;O(n^2 logn)&amp;lt;/math&amp;gt;. Для двумерного же пространства его сложность равняется &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Алгоритм CURE выполняет агломеративную кластеризацию, последовательно объединяя исходные элементы в кластеры по некоторому критерию &amp;quot;похожести&amp;quot;, пока не будет достигнуто необходимое число кластеров.&lt;br /&gt;
&lt;br /&gt;
[[File:Inform_graf.png]]&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
 &lt;br /&gt;
Возможности распараллеливания алгоритма имеются на следующих его шагах:&lt;br /&gt;
&lt;br /&gt;
* вычисления центроид для каждого кластера;&lt;br /&gt;
* расчет расстояний между кластерами;&lt;br /&gt;
* нахождение точек-представителей для каждого кластера;&lt;br /&gt;
* сдвиг точек-представителей каждого кластера к его центроиде; &lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей каждого кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек-представителей к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля входных точек, загружаемых на 1-м шаге алгоритма в оперативную память.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: дерево, из корня которого выходят &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; ветвей, являющиеся искомыми кластерами, а листьями этого дерева являются точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Недостатки&#039;&#039;&#039; &lt;br /&gt;
* необходимо задавать пороговые значения и количество кластеров;&lt;br /&gt;
* эффективен только для данных низкой размерности;&lt;br /&gt;
* работает только на числовых данных;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Достоинства&#039;&#039;&#039; &lt;br /&gt;
* выполняет кластеризацию на высоком уровне даже при наличии выбросов;&lt;br /&gt;
* выделяет кластеры сложной формы и различных размеров;&lt;br /&gt;
* обладает линейно зависимыми требованиями к месту хранения данных;&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Дельцова Анна</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13562</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13562"/>
		<updated>2016-10-23T20:35:18Z</updated>

		<summary type="html">&lt;p&gt;Дельцова Анна: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: Добровецкий Д.И., Дельцова А.В.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля точек загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек &amp;lt;math&amp;gt;p_{j}&amp;lt;/math&amp;gt;, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество;&lt;br /&gt;
&lt;br /&gt;
2) выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины;&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
&lt;br /&gt;
1) выберем произвольную точку кластера и назначим её представителем; &lt;br /&gt;
&lt;br /&gt;
2) пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек;&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; вычисляется расстояние до каждого представителя и её добавление в поддерево кластера, которому принадлежит ближайший для неё представитель.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Вычислительное ядро алгоритма представляет собой итерационное построение заданного числа кластеров, вычисление их центроид и назначение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Основную часть метода составляют разбиение некоторого числа входных точек на заданное число кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм CURE в общем случае имеет сложность &amp;lt;math&amp;gt;O(n^2 logn)&amp;lt;/math&amp;gt;. Для двумерного же пространства его сложность равняется &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
[[File:Inform_graf.png]]&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
 &lt;br /&gt;
Возможности распараллеливания алгоритма имеются на следующих его шагах:&lt;br /&gt;
&lt;br /&gt;
* вычисления центроид для каждого кластера;&lt;br /&gt;
* расчет расстояний между кластерами;&lt;br /&gt;
* нахождение точек-представителей для каждого кластера;&lt;br /&gt;
* сдвиг точек-представителей каждого кластера к его центроиде; &lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей каждого кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек-представителей к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля входных точек, загружаемых на 1-м шаге алгоритма в оперативную память.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: дерево, из корня которого выходят &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; ветвей, являющиеся искомыми кластерами, а листьями этого дерева являются точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Недостатки&#039;&#039;&#039; &lt;br /&gt;
* необходимо задавать пороговые значения и количество кластеров;&lt;br /&gt;
* эффективен только для данных низкой размерности;&lt;br /&gt;
* работает только на числовых данных;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Достоинства&#039;&#039;&#039; &lt;br /&gt;
* выполняет кластеризацию на высоком уровне даже при наличии выбросов;&lt;br /&gt;
* выделяет кластеры сложной формы и различных размеров;&lt;br /&gt;
* обладает линейно зависимыми требованиями к месту хранения данных;&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Дельцова Анна</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13554</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13554"/>
		<updated>2016-10-23T19:38:55Z</updated>

		<summary type="html">&lt;p&gt;Дельцова Анна: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: Добровецкий Д.И., Дельцова А.В.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля точек загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек &amp;lt;math&amp;gt;p_{j}&amp;lt;/math&amp;gt;, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество;&lt;br /&gt;
&lt;br /&gt;
2) выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины;&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
&lt;br /&gt;
1) выберем произвольную точку кластера и назначим её представителем; &lt;br /&gt;
&lt;br /&gt;
2) пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек;&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; вычисляется расстояние до каждого представителя и её добавление в поддерево кластера, которому принадлежит ближайший для неё представитель.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Вычислительное ядро алгоритма представляет собой итерационное построение заданного числа кластеров, вычисление их центроид и назначение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Основную часть метода составляют разбиение некоторого числа входных точек на заданное число кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм CURE в общем случае имеет сложность &amp;lt;math&amp;gt;O(n^2 logn)&amp;lt;/math&amp;gt;. Для двумерного же пространства его сложность равняется &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
 &lt;br /&gt;
Возможности распараллеливания алгоритма имеются на следующих его шагах:&lt;br /&gt;
&lt;br /&gt;
* вычисления центроид для каждого кластера;&lt;br /&gt;
* расчет расстояний между кластерами;&lt;br /&gt;
* нахождение точек-представителей для каждого кластера;&lt;br /&gt;
* сдвиг точек-представителей каждого кластера к его центроиде; &lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей каждого кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек-представителей к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля входных точек, загружаемых на 1-м шаге алгоритма в оперативную память.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: дерево, из корня которого выходят &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; ветвей, являющиеся искомыми кластерами, а листьями этого дерева являются точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Недостатки&#039;&#039;&#039; &lt;br /&gt;
* необходимо задавать пороговые значения и количество кластеров;&lt;br /&gt;
* эффективен только для данных низкой размерности;&lt;br /&gt;
* работает только на числовых данных;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Достоинства&#039;&#039;&#039; &lt;br /&gt;
* выполняет кластеризацию на высоком уровне даже при наличии выбросов;&lt;br /&gt;
* выделяет кластеры сложной формы и различных размеров;&lt;br /&gt;
* обладает линейно зависимыми требованиями к месту хранения данных;&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Дельцова Анна</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13553</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13553"/>
		<updated>2016-10-23T19:38:27Z</updated>

		<summary type="html">&lt;p&gt;Дельцова Анна: /* Входные и выходные данные алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: Добровецкий Д.И., Дельцова А.В.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля строк загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек &amp;lt;math&amp;gt;p_{j}&amp;lt;/math&amp;gt;, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество;&lt;br /&gt;
&lt;br /&gt;
2) выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины;&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
&lt;br /&gt;
1) выберем произвольную точку кластера и назначим её представителем; &lt;br /&gt;
&lt;br /&gt;
2) пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек;&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; вычисляется расстояние до каждого представителя и её добавление в поддерево кластера, которому принадлежит ближайший для неё представитель.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Вычислительное ядро алгоритма представляет собой итерационное построение заданного числа кластеров, вычисление их центроид и назначение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Основную часть метода составляют разбиение некоторого числа входных точек на заданное число кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм CURE в общем случае имеет сложность &amp;lt;math&amp;gt;O(n^2 logn)&amp;lt;/math&amp;gt;. Для двумерного же пространства его сложность равняется &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
 &lt;br /&gt;
Возможности распараллеливания алгоритма имеются на следующих его шагах:&lt;br /&gt;
&lt;br /&gt;
* вычисления центроид для каждого кластера;&lt;br /&gt;
* расчет расстояний между кластерами;&lt;br /&gt;
* нахождение точек-представителей для каждого кластера;&lt;br /&gt;
* сдвиг точек-представителей каждого кластера к его центроиде; &lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей каждого кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек-представителей к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля входных точек, загружаемых на 1-м шаге алгоритма в оперативную память.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: дерево, из корня которого выходят &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; ветвей, являющиеся искомыми кластерами, а листьями этого дерева являются точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Недостатки&#039;&#039;&#039; &lt;br /&gt;
* необходимо задавать пороговые значения и количество кластеров;&lt;br /&gt;
* эффективен только для данных низкой размерности;&lt;br /&gt;
* работает только на числовых данных;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Достоинства&#039;&#039;&#039; &lt;br /&gt;
* выполняет кластеризацию на высоком уровне даже при наличии выбросов;&lt;br /&gt;
* выделяет кластеры сложной формы и различных размеров;&lt;br /&gt;
* обладает линейно зависимыми требованиями к месту хранения данных;&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Дельцова Анна</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13552</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13552"/>
		<updated>2016-10-23T19:37:27Z</updated>

		<summary type="html">&lt;p&gt;Дельцова Анна: /* Входные и выходные данные алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: Добровецкий Д.И., Дельцова А.В.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля строк загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек &amp;lt;math&amp;gt;p_{j}&amp;lt;/math&amp;gt;, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество;&lt;br /&gt;
&lt;br /&gt;
2) выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины;&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
&lt;br /&gt;
1) выберем произвольную точку кластера и назначим её представителем; &lt;br /&gt;
&lt;br /&gt;
2) пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек;&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; вычисляется расстояние до каждого представителя и её добавление в поддерево кластера, которому принадлежит ближайший для неё представитель.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Вычислительное ядро алгоритма представляет собой итерационное построение заданного числа кластеров, вычисление их центроид и назначение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Основную часть метода составляют разбиение некоторого числа входных точек на заданное число кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм CURE в общем случае имеет сложность &amp;lt;math&amp;gt;O(n^2 logn)&amp;lt;/math&amp;gt;. Для двумерного же пространства его сложность равняется &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
 &lt;br /&gt;
Возможности распараллеливания алгоритма имеются на следующих его шагах:&lt;br /&gt;
&lt;br /&gt;
* вычисления центроид для каждого кластера;&lt;br /&gt;
* расчет расстояний между кластерами;&lt;br /&gt;
* нахождение точек-представителей для каждого кластера;&lt;br /&gt;
* сдвиг точек-представителей каждого кластера к его центроиде; &lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля строк загружаемых на 1-м шаге алгоритма в оперативную память.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: дерево, из корня которого выходят &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; ветвей, являющиеся искомыми кластерами, а листьями этого дерева являются точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Недостатки&#039;&#039;&#039; &lt;br /&gt;
* необходимо задавать пороговые значения и количество кластеров;&lt;br /&gt;
* эффективен только для данных низкой размерности;&lt;br /&gt;
* работает только на числовых данных;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Достоинства&#039;&#039;&#039; &lt;br /&gt;
* выполняет кластеризацию на высоком уровне даже при наличии выбросов;&lt;br /&gt;
* выделяет кластеры сложной формы и различных размеров;&lt;br /&gt;
* обладает линейно зависимыми требованиями к месту хранения данных;&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Дельцова Анна</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13551</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13551"/>
		<updated>2016-10-23T19:34:27Z</updated>

		<summary type="html">&lt;p&gt;Дельцова Анна: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: Добровецкий Д.И., Дельцова А.В.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля строк загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек &amp;lt;math&amp;gt;p_{j}&amp;lt;/math&amp;gt;, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество;&lt;br /&gt;
&lt;br /&gt;
2) выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины;&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
&lt;br /&gt;
1) выберем произвольную точку кластера и назначим её представителем; &lt;br /&gt;
&lt;br /&gt;
2) пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек;&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; вычисляется расстояние до каждого представителя и её добавление в поддерево кластера, которому принадлежит ближайший для неё представитель.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Вычислительное ядро алгоритма представляет собой итерационное построение заданного числа кластеров, вычисление их центроид и назначение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Основную часть метода составляют разбиение некоторого числа входных точек на заданное число кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм CURE в общем случае имеет сложность &amp;lt;math&amp;gt;O(n^2 logn)&amp;lt;/math&amp;gt;. Для двумерного же пространства его сложность равняется &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
 &lt;br /&gt;
Возможности распараллеливания алгоритма имеются на следующих его шагах:&lt;br /&gt;
&lt;br /&gt;
* вычисления центроид для каждого кластера;&lt;br /&gt;
* расчет расстояний между кластерами;&lt;br /&gt;
* нахождение точек-представителей для каждого кластера;&lt;br /&gt;
* сдвиг точек-представителей каждого кластера к его центроиде; &lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек-представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля строк загружаемых на 1-м шаге алгоритма в оперативную память.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, из корня которого выходят &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; ветвей, являющиеся искомыми кластерами, а листья этого дерева - это точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Недостатки&#039;&#039;&#039; &lt;br /&gt;
* необходимо задавать пороговые значения и количество кластеров;&lt;br /&gt;
* эффективен только для данных низкой размерности;&lt;br /&gt;
* работает только на числовых данных;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Достоинства&#039;&#039;&#039; &lt;br /&gt;
* выполняет кластеризацию на высоком уровне даже при наличии выбросов;&lt;br /&gt;
* выделяет кластеры сложной формы и различных размеров;&lt;br /&gt;
* обладает линейно зависимыми требованиями к месту хранения данных;&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Дельцова Анна</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13550</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13550"/>
		<updated>2016-10-23T19:26:21Z</updated>

		<summary type="html">&lt;p&gt;Дельцова Анна: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: Добровецкий Д.И., Дельцова А.В.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля строк загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек &amp;lt;math&amp;gt;p_{j}&amp;lt;/math&amp;gt;, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество;&lt;br /&gt;
&lt;br /&gt;
2) выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины;&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
&lt;br /&gt;
1) выберем произвольную точку кластера и назначим её представителем; &lt;br /&gt;
&lt;br /&gt;
2) пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек;&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; вычисляется расстояние до каждого представителя и её добавление в поддерево кластера, которому принадлежит ближайший для неё представитель.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Вычислительное ядро алгоритма представляет собой итерационное построение заданного числа кластеров, вычисление их центроид и назначение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Основную часть метода составляют разбиение некоторого числа входных точек на заданное число кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм CURE в общем случае имеет сложность &amp;lt;math&amp;gt;O(n^2 logn)&amp;lt;/math&amp;gt;. Для двумерного же пространства его сложность равняется &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
 &lt;br /&gt;
Возможности распараллеливания алгоритма имеются на следующих его шагах:&lt;br /&gt;
&lt;br /&gt;
* вычисления центроид для каждого кластера;&lt;br /&gt;
* расчет расстояний между кластерами;&lt;br /&gt;
* нахождение точек-представителей для каждого кластера;&lt;br /&gt;
* сдвиг точек-представителей каждого кластера к его центроиде; &lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Недостатки&#039;&#039;&#039; &lt;br /&gt;
* необходимо задавать пороговые значения и количество кластеров;&lt;br /&gt;
* эффективен только для данных низкой размерности;&lt;br /&gt;
* работает только на числовых данных;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Достоинства&#039;&#039;&#039; &lt;br /&gt;
* выполняет кластеризацию на высоком уровне даже при наличии выбросов;&lt;br /&gt;
* выделяет кластеры сложной формы и различных размеров;&lt;br /&gt;
* обладает линейно зависимыми требованиями к месту хранения данных;&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Дельцова Анна</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13549</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13549"/>
		<updated>2016-10-23T19:25:58Z</updated>

		<summary type="html">&lt;p&gt;Дельцова Анна: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: Добровецкий Д.И., Дельцова А.В.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля строк загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек &amp;lt;math&amp;gt;p_{j}&amp;lt;/math&amp;gt;, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество;&lt;br /&gt;
&lt;br /&gt;
2) выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины;&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
&lt;br /&gt;
1) выберем произвольную точку кластера и назначим её представителем; &lt;br /&gt;
&lt;br /&gt;
2) пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек;&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; вычисляется расстояние до каждого представителя и её добавление в поддерево кластера, которому принадлежит ближайший для неё представитель.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Вычислительное ядро алгоритма представляет собой итерационное построение заданного числа кластеров, вычисление их центроид и назначение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Основную часть метода составляют разбиение некоторого числа входных точек на заданное число кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм CURE в общем случае имеет сложность &amp;lt;math&amp;gt;O(n^2 logn)&amp;lt;/math&amp;gt;. Для двумерного же пространства его сложность равняется &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
 &lt;br /&gt;
Возможности распараллеливания алгоритма имеются на следующих его шагах:&lt;br /&gt;
&lt;br /&gt;
* вычисления центроид для каждого кластера;&lt;br /&gt;
* расчет расстояний между кластерами;&lt;br /&gt;
* нахождение точек-представителей для каждого кластера;&lt;br /&gt;
* сдвиг точек-представителей каждого кластера к его центроиде; &lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&#039;&#039;Недостатки&#039;&#039; &lt;br /&gt;
* необходимо задавать пороговые значения и количество кластеров;&lt;br /&gt;
* эффективен только для данных низкой размерности;&lt;br /&gt;
* работает только на числовых данных;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Достоинства&#039;&#039; &lt;br /&gt;
* выполняет кластеризацию на высоком уровне даже при наличии выбросов;&lt;br /&gt;
* выделяет кластеры сложной формы и различных размеров;&lt;br /&gt;
* обладает линейно зависимыми требованиями к месту хранения данных;&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Дельцова Анна</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13548</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13548"/>
		<updated>2016-10-23T19:23:09Z</updated>

		<summary type="html">&lt;p&gt;Дельцова Анна: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: Добровецкий Д.И., Дельцова А.В.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля строк загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек &amp;lt;math&amp;gt;p_{j}&amp;lt;/math&amp;gt;, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество;&lt;br /&gt;
&lt;br /&gt;
2) выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины;&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
&lt;br /&gt;
1) выберем произвольную точку кластера и назначим её представителем; &lt;br /&gt;
&lt;br /&gt;
2) пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек;&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; вычисляется расстояние до каждого представителя и её добавление в поддерево кластера, которому принадлежит ближайший для неё представитель.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Вычислительное ядро алгоритма представляет собой итерационное построение заданного числа кластеров, вычисление их центроид и назначение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Основную часть метода составляют разбиение некоторого числа входных точек на заданное число кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм CURE в общем случае имеет сложность &amp;lt;math&amp;gt;O(n^2 logn)&amp;lt;/math&amp;gt;. Для двумерного же пространства его сложность равняется &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
 &lt;br /&gt;
Возможности распараллеливания алгоритма имеются на следующих его шагах:&lt;br /&gt;
&lt;br /&gt;
* вычисления центроид для каждого кластера;&lt;br /&gt;
* расчет расстояний между кластерами;&lt;br /&gt;
* нахождение точек-представителей для каждого кластера;&lt;br /&gt;
* сдвиг точек-представителей каждого кластера к его центроиде; &lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер.&lt;br /&gt;
Назначение: кластеризация очень больших наборов числовых данных.&lt;br /&gt;
Достоинства: выполняет кластеризацию на высоком уровне даже при наличии выбросов, выделяет&lt;br /&gt;
кластеры сложной формы и различных размеров, обладает линейно зависимыми требованиями к месту&lt;br /&gt;
хранения данных и временную сложность для данных высокой размерности.&lt;br /&gt;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров, эффективен для данных низкой размерности, работает только на числовых данных.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Дельцова Анна</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13546</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13546"/>
		<updated>2016-10-23T19:08:54Z</updated>

		<summary type="html">&lt;p&gt;Дельцова Анна: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: Добровецкий Д.И., Дельцова А.В.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля строк загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек &amp;lt;math&amp;gt;p_{j}&amp;lt;/math&amp;gt;, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество;&lt;br /&gt;
&lt;br /&gt;
2) выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины;&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
&lt;br /&gt;
1) выберем произвольную точку кластера и назначим её представителем; &lt;br /&gt;
&lt;br /&gt;
2) пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек;&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; вычисляется расстояние до каждого представителя и её добавление в поддерево кластера, которому принадлежит ближайший для неё представитель.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Вычислительное ядро алгоритма представляет собой итерационное построение заданного числа кластеров, вычисление их центроид и назначение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Основную часть метода составляют разбиение некоторого числа входных точек на заданное число кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм CURE в общем случае имеет сложность &amp;lt;math&amp;gt;O(n^2 logn)&amp;lt;/math&amp;gt;. Для двумерного же пространства его сложность равняется &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Дельцова Анна</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13544</id>
		<title>Добровецкий Дельцова/ Алгоритм кластеризации с использованием представлений</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B9_%D0%94%D0%B5%D0%BB%D1%8C%D1%86%D0%BE%D0%B2%D0%B0/_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=13544"/>
		<updated>2016-10-23T19:00:39Z</updated>

		<summary type="html">&lt;p&gt;Дельцова Анна: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм кластеризации с использованием представлений&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: Добровецкий Д.И., Дельцова А.В.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&#039;&#039;&#039;Алгоритм CURE (Clustering Using REpresentatives)&#039;&#039;&#039; выполняет агломеративную кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер. &lt;br /&gt;
&lt;br /&gt;
Кластеризация (кластерный анализ) — задача разбиения заданной выборки объектов на непересекающиеся подмножества, называемые кластерами, так, чтобы каждый кластер состоял из схожих объектов, а объекты разных кластеров отличались.&lt;br /&gt;
&lt;br /&gt;
Агломеративный метод кластеризации характеризуется последовательным объединением исходных элементов и соответствующим уменьшением числа кластеров. В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока все объекты не будут составлять один кластер.&lt;br /&gt;
&lt;br /&gt;
В CURE используется особый метод представления кластера: для каждого кластера выбирается определенно заданное точек - представителей данного кластера. Кластеры с наиболее похожими точками-представителями объединяются в один на 3-м шаге алгоритма. Благодаря этой технологии алгоритм CURE устойчив к выбросам и может выделять кластеры сложной формы и различных размеров.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Описание алгоритма:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 1&#039;&#039;&#039;: Построение дерева кластеров, состоящего из некоторых строк (доля строк задаётся параметром &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt;) входного набора данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 2&#039;&#039;&#039;: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 3&#039;&#039;&#039;: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаг 4&#039;&#039;&#039;: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
Далее выбранные точки сдвигаются на &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; к центроиду кластера. Алгоритм становится основанным на методе поиска центроида при &amp;lt;math&amp;gt;\alpha = 1&amp;lt;/math&amp;gt;, и основанным на всех точках кластера при &amp;lt;math&amp;gt;\alpha = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Исходные данные: &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек размерности &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество кластеров, на которые их необходимо разбить, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; - количество точек представителей кластера, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; - параметр сдвига точек к центроиду кластера, &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; - доля строк загружаемых на 1-м шаге алгоритма в оперативную память. Расстояние между точками будем считать при помощи&lt;br /&gt;
«Манхеттенской» метрики: &amp;lt;math&amp;gt;\rho(p,k) =\sum_{i=1}^n |p_{i} - k_{i}|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: дерево, ветвями которого являются кластеры, а листьями точки из входных данных.&lt;br /&gt;
&lt;br /&gt;
На первом шаге выбираются &amp;lt;math&amp;gt;\lceil \gamma m\rceil&amp;lt;/math&amp;gt; точек из входных данных, далее помещаемые в &amp;quot;кучу&amp;quot; оперативной памяти. Каждая такая точка принимается за кластер, цетроида которого равна самой точке. Далее выполняем следующие итерации, пока количество кластеров не станет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1) для каждого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-го кластера вычисляется центроида &amp;lt;math&amp;gt;\mu_{i}&amp;lt;/math&amp;gt; по формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_{i} = \frac{1}{k_{i}}\sum_{p_{j}\in K_{i}} p_{j}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;K_{i}&amp;lt;/math&amp;gt; - множество точек &amp;lt;math&amp;gt;p_{j}&amp;lt;/math&amp;gt;, находящихся в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-м кластере, &amp;lt;math&amp;gt;k_{i}&amp;lt;/math&amp;gt; - их количество;&lt;br /&gt;
&lt;br /&gt;
2) выполняется поиск пары кластеров, расстояние между центроидами которых минимально (существуют также другие критерии выбора &amp;quot;подходящих&amp;quot; классов, например, минимальная сумма расстояний между элементами этих кластеров). Далее выполняется слияние найденных кластеров. Для дерева это означает добавление новой вершины, соединённой ребром с корнем; поддеревья бывших кластеров становятся ветвями этой новой вершины;&lt;br /&gt;
&lt;br /&gt;
Далее для каждого кластера определяются &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; точек-представителей:&lt;br /&gt;
&lt;br /&gt;
1) выберем произвольную точку кластера и назначим её представителем; &lt;br /&gt;
&lt;br /&gt;
2) пока количество точек-представителей меньше &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; выбираем  представителем точку, расстояние от которой до уже выбранных точек-представителей является максимальным среди всех оставшихся точек;&lt;br /&gt;
&lt;br /&gt;
После чего для каждого представителя выполняем сдвиг к центроиде соответствующего кластера в &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; раз. &lt;br /&gt;
&lt;br /&gt;
На последнем шаге происходит присвоение неиспользованных точек к кластерам. Для точки &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; вычисляется расстояние до каждого представителя и её добавление в поддерево кластера, которому принадлежит ближайший для неё представитель.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Вычислительное ядро алгоритма представляет собой итерационное построение заданного числа кластеров, вычисление их центроид и назначение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Основную часть метода составляют разбиение некоторого числа входных точек на заданное число кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Дельцова Анна</name></author>
	</entry>
</feed>