Участник:Антонина Егорова/Алгоритм кластеризации категориальных данных CLOPE: различия между версиями
Строка 1: | Строка 1: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Свойства и структура алгоритма == | == Свойства и структура алгоритма == | ||
=== Общее описание алгоритма === | === Общее описание алгоритма === | ||
+ | Алгоритм CLOPE (Clustering with sLOPE) предназначен для кластеризации огромных наборов категориальных данных. В основе данного алгоритма лежит идея максимизации глобальной функции стоимости, повышающей близость транзакций в кластерах при помощи увеличения параметра кластерной гистограммы. Во время работы этого алгоритма в оперативной памяти хранится только текущая транзакция и немного информации по каждому кластеру. | ||
=== Математическое описание алгоритма === | === Математическое описание алгоритма === | ||
+ | Пусть имеется база транзакций <math>D</math>, которая состоит из множества транзакций <math>\{t_1,t_2,...,t_n\}</math>. При этом каждая транзакция - набор объектов <math>\{i_1,...,i_m\} </math>. | ||
+ | |||
+ | Множество кластеров <math>\{C_1,...,C_k\} </math> - это разбиение множества транзакций <math>\{t_1,...t_n\} </math>, при котором | ||
+ | <ol> | ||
+ | <li><math>C_1 \cup \ldots \cup C_k = \{t_1,...,t_n\}</math> </li> | ||
+ | <li><math>C_i</math> <math>\ne</math> <math>\empty</math> <math>\land</math> <math>C_i</math> <math>\cap</math> <math>C_j= \empty</math>, для <math>1</math> <math>\le</math> <math>i</math>, <math> j</math> <math> \le</math> <math> k</math>.</li> | ||
+ | </ol> | ||
+ | |||
+ | Для каждого кластера <math>C</math> определяются следующие характеристики : | ||
+ | |||
+ | : <math>D(C)</math> — множество уникальных объектов в данном кластере <math> C</math>, | ||
+ | |||
+ | : <math>Occ(i,C) </math> — количество вхождений объекта <math> i</math> в кластер <math> C</math> , | ||
+ | |||
+ | : <math>S(C) = \sum_{i \in D(C)} Occ(i,C) = \sum _{t_i \in C} \mid t_i \mid </math>; — количество всех объектов в кластере <math> C</math>, | ||
+ | |||
+ | : <math>W(C) </math> = <math> \mid</math> <math>D(C)</math> <math>\mid</math> — ширина кластера, | ||
+ | |||
+ | : <math>H(C)</math> = <math> \frac{S(C)}{W(C)}</math> — высота кластера. | ||
+ | |||
+ | Функция стоимости: | ||
+ | |||
+ | <math> Profit(C) = \frac{\sum^{k}_{i=1} \frac{S(C_i)}{W(C_i)^r} \times \mid C_i \mid} {\sum^{k}_{i=1} \mid C_i \mid } </math>, | ||
+ | |||
+ | где <math>\mid C_i \mid</math> - количество объектов в <math>i</math>-ом кластере, <math>k</math> – общее количество кластеров. | ||
+ | Коэффициент отталкивания <math>r</math> регулирует уровень похожести среди транзакций одного кластера. Чем больше <math>r</math>, тем ниже уровень сходства и тем больше кластеров будет сгенерировано. | ||
+ | |||
+ | Таким образом задача кластеризации алгоритмом CLOPE состоит в том, чтобы для заданных множества <math>D</math> и коэффициента отталкивания <math>r</math> найти такое разбиение <math>C</math>, для которого значение функции цены максимально. | ||
+ | |||
+ | |||
+ | Постановка задачи кластеризации алгоритмом CLOPE выглядит следующим образом: | ||
+ | |||
+ | для заданных <math>D</math> и <math>r</math> найти разбиение <math>C</math> такое, что: | ||
+ | <math>Profit(C) \longrightarrow max </math>. | ||
=== Вычислительное ядро алгоритма === | === Вычислительное ядро алгоритма === | ||
+ | Вычислительное ядро алгоритма заключается в том, чтобы вычислять цену добавления и цену удаления транзакции из кластера на каждом шаге. Для этого необходимо найти результат следующих операций: | ||
+ | |||
+ | *<math>S_{new}(C_i)=S(C_i) \pm \mid(t_n)\mid </math>, | ||
+ | |||
+ | *<math>W_{new}(C_i)=\mid D(C_i \cup t_n)|</math> | ||
+ | |||
+ | *вычисление стоимости <math>\frac{S_{new}(C_i)(\mid C_i \mid \pm 1)}{W_{new}(C_i)^r} - \frac{S(C_i) \mid C_i \mid }{W(C_i)^r}</math> | ||
=== Макроструктура алгоритма === | === Макроструктура алгоритма === | ||
+ | Алгоритм состоит из двух этапов - инициализации и итерации. На первом этапе создается исходное разбиение - считываются все транзакции, которые помещаются в определенные кластеры, определяющиеся максимизацией функции стоимости. Второй этап может повторяться несколько раз до тех пор, пока перемещение транзакции в другой кластер не увеличивает функцию стоимости. | ||
=== Схема реализации последовательного алгоритма === | === Схема реализации последовательного алгоритма === | ||
+ | |||
==== Описание реализации алгоритма на псевдокоде ==== | ==== Описание реализации алгоритма на псевдокоде ==== |
Версия 21:55, 4 февраля 2017
Содержание
- 1 Свойства и структура алгоритма
- 1.1 Общее описание алгоритма
- 1.2 Математическое описание алгоритма
- 1.3 Вычислительное ядро алгоритма
- 1.4 Макроструктура алгоритма
- 1.5 Схема реализации последовательного алгоритма
- 1.6 Последовательная сложность алгоритма
- 1.7 Информационный граф
- 1.8 Ресурс параллелизма алгоритма
- 1.9 Входные и выходные данные алгоритма
- 1.10 Свойства алгоритма
- 2 Программная реализация алгоритма
- 2.1 Особенности реализации последовательного алгоритма
- 2.2 Локальность данных и вычислений
- 2.3 Возможные способы и особенности параллельной реализации алгоритма
- 2.4 Масштабируемость алгоритма и его реализации
- 2.5 Динамические характеристики и эффективность реализации алгоритма
- 2.6 Выводы для классов архитектур
- 2.7 Существующие реализации алгоритма
- 3 Литература
1 Свойства и структура алгоритма
1.1 Общее описание алгоритма
Алгоритм CLOPE (Clustering with sLOPE) предназначен для кластеризации огромных наборов категориальных данных. В основе данного алгоритма лежит идея максимизации глобальной функции стоимости, повышающей близость транзакций в кластерах при помощи увеличения параметра кластерной гистограммы. Во время работы этого алгоритма в оперативной памяти хранится только текущая транзакция и немного информации по каждому кластеру.
1.2 Математическое описание алгоритма
Пусть имеется база транзакций [math]D[/math], которая состоит из множества транзакций [math]\{t_1,t_2,...,t_n\}[/math]. При этом каждая транзакция - набор объектов [math]\{i_1,...,i_m\} [/math].
Множество кластеров [math]\{C_1,...,C_k\} [/math] - это разбиение множества транзакций [math]\{t_1,...t_n\} [/math], при котором
- [math]C_1 \cup \ldots \cup C_k = \{t_1,...,t_n\}[/math]
- [math]C_i[/math] [math]\ne[/math] [math]\empty[/math] [math]\land[/math] [math]C_i[/math] [math]\cap[/math] [math]C_j= \empty[/math], для [math]1[/math] [math]\le[/math] [math]i[/math], [math] j[/math] [math] \le[/math] [math] k[/math].
Для каждого кластера [math]C[/math] определяются следующие характеристики :
- [math]D(C)[/math] — множество уникальных объектов в данном кластере [math] C[/math],
- [math]Occ(i,C) [/math] — количество вхождений объекта [math] i[/math] в кластер [math] C[/math] ,
- [math]S(C) = \sum_{i \in D(C)} Occ(i,C) = \sum _{t_i \in C} \mid t_i \mid [/math]; — количество всех объектов в кластере [math] C[/math],
- [math]W(C) [/math] = [math] \mid[/math] [math]D(C)[/math] [math]\mid[/math] — ширина кластера,
- [math]H(C)[/math] = [math] \frac{S(C)}{W(C)}[/math] — высота кластера.
Функция стоимости:
[math] Profit(C) = \frac{\sum^{k}_{i=1} \frac{S(C_i)}{W(C_i)^r} \times \mid C_i \mid} {\sum^{k}_{i=1} \mid C_i \mid } [/math],
где [math]\mid C_i \mid[/math] - количество объектов в [math]i[/math]-ом кластере, [math]k[/math] – общее количество кластеров. Коэффициент отталкивания [math]r[/math] регулирует уровень похожести среди транзакций одного кластера. Чем больше [math]r[/math], тем ниже уровень сходства и тем больше кластеров будет сгенерировано.
Таким образом задача кластеризации алгоритмом CLOPE состоит в том, чтобы для заданных множества [math]D[/math] и коэффициента отталкивания [math]r[/math] найти такое разбиение [math]C[/math], для которого значение функции цены максимально.
Постановка задачи кластеризации алгоритмом CLOPE выглядит следующим образом:
для заданных [math]D[/math] и [math]r[/math] найти разбиение [math]C[/math] такое, что: [math]Profit(C) \longrightarrow max [/math].
1.3 Вычислительное ядро алгоритма
Вычислительное ядро алгоритма заключается в том, чтобы вычислять цену добавления и цену удаления транзакции из кластера на каждом шаге. Для этого необходимо найти результат следующих операций:
- [math]S_{new}(C_i)=S(C_i) \pm \mid(t_n)\mid [/math],
- [math]W_{new}(C_i)=\mid D(C_i \cup t_n)|[/math]
- вычисление стоимости [math]\frac{S_{new}(C_i)(\mid C_i \mid \pm 1)}{W_{new}(C_i)^r} - \frac{S(C_i) \mid C_i \mid }{W(C_i)^r}[/math]
1.4 Макроструктура алгоритма
Алгоритм состоит из двух этапов - инициализации и итерации. На первом этапе создается исходное разбиение - считываются все транзакции, которые помещаются в определенные кластеры, определяющиеся максимизацией функции стоимости. Второй этап может повторяться несколько раз до тех пор, пока перемещение транзакции в другой кластер не увеличивает функцию стоимости.
1.5 Схема реализации последовательного алгоритма
1.5.1 Описание реализации алгоритма на псевдокоде
1.6 Последовательная сложность алгоритма
1.7 Информационный граф
1.8 Ресурс параллелизма алгоритма
1.9 Входные и выходные данные алгоритма
1.10 Свойства алгоритма
2 Программная реализация алгоритма
2.1 Особенности реализации последовательного алгоритма
2.2 Локальность данных и вычислений
2.3 Возможные способы и особенности параллельной реализации алгоритма
2.4 Масштабируемость алгоритма и его реализации
2.5 Динамические характеристики и эффективность реализации алгоритма
2.6 Выводы для классов архитектур
2.7 Существующие реализации алгоритма
3 Литература
<references \>