<?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=X.kurashov</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=X.kurashov"/>
	<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/X.kurashov"/>
	<updated>2026-10-23T07:50:01Z</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:Karibov/%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=12649</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12649"/>
		<updated>2016-10-16T15:42:17Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Существующие реализации алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид: &amp;lt;math&amp;gt;\mu _i = \frac{1}{n_i} \sum^{}_{j \in C_i} {j}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами для поиска подходящим для объединения кластеров могут быть использованы следующие формулы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|\mu _i - \mu _j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Объединяем ближайшие кластеры.&lt;br /&gt;
&lt;br /&gt;
Затем для каждого кластера определяются &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;
Затем происходит присвоение неиспользованных точек к кластерам.&lt;br /&gt;
&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;
Основную часть метода составляют разбиение случайной выборки строк на &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|Рисунок 1. Схема реализации [2]]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&gt;
Для пространств небольших размерностей достигается сложность &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока число кластеров не будет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:IG_CURE.jpg|800px|thumb|center|Рисунок 2. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Каждый шаг алгоритма выполняется независимо от других кластеров и их представителей. Это дает предпосылки к возможности хорошего распараллеливания метода кластеризации на каждом этапе алгоритма.&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&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;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров [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;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf.&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; (PDF). Information Systems. 26 (1): 35–58. doi:10.1016/S0306-4379(01)00008-4.&lt;br /&gt;
&lt;br /&gt;
[3] Panagiotis E. Hadjidoukas, Laurent Amsaleg. OpenMP Shared Memory Parallel Programming. Volume 4315 of the series Lecture Notes in Computer Science pp 289-299 Parallelization of a Hierarchical Data Clustering Algorithm Using OpenMP.&lt;br /&gt;
&lt;br /&gt;
[4] Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. - СПб.: БХВ-Петербург, 2002.&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12646</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12646"/>
		<updated>2016-10-16T15:41:28Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Схема реализации последовательного алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид: &amp;lt;math&amp;gt;\mu _i = \frac{1}{n_i} \sum^{}_{j \in C_i} {j}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами для поиска подходящим для объединения кластеров могут быть использованы следующие формулы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|\mu _i - \mu _j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Объединяем ближайшие кластеры.&lt;br /&gt;
&lt;br /&gt;
Затем для каждого кластера определяются &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;
Затем происходит присвоение неиспользованных точек к кластерам.&lt;br /&gt;
&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;
Основную часть метода составляют разбиение случайной выборки строк на &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|Рисунок 1. Схема реализации [2]]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&gt;
Для пространств небольших размерностей достигается сложность &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока число кластеров не будет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:IG_CURE.jpg|800px|thumb|center|Рисунок 2. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Каждый шаг алгоритма выполняется независимо от других кластеров и их представителей. Это дает предпосылки к возможности хорошего распараллеливания метода кластеризации на каждом этапе алгоритма.&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&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;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров [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;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&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;
Также существует параллельная реализация алгоритма, описанная в сборнике [4]. Алгоритм предложенный в статье использует массив данных состоящий из размеров кластера, его центроида и репрезентативных точек, а при объединении кластеров информацию о новом кластере просто записывают в строчку предыдущего. Также для каждого кластера требуется считать индекс и расстояние до ближайшего кластера. Именно их поиск авторы статьи и предлагают распараллелить.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
[1] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf.&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; (PDF). Information Systems. 26 (1): 35–58. doi:10.1016/S0306-4379(01)00008-4.&lt;br /&gt;
&lt;br /&gt;
[3] Panagiotis E. Hadjidoukas, Laurent Amsaleg. OpenMP Shared Memory Parallel Programming. Volume 4315 of the series Lecture Notes in Computer Science pp 289-299 Parallelization of a Hierarchical Data Clustering Algorithm Using OpenMP.&lt;br /&gt;
&lt;br /&gt;
[4] Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. - СПб.: БХВ-Петербург, 2002.&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12644</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12644"/>
		<updated>2016-10-16T15:41:17Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Схема реализации последовательного алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид: &amp;lt;math&amp;gt;\mu _i = \frac{1}{n_i} \sum^{}_{j \in C_i} {j}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами для поиска подходящим для объединения кластеров могут быть использованы следующие формулы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|\mu _i - \mu _j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Объединяем ближайшие кластеры.&lt;br /&gt;
&lt;br /&gt;
Затем для каждого кластера определяются &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;
Затем происходит присвоение неиспользованных точек к кластерам.&lt;br /&gt;
&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;
Основную часть метода составляют разбиение случайной выборки строк на &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|Рисунок 1. Схема реализации[2]]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&gt;
Для пространств небольших размерностей достигается сложность &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока число кластеров не будет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:IG_CURE.jpg|800px|thumb|center|Рисунок 2. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Каждый шаг алгоритма выполняется независимо от других кластеров и их представителей. Это дает предпосылки к возможности хорошего распараллеливания метода кластеризации на каждом этапе алгоритма.&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&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;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров [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;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf.&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; (PDF). Information Systems. 26 (1): 35–58. doi:10.1016/S0306-4379(01)00008-4.&lt;br /&gt;
&lt;br /&gt;
[3] Panagiotis E. Hadjidoukas, Laurent Amsaleg. OpenMP Shared Memory Parallel Programming. Volume 4315 of the series Lecture Notes in Computer Science pp 289-299 Parallelization of a Hierarchical Data Clustering Algorithm Using OpenMP.&lt;br /&gt;
&lt;br /&gt;
[4] Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. - СПб.: БХВ-Петербург, 2002.&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12641</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12641"/>
		<updated>2016-10-16T15:37:58Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Информационный граф */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид: &amp;lt;math&amp;gt;\mu _i = \frac{1}{n_i} \sum^{}_{j \in C_i} {j}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами для поиска подходящим для объединения кластеров могут быть использованы следующие формулы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|\mu _i - \mu _j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Объединяем ближайшие кластеры.&lt;br /&gt;
&lt;br /&gt;
Затем для каждого кластера определяются &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;
Затем происходит присвоение неиспользованных точек к кластерам.&lt;br /&gt;
&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;
Основную часть метода составляют разбиение случайной выборки строк на &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|Рисунок 1. Схема реализации]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&gt;
Для пространств небольших размерностей достигается сложность &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока число кластеров не будет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:IG_CURE.jpg|800px|thumb|center|Рисунок 2. Информационный граф]]&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Каждый шаг алгоритма выполняется независимо от других кластеров и их представителей. Это дает предпосылки к возможности хорошего распараллеливания метода кластеризации на каждом этапе алгоритма.&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&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;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров [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;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12640</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12640"/>
		<updated>2016-10-16T15:37:43Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Схема реализации последовательного алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид: &amp;lt;math&amp;gt;\mu _i = \frac{1}{n_i} \sum^{}_{j \in C_i} {j}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами для поиска подходящим для объединения кластеров могут быть использованы следующие формулы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|\mu _i - \mu _j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Объединяем ближайшие кластеры.&lt;br /&gt;
&lt;br /&gt;
Затем для каждого кластера определяются &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;
Затем происходит присвоение неиспользованных точек к кластерам.&lt;br /&gt;
&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;
Основную часть метода составляют разбиение случайной выборки строк на &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|Рисунок 1. Схема реализации]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&gt;
Для пространств небольших размерностей достигается сложность &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока число кластеров не будет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:IG_CURE.jpg|800px|thumb|center|Рисунок 2]]&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Каждый шаг алгоритма выполняется независимо от других кластеров и их представителей. Это дает предпосылки к возможности хорошего распараллеливания метода кластеризации на каждом этапе алгоритма.&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&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;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров [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;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12639</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12639"/>
		<updated>2016-10-16T15:37:24Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Схема реализации последовательного алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид: &amp;lt;math&amp;gt;\mu _i = \frac{1}{n_i} \sum^{}_{j \in C_i} {j}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами для поиска подходящим для объединения кластеров могут быть использованы следующие формулы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|\mu _i - \mu _j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Объединяем ближайшие кластеры.&lt;br /&gt;
&lt;br /&gt;
Затем для каждого кластера определяются &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;
Затем происходит присвоение неиспользованных точек к кластерам.&lt;br /&gt;
&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;
Основную часть метода составляют разбиение случайной выборки строк на &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|Рисунок 1.]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&gt;
Для пространств небольших размерностей достигается сложность &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока число кластеров не будет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:IG_CURE.jpg|800px|thumb|center|Рисунок 2]]&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Каждый шаг алгоритма выполняется независимо от других кластеров и их представителей. Это дает предпосылки к возможности хорошего распараллеливания метода кластеризации на каждом этапе алгоритма.&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&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;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров [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;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12638</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12638"/>
		<updated>2016-10-16T15:37:10Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Схема реализации последовательного алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид: &amp;lt;math&amp;gt;\mu _i = \frac{1}{n_i} \sum^{}_{j \in C_i} {j}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами для поиска подходящим для объединения кластеров могут быть использованы следующие формулы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|\mu _i - \mu _j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Объединяем ближайшие кластеры.&lt;br /&gt;
&lt;br /&gt;
Затем для каждого кластера определяются &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;
Затем происходит присвоение неиспользованных точек к кластерам.&lt;br /&gt;
&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;
Основную часть метода составляют разбиение случайной выборки строк на &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|Рисунок 1]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&gt;
Для пространств небольших размерностей достигается сложность &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока число кластеров не будет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:IG_CURE.jpg|800px|thumb|center|Рисунок 2]]&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Каждый шаг алгоритма выполняется независимо от других кластеров и их представителей. Это дает предпосылки к возможности хорошего распараллеливания метода кластеризации на каждом этапе алгоритма.&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&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;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров [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;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12637</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12637"/>
		<updated>2016-10-16T15:36:54Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Информационный граф */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид: &amp;lt;math&amp;gt;\mu _i = \frac{1}{n_i} \sum^{}_{j \in C_i} {j}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами для поиска подходящим для объединения кластеров могут быть использованы следующие формулы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|\mu _i - \mu _j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Объединяем ближайшие кластеры.&lt;br /&gt;
&lt;br /&gt;
Затем для каждого кластера определяются &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;
Затем происходит присвоение неиспользованных точек к кластерам.&lt;br /&gt;
&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;
Основную часть метода составляют разбиение случайной выборки строк на &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&gt;
Для пространств небольших размерностей достигается сложность &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
В начале работы алгоритма все объекты являются отдельными кластерами. На первом шаге наиболее похожие объекты объединяются в кластер. На последующих шагах объединение продолжается до тех пор, пока число кластеров не будет равно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:IG_CURE.jpg|800px|thumb|center|Рисунок 2]]&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Каждый шаг алгоритма выполняется независимо от других кластеров и их представителей. Это дает предпосылки к возможности хорошего распараллеливания метода кластеризации на каждом этапе алгоритма.&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&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;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров [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;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12636</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12636"/>
		<updated>2016-10-16T15:36:33Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Ресурс параллелизма алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид: &amp;lt;math&amp;gt;\mu _i = \frac{1}{n_i} \sum^{}_{j \in C_i} {j}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами для поиска подходящим для объединения кластеров могут быть использованы следующие формулы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|\mu _i - \mu _j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Объединяем ближайшие кластеры.&lt;br /&gt;
&lt;br /&gt;
Затем для каждого кластера определяются &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;
Затем происходит присвоение неиспользованных точек к кластерам.&lt;br /&gt;
&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;
Основную часть метода составляют разбиение случайной выборки строк на &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&gt;
Для пространств небольших размерностей достигается сложность &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&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;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&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;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров [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;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12635</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12635"/>
		<updated>2016-10-16T15:35:36Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Ресурс параллелизма алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид: &amp;lt;math&amp;gt;\mu _i = \frac{1}{n_i} \sum^{}_{j \in C_i} {j}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами для поиска подходящим для объединения кластеров могут быть использованы следующие формулы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|\mu _i - \mu _j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Объединяем ближайшие кластеры.&lt;br /&gt;
&lt;br /&gt;
Затем для каждого кластера определяются &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;
Затем происходит присвоение неиспользованных точек к кластерам.&lt;br /&gt;
&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;
Основную часть метода составляют разбиение случайной выборки строк на &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&gt;
Для пространств небольших размерностей достигается сложность &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&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;
&lt;br /&gt;
[[Файл:IG_CURE.jpg|800px|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&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;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров [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;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12634</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12634"/>
		<updated>2016-10-16T15:35:01Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Ресурс параллелизма алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид: &amp;lt;math&amp;gt;\mu _i = \frac{1}{n_i} \sum^{}_{j \in C_i} {j}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами для поиска подходящим для объединения кластеров могут быть использованы следующие формулы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|\mu _i - \mu _j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Объединяем ближайшие кластеры.&lt;br /&gt;
&lt;br /&gt;
Затем для каждого кластера определяются &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;
Затем происходит присвоение неиспользованных точек к кластерам.&lt;br /&gt;
&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;
Основную часть метода составляют разбиение случайной выборки строк на &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&gt;
Для пространств небольших размерностей достигается сложность &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&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;
&lt;br /&gt;
[[Файл:IG_CURE.jpg|800px|thumb|left|]]&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&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;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров [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;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12633</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12633"/>
		<updated>2016-10-16T15:34:27Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Ресурс параллелизма алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид: &amp;lt;math&amp;gt;\mu _i = \frac{1}{n_i} \sum^{}_{j \in C_i} {j}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами для поиска подходящим для объединения кластеров могут быть использованы следующие формулы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|\mu _i - \mu _j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Объединяем ближайшие кластеры.&lt;br /&gt;
&lt;br /&gt;
Затем для каждого кластера определяются &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;
Затем происходит присвоение неиспользованных точек к кластерам.&lt;br /&gt;
&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;
Основную часть метода составляют разбиение случайной выборки строк на &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&gt;
Для пространств небольших размерностей достигается сложность &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&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;
&lt;br /&gt;
[[Файл:IG_CURE.jpg|800px|800px|left|]]&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&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;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров [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;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:IG_CURE.jpg&amp;diff=12632</id>
		<title>Файл:IG CURE.jpg</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:IG_CURE.jpg&amp;diff=12632"/>
		<updated>2016-10-16T15:33:12Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12621</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12621"/>
		<updated>2016-10-16T15:17:33Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Входные и выходные данные алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид: &amp;lt;math&amp;gt;\mu _i = \frac{1}{n_i} \sum^{}_{j \in C_i} {j}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами для поиска подходящим для объединения кластеров могут быть использованы следующие формулы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|\mu _i - \mu _j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Объединяем ближайшие кластеры.&lt;br /&gt;
&lt;br /&gt;
Затем для каждого кластера определяются &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;
Затем происходит присвоение неиспользованных точек к кластерам.&lt;br /&gt;
&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;
Основную часть метода составляют разбиение случайной выборки строк на &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&gt;
Для пространств небольших размерностей достигается сложность &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&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;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&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;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров [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;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12619</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12619"/>
		<updated>2016-10-16T15:15:06Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Информационный граф */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид: &amp;lt;math&amp;gt;\mu _i = \frac{1}{n_i} \sum^{}_{j \in C_i} {j}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами для поиска подходящим для объединения кластеров могут быть использованы следующие формулы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|\mu _i - \mu _j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Объединяем ближайшие кластеры.&lt;br /&gt;
&lt;br /&gt;
Затем для каждого кластера определяются &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;
Затем происходит присвоение неиспользованных точек к кластерам.&lt;br /&gt;
&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;
Основную часть метода составляют разбиение случайной выборки строк на &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&gt;
Для пространств небольших размерностей достигается сложность &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&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;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&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].&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12618</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12618"/>
		<updated>2016-10-16T15:09:16Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Макроструктура алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид: &amp;lt;math&amp;gt;\mu _i = \frac{1}{n_i} \sum^{}_{j \in C_i} {j}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами для поиска подходящим для объединения кластеров могут быть использованы следующие формулы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|\mu _i - \mu _j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Объединяем ближайшие кластеры.&lt;br /&gt;
&lt;br /&gt;
Затем для каждого кластера определяются &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;
Затем происходит присвоение неиспользованных точек к кластерам.&lt;br /&gt;
&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;
Основную часть метода составляют разбиение случайной выборки строк на &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров и нахождение точек-представителей для каждого кластера.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&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;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров [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;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12616</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12616"/>
		<updated>2016-10-16T15:07:57Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Вычислительное ядро алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид: &amp;lt;math&amp;gt;\mu _i = \frac{1}{n_i} \sum^{}_{j \in C_i} {j}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами для поиска подходящим для объединения кластеров могут быть использованы следующие формулы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|\mu _i - \mu _j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Объединяем ближайшие кластеры.&lt;br /&gt;
&lt;br /&gt;
Затем для каждого кластера определяются &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;
Затем происходит присвоение неиспользованных точек к кластерам.&lt;br /&gt;
&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;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&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;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров [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;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12611</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12611"/>
		<updated>2016-10-16T15:04:51Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид: &amp;lt;math&amp;gt;\mu _i = \frac{1}{n_i} \sum^{}_{j \in C_i} {j}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами для поиска подходящим для объединения кластеров могут быть использованы следующие формулы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|\mu _i - \mu _j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Объединяем ближайшие кластеры.&lt;br /&gt;
&lt;br /&gt;
Затем для каждого кластера определяются &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;
Затем происходит присвоение неиспользованных точек к кластерам.&lt;br /&gt;
&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;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&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;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров [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;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12610</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12610"/>
		<updated>2016-10-16T15:04:34Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид: &amp;lt;math&amp;gt;\mu _i = \frac{1}{n_i} \sum^{}_{j \in C_i} {j}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами для поиска подходящим для объединения кластеров могут быть использованы следующие формулы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|\mu _i - mu _j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Объединяем ближайшие кластеры.&lt;br /&gt;
&lt;br /&gt;
Затем для каждого кластера определяются &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;
Затем происходит присвоение неиспользованных точек к кластерам.&lt;br /&gt;
&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;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&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;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров [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;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12608</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12608"/>
		<updated>2016-10-16T15:02:22Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид: &amp;lt;math&amp;gt;\mu _i = \frac{1}{n_i} \sum^{}_{j \in C_i} {j}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами для поиска подходящим для объединения кластеров могут быть использованы следующие формулы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Объединяем ближайшие кластеры.&lt;br /&gt;
&lt;br /&gt;
Затем для каждого кластера определяются &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;
Затем происходит присвоение неиспользованных точек к кластерам.&lt;br /&gt;
&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;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&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;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров [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;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12601</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12601"/>
		<updated>2016-10-16T14:53:59Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид: &amp;lt;math&amp;gt;\mu _i = \frac{1}{n_i} \sum^{}_{j \in C_i} {j}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами для поиска подходящим для объединения кластеров могут быть использованы следующие формулы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;;&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&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;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&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;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров [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;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12600</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12600"/>
		<updated>2016-10-16T14:52:55Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид: &amp;lt;math&amp;gt;\mu _i = \frac{1}{count(C_i)} \sum^{}_{j \in C_i} {j}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами для поиска подходящим для объединения кластеров могут быть использованы следующие формулы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&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;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&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;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров [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;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12598</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12598"/>
		<updated>2016-10-16T14:51:36Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид: &amp;lt;math&amp;gt;\mu _i = \frac{1}{count(C_i)} \sum^{}_{j \in C_i} {j}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами можно воспользоваться одной из следующих формул: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&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;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&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;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров [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;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12594</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12594"/>
		<updated>2016-10-16T14:50:31Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mu _i = \frac{1}{count(C_i)} \sum^{}_{j \in C_i} {j}&amp;lt;/math&amp;gt; &lt;br /&gt;
Для вычисления расстояния между кластерами можно воспользоваться одной из следующих формул &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&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;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&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;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров [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;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12593</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12593"/>
		<updated>2016-10-16T14:50:13Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mu _i = \frac{1}{count(C_i)} \sum^{}_{j \in C_i} {j}}&amp;lt;/math&amp;gt; &lt;br /&gt;
Для вычисления расстояния между кластерами можно воспользоваться одной из следующих формул &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&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;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&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;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров [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;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12590</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12590"/>
		<updated>2016-10-16T14:49:43Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
Для каждого &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt; вычисляем центроид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mu _i = \frac{1}{count(C_i)\sum^{}_{j \in C_i} {j}}&amp;lt;/math&amp;gt; &lt;br /&gt;
Для вычисления расстояния между кластерами можно воспользоваться одной из следующих формул &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&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;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&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;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров [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;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12580</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12580"/>
		<updated>2016-10-16T14:38:01Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр &amp;lt;math&amp;gt;\gamma&amp;lt;/math&amp;gt; задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
Алгоритм строит &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров путем минимизации функции &amp;lt;math&amp;gt;E = \sum^{k}_{i=1} {\sum^{}_{p\in C_i} {\left \| p - m_i \right \|^2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m_i &amp;lt;/math&amp;gt; среднее значение для кластера &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами можно воспользоваться одной из следующих формул &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&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;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&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;
[1] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12579</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12579"/>
		<updated>2016-10-16T14:37:16Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&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;, параметр \alpha для сжатия точек представления к центру кластера, &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; число точек для кластеризации, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размерность множества, параметр \gamma задаёт какая часть от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; точек будет использована при случайной инициализации.&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
Алгоритм строит &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров путем минимизации функции &amp;lt;math&amp;gt;E = \sum^{k}_{i=1} {\sum^{}_{p\in C_i} {\left \| p - m_i \right \|^2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m_i &amp;lt;/math&amp;gt; среднее значение для кластера &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами можно воспользоваться одной из следующих формул &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&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;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|800px|thumb|center|]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
В худшем случае иерархический алгоритм кластеризации имеет сложность  &amp;lt;math&amp;gt;O(n^2 log(n))&amp;lt;/math&amp;gt;.&lt;br /&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;
[1] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12575</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12575"/>
		<updated>2016-10-16T14:24:26Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Схема реализации последовательного алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - число кластеров, на  которое необходимо разбить множество&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
Алгоритм строит &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров путем минимизации функции &amp;lt;math&amp;gt;E = \sum^{k}_{i=1} {\sum^{}_{p\in C_i} {\left \| p - m_i \right \|^2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m_i &amp;lt;/math&amp;gt; среднее значение для кластера &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами можно воспользоваться одной из следующих формул &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&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;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg|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;
&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
Достоинства: выполняет кластеризацию на высоком уровне даже при наличии выбросов, выделяет&lt;br /&gt;
кластеры сложной формы и различных размеров, обладает линейно зависимыми требованиями к месту&lt;br /&gt;
хранения данных и временную сложность для данных высокой размерности.&lt;br /&gt;
&lt;br /&gt;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12574</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12574"/>
		<updated>2016-10-16T14:24:10Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Схема реализации последовательного алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - число кластеров, на  которое необходимо разбить множество&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
Алгоритм строит &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров путем минимизации функции &amp;lt;math&amp;gt;E = \sum^{k}_{i=1} {\sum^{}_{p\in C_i} {\left \| p - m_i \right \|^2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m_i &amp;lt;/math&amp;gt; среднее значение для кластера &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами можно воспользоваться одной из следующих формул &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&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;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg]]&lt;br /&gt;
[[Файл:CURE.jpg|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;
&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
Достоинства: выполняет кластеризацию на высоком уровне даже при наличии выбросов, выделяет&lt;br /&gt;
кластеры сложной формы и различных размеров, обладает линейно зависимыми требованиями к месту&lt;br /&gt;
хранения данных и временную сложность для данных высокой размерности.&lt;br /&gt;
&lt;br /&gt;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12573</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12573"/>
		<updated>2016-10-16T14:22:57Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Схема реализации последовательного алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - число кластеров, на  которое необходимо разбить множество&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
Алгоритм строит &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров путем минимизации функции &amp;lt;math&amp;gt;E = \sum^{k}_{i=1} {\sum^{}_{p\in C_i} {\left \| p - m_i \right \|^2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m_i &amp;lt;/math&amp;gt; среднее значение для кластера &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами можно воспользоваться одной из следующих формул &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&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;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
[[Файл:CURE.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
Достоинства: выполняет кластеризацию на высоком уровне даже при наличии выбросов, выделяет&lt;br /&gt;
кластеры сложной формы и различных размеров, обладает линейно зависимыми требованиями к месту&lt;br /&gt;
хранения данных и временную сложность для данных высокой размерности.&lt;br /&gt;
&lt;br /&gt;
Недостатки: есть необходимость в задании пороговых значений и количества кластеров.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:CURE.jpg&amp;diff=12572</id>
		<title>Файл:CURE.jpg</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:CURE.jpg&amp;diff=12572"/>
		<updated>2016-10-16T14:21:35Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: Схема реализации алгоритма CURE&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Схема реализации алгоритма CURE&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12554</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12554"/>
		<updated>2016-10-16T13:52:30Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Вычислительное ядро алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер.&lt;br /&gt;
&lt;br /&gt;
Назначение: кластеризация очень больших наборов числовых данных.&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - число кластеров, на  которое необходимо разбить множество&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
Алгоритм строит &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров путем минимизации функции &amp;lt;math&amp;gt;E = \sum^{k}_{i=1} {\sum^{}_{p\in C_i} {\left \| p - m_i \right \|^2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m_i &amp;lt;/math&amp;gt; среднее значение для кластера &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами можно воспользоваться одной из следующих формул &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&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;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12553</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12553"/>
		<updated>2016-10-16T13:52:11Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Вычислительное ядро алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер.&lt;br /&gt;
&lt;br /&gt;
Назначение: кластеризация очень больших наборов числовых данных.&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - число кластеров, на  которое необходимо разбить множество&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
Алгоритм строит &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров путем минимизации функции &amp;lt;math&amp;gt;E = \sum^{k}_{i=1} {\sum^{}_{p\in C_i} {\left \| p - m_i \right \|^2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m_i &amp;lt;/math&amp;gt; среднее значение для кластера &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами можно воспользоваться одной из следующих формул &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма представляет собой итерационное построение k кластеров&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12551</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12551"/>
		<updated>2016-10-16T13:51:53Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Вычислительное ядро алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер.&lt;br /&gt;
&lt;br /&gt;
Назначение: кластеризация очень больших наборов числовых данных.&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - число кластеров, на  которое необходимо разбить множество&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
Алгоритм строит &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров путем минимизации функции &amp;lt;math&amp;gt;E = \sum^{k}_{i=1} {\sum^{}_{p\in C_i} {\left \| p - m_i \right \|^2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m_i &amp;lt;/math&amp;gt; среднее значение для кластера &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами можно воспользоваться одной из следующих формул &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&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;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12550</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12550"/>
		<updated>2016-10-16T13:51:30Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Вычислительное ядро алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер.&lt;br /&gt;
&lt;br /&gt;
Назначение: кластеризация очень больших наборов числовых данных.&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - число кластеров, на  которое необходимо разбить множество&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
Алгоритм строит &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров путем минимизации функции &amp;lt;math&amp;gt;E = \sum^{k}_{i=1} {\sum^{}_{p\in C_i} {\left \| p - m_i \right \|^2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m_i &amp;lt;/math&amp;gt; среднее значение для кластера &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами можно воспользоваться одной из следующих формул &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;.&lt;br /&gt;
&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;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
&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] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12547</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12547"/>
		<updated>2016-10-16T13:47:08Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер.&lt;br /&gt;
&lt;br /&gt;
Назначение: кластеризация очень больших наборов числовых данных.&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - число кластеров, на  которое необходимо разбить множество&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
Алгоритм строит &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров путем минимизации функции &amp;lt;math&amp;gt;E = \sum^{k}_{i=1} {\sum^{}_{p\in C_i} {\left \| p - m_i \right \|^2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m_i &amp;lt;/math&amp;gt; среднее значение для кластера &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами можно воспользоваться одной из следующих формул &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n_i &amp;lt;/math&amp;gt; - количество точек в кластере &amp;lt;math&amp;gt;C_i&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&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;
[1] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12542</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12542"/>
		<updated>2016-10-16T13:41:53Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер.&lt;br /&gt;
&lt;br /&gt;
Назначение: кластеризация очень больших наборов числовых данных.&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - число кластеров, на  которое необходимо разбить множество&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
Алгоритм строит &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров путем минимизации функции &amp;lt;math&amp;gt;E = \sum^{k}_{i=1} {\sum^{}_{p\in C_i} {\left \| p - m_i \right \|^2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m_i = mean (C_i), n_i = count(C_i)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами можно воспользоваться одной из следующих формул &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&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;
[1] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12541</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12541"/>
		<updated>2016-10-16T13:41:07Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер.&lt;br /&gt;
&lt;br /&gt;
Назначение: кластеризация очень больших наборов числовых данных.&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - число кластеров, на  которое необходимо разбить множество&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
Алгоритм строит &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров путем минимизации функции &amp;lt;math&amp;gt;E = \sum^{k}_{i=1} {\sum^{}_{p\in C_i} {\left \| p - m_i \right \|^2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m_i = \mean C_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами можно воспользоваться одной из следующих формул &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&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;
[1] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12540</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12540"/>
		<updated>2016-10-16T13:40:24Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер.&lt;br /&gt;
&lt;br /&gt;
Назначение: кластеризация очень больших наборов числовых данных.&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - число кластеров, на  которое необходимо разбить множество&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
Алгоритм строит &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров путем минимизации функции &amp;lt;math&amp;gt;E = \sum^{k}_{i=1} {\sum^{}_{p\in C_i} {\left \| p - m_i \right \|^2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m_i = \min C_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами можно воспользоваться одной из следующих формул &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&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;
[1] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12539</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12539"/>
		<updated>2016-10-16T13:38:44Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер.&lt;br /&gt;
&lt;br /&gt;
Назначение: кластеризация очень больших наборов числовых данных.&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;\{p_i\}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - число кластеров, на  которое необходимо разбить множество&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
Алгоритм строит &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров путем минимизации функции &amp;lt;math&amp;gt;E = \sum^{k}_{i=1} {\sum^{}_{p\in C_i} {\left \| p - m_i \right \|^2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами можно воспользоваться одной из следующих формул &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&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;
[1] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=12537</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=12537"/>
		<updated>2016-10-16T13:37:54Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер.&lt;br /&gt;
&lt;br /&gt;
Назначение: кластеризация очень больших наборов числовых данных.&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных &amp;lt;math&amp;gt;{p_i}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - число кластеров, на  которое необходимо разбить множество&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
Алгоритм строит &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; кластеров путем минимизации функции &amp;lt;math&amp;gt;E = \sum^{k}_{i=1} {\sum^{}_{p\in C_i} {\left \| p - m_i \right \|^2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами можно воспользоваться одной из следующих формул &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&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;
[1] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=9322</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=9322"/>
		<updated>2016-10-15T11:44:14Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер.&lt;br /&gt;
&lt;br /&gt;
Назначение: кластеризация очень больших наборов числовых данных.&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных {p_i}, k - число кластеров, на  которое необходимо разбить множество&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i, i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
Алгоритм строит k кластеров путем минимизации функции &amp;lt;math&amp;gt;E = \sum^{k}_{i=1} {\sum^{}_{p\in C_i} {\left \| p - m_i \right \|^2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами можно воспользоваться одной из следующих формул &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&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;
[1] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=9321</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=9321"/>
		<updated>2016-10-15T11:43:54Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер.&lt;br /&gt;
&lt;br /&gt;
Назначение: кластеризация очень больших наборов числовых данных.&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных {p_i}, k - число кластеров, на  которое необходимо разбить множество&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества &amp;lt;math&amp;gt;C_i i = 1..k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
Алгоритм строит k кластеров путем минимизации функции &amp;lt;math&amp;gt;E = \sum^{k}_{i=1} {\sum^{}_{p\in C_i} {\left \| p - m_i \right \|^2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами можно воспользоваться одной из следующих формул &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&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;
[1] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=9277</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=9277"/>
		<updated>2016-10-15T11:33:12Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер.&lt;br /&gt;
&lt;br /&gt;
Назначение: кластеризация очень больших наборов числовых данных.&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных {p_i}, k - число кластеров, на  которое необходимо разбить множество&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: множества C_i i = 1..k&lt;br /&gt;
&lt;br /&gt;
Формулы метода:&lt;br /&gt;
Алгоритм строит k кластеров путем минимизации функции &amp;lt;math&amp;gt;E = \sum^{k}_{i=1} {\sum^{}_{p\in C_i} {\left \| p - m_i \right \|^2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами можно воспользоваться одной из следующих формул &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&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;
[1] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=9273</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=9273"/>
		<updated>2016-10-15T11:32:13Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер.&lt;br /&gt;
&lt;br /&gt;
Назначение: кластеризация очень больших наборов числовых данных.&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Исходные данные: множество данных {p_i}, k - число кластеров, на  которое необходимо разбить множество&lt;br /&gt;
Вычисляемые данные: k множеств C_i&lt;br /&gt;
Формулы метода:&lt;br /&gt;
Агоритм строит k кластеров путем минимизации функции &amp;lt;math&amp;gt;E = \sum^{k}_{i=1} {\sum^{}_{p\in C_i} {\left \| p - m_i \right \|^2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вычисления расстояния между кластерами можно воспользоваться одной из следующих формул &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&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;
[1] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=9207</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=9207"/>
		<updated>2016-10-15T11:07:05Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер.&lt;br /&gt;
&lt;br /&gt;
Назначение: кластеризация очень больших наборов числовых данных.&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Агоритм строит k кластеров путем минимизации функции &amp;lt;math&amp;gt;E = \sum^{k}_{i=1} {\sum^{}_{p\in C_i} {\left \| p - m_i \right \|^2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{min}(C_i, C_j) = \min_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&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;
[1] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=9200</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=9200"/>
		<updated>2016-10-15T11:05:39Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер.&lt;br /&gt;
&lt;br /&gt;
Назначение: кластеризация очень больших наборов числовых данных.&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Агоритм строит k кластеров путем минимизации функции &amp;lt;math&amp;gt;E = \sum^{k}_{i=1} {\sum^{}_{p\in C_i} {\left \| p - m_i \right \|^2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max_{p&#039;\in C_j, p&#039;\in C_j}\left \|p - p&#039;\right \|&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;
[1] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=9196</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=9196"/>
		<updated>2016-10-15T11:04:52Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер.&lt;br /&gt;
&lt;br /&gt;
Назначение: кластеризация очень больших наборов числовых данных.&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Агоритм строит k кластеров путем минимизации функции &amp;lt;math&amp;gt;E = \sum^{k}_{i=1} {\sum^{}_{p\in C_i} {\left \| p - m_i \right \|^2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{max}(C_i, C_j) = \max\left \|p - p&#039;\right \|&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;
[1] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
	<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:Karibov/%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=9178</id>
		<title>Участник:Karibov/Алгоритм кластеризации с использованием представлений</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:Karibov/%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=9178"/>
		<updated>2016-10-15T10:58:33Z</updated>

		<summary type="html">&lt;p&gt;X.kurashov: /* Математическое описание алгоритма */&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;
Выполняет иерархическую кластеризацию с использованием набора определяющих точек для&lt;br /&gt;
определения объекта в кластер.&lt;br /&gt;
&lt;br /&gt;
Назначение: кластеризация очень больших наборов числовых данных.&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]:&lt;br /&gt;
&lt;br /&gt;
Шаг 1: Построение дерева кластеров, состоящего из каждой строки входного набора данных.&lt;br /&gt;
&lt;br /&gt;
Шаг 2: Формирование «кучи» в оперативной памяти, расчет расстояния до ближайшего кластера&lt;br /&gt;
(строки данных) для каждого кластера. При формировании кучи кластеры сортируются по возрастанию&lt;br /&gt;
дистанции от кластера до ближайшего кластера. Расстояние между кластерами определяется по двум&lt;br /&gt;
ближайшим элементам из соседних кластеров. Для определения расстояния между кластерами&lt;br /&gt;
используются «манхеттенская», «евклидова» метрики или похожие на них функции.&lt;br /&gt;
&lt;br /&gt;
Шаг 3: Слияние ближних кластеров в один кластер. Новый кластер получает все точки входящих в&lt;br /&gt;
него входных данных. Расчет расстояния до остальных кластеров для новообразованного кластера. Для&lt;br /&gt;
расчета расстояния кластеры делятся на две группы: первая группа – кластеры, у которых ближайшими&lt;br /&gt;
кластерами считаются кластеры, входящие в новообразованный кластер, остальные кластеры – вторая&lt;br /&gt;
группа. И при этом для кластеров из первой группы, если расстояние до новообразованного кластера&lt;br /&gt;
меньше чем до предыдущего ближайшего кластера, то ближайший кластер меняется на новообразованный&lt;br /&gt;
кластер. В противном случае ищется новый ближайший кластер, но при этом не берутся кластеры,&lt;br /&gt;
расстояния до которых больше, чем до новообразованного кластера. Для кластеров второй группы&lt;br /&gt;
выполняется следующее: если расстояние до новообразованного кластера ближе, чем предыдущий&lt;br /&gt;
ближайший кластер, то ближайший кластер меняется. В противном случае ничего не происходит.&lt;br /&gt;
&lt;br /&gt;
Шаг 4: Переход на шаг 3, если не получено требуемое количество кластеров.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
Агоритм строит k кластеров путем минимизации функции &amp;lt;math&amp;gt;E = \sum^{k}_{i=1} {\sum^{}_{p\in C_i} {\left \| p - m_i \right \|^2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{mean}(C_i, C_j) = \left \|m_i - m_j\right \|&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ave}(C_i, C_j) = \frac{1}{n_in_j} {\sum^{}_{p\in C_i} {\sum^{}_{p&#039;\in C_j} {\left \|p - p&#039;\right \|}}}&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;
[1] Нейский И.М. Классификация и сравнение методов кластеризации http://it-claim.ru/Persons/Neyskiy/Article2_Neiskiy.pdf&lt;/div&gt;</summary>
		<author><name>X.kurashov</name></author>
	</entry>
</feed>