Кластеризация графов без использования метрик (пример)
Материал из MachineLearning.
(→Постановка задачи) |
(→Алгоритм) |
||
Строка 36: | Строка 36: | ||
<br> | <br> | ||
Процесс: <br> | Процесс: <br> | ||
- | Пока |V_G | | + | Пока <tex>|V_G | \geq m</tex> <br> |
- | Выбирается произвольное ребро (u,v) | + | Выбирается произвольное ребро <tex>(u,v) \in E_G</tex> <br> |
- | + | <tex>G \leftarrow G/\{u,v\}</tex> <br> | |
Вернуть <tex>G</tex>. | Вернуть <tex>G</tex>. | ||
Строка 51: | Строка 51: | ||
Процесс: | Процесс: | ||
Инициализация: <tex>i=1</tex>. <br> | Инициализация: <tex>i=1</tex>. <br> | ||
- | Повторять пока <tex> | + | Повторять пока <tex>i \leq r</tex> <br> |
Слияние <tex>(G,k)</tex> <br> | Слияние <tex>(G,k)</tex> <br> | ||
<tex>i=i+1</tex> <br> | <tex>i=i+1</tex> <br> | ||
- | Из получившихся дендрограмм выбираем | + | Из получившихся дендрограмм выбираем <tex>\min_i C_i</tex> |
- | Здесь во внутреннем цикле происходит построение дендрограммы. Поскольку алгоритм сливает вершины совершенно произвольно, то мы не можем гарантировать нахождение оптимального решения. Однако можно оценить вероятность этого. | + | Здесь во внутреннем цикле (процедура Слияние) происходит построение дендрограммы. Поскольку алгоритм сливает вершины совершенно произвольно, то мы не можем гарантировать нахождение оптимального решения. Однако можно оценить вероятность этого. |
<br> | <br> | ||
- | ::<tex>P(succeed)=P(C_i=C_{opt})\geq\frac1{\ | + | ::<tex>P(succeed)=P(C_i=C_{opt})\geq\frac1{\binom{n+k-2}{2k-2}}</tex> |
Внешний цикл представляет собой процедуру вероятностной амплификации. Повторив внутренний цикл <tex>r</tex> раз мы получим, что | Внешний цикл представляет собой процедуру вероятностной амплификации. Повторив внутренний цикл <tex>r</tex> раз мы получим, что | ||
<br> | <br> | ||
- | ::<tex>P(succeed) \geq 1 - (1-\frac1{ | + | ::<tex>P(succeed) \geq 1 - (1-\frac1{С_{n+k-2^{2k-2}}})^r</tex>, |
- | откуда для <tex>r=\ | + | откуда для <tex>r=\binom{n+k-2}{2k-2} \ln n</tex> выполнено <tex>P(succeed) \geq 1-\frac1n</tex>. |
<br> | <br> | ||
Получаем, что поскольку <tex>r=n^{2k-2} \ln n</tex>, трудоемкость алгоритма составляет <tex>O(rn^2)=O(n^{2k} \log n)</tex>. | Получаем, что поскольку <tex>r=n^{2k-2} \ln n</tex>, трудоемкость алгоритма составляет <tex>O(rn^2)=O(n^{2k} \log n)</tex>. |
Версия 07:54, 12 мая 2011
Содержание |
Аннотация
Данная работа посвящена решению задачи кластеризации. Рассматривается задача кластеризации на графах, на которых не задана метрика. Подобная задача может встретиться, например, при анализе групп знакомств в социальных сетях. Для ее решения предлагается использовать вероятностный алгоритм построения дендрограммы.
Постановка задачи
Пусть задан граф ( – множество вершин графа, – множество ребер, – весовая функция) и целое число .
Задача кластеризации заключается в поиске разбиения на непересекающихся подмножеств (), с минимизацией заданного функционала . В качестве такого функционала будем рассматривать сумму весов ребер между подмножествами, т.е.
Введем ряд определений, которыми будем пользоваться в дальнейшем.
Определение. Вероятность, превышающую , будем называть высокой.
Определение. Вероятностный алгоритм, получающий на вход данные оптимизационной задачи и параметр , который за полиномиальное время с высокой вероятностью получает решение, не более чем в раз превышающее оптимальное, будем называть полиномиальной рандомизированной аппроксимационной схемой (PRAS).
Определение. Если PRAS находит оптимальное решение с высокой вероятностью для любого , то такой алгоритм будем называть вероятностным алгоритмом типа Монте-Карло.
В дальнейшем граф будем считать связным, а веса ребер – единичными. Несколько слов о модификации алгоритма для решения задачи в случае взвешенного графа будет сказано в следующем разделе.
Первое условие не накладывает никаких дополнительных ограничений, поскольку в случае несвязного графа можно каждую отдельную компоненту связности рассматривать в качестве одного из кластеров.
Второе условие возникает из конструкции алгоритма и приводит к тому, что минимизируемый функционал будет представлять собой число ребер между кластерами. Для того чтобы рассмотреть задачу в более общем случае потребуется дерандомизация исследуемого алгоритма, что приведет к возрастанию его трудоемкости.
Заметим, что рассматривается задача с заранее заданным число кластеров. Подбор оптимального значения числа можно в дальнейшем осуществить простым перебором.
Алгоритм
В качестве алгоритма для кластеризации предлагается использовать вероятностный алгоритм типа Монте-Карло, придуманный Каргером в работе [] для решения задачи минимального k-разреза.
Введем дополнительную процедуру, для описания данного алгоритма. Эта процедура представляет собой построение дендрограммы до заранее заданного уровня.
Слияние
Вход: граф , число .
Выход: гиперграф .
Процесс:
Пока
Выбирается произвольное ребро
Вернуть .
Здесь и далее граф задается симметричной матрицей инцидентности, и все операции слияния вершин реализованы как работа со строками и столбцами этой матрицы. Функционал тогда равен половине суммы всех недиагональных элементов матрицы. Собственно алгоритм описывается следующим образом:
Алгоритм Каргера
Вход: граф , число , число - количество итераций алгоритма.
Выход: k-разрез .
Процесс:
Инициализация: .
Повторять пока
Слияние
Из получившихся дендрограмм выбираем
Здесь во внутреннем цикле (процедура Слияние) происходит построение дендрограммы. Поскольку алгоритм сливает вершины совершенно произвольно, то мы не можем гарантировать нахождение оптимального решения. Однако можно оценить вероятность этого.
Внешний цикл представляет собой процедуру вероятностной амплификации. Повторив внутренний цикл раз мы получим, что
- ,
откуда для выполнено .
Получаем, что поскольку , трудоемкость алгоритма составляет .
Так как каждый внешний цикл алгоритма выполняется независимо от остальных, алгоритм Каргера можно модифицировать и уменьшить время его работы, используя параллельные вычисления. Если задействовать процессоров и выполнить на каждом из них по одному вычислению внешнего цикла алгоритма, то трудоемкость такого распределенного алгоритма будет . Таким образом, в зависимости от существующих мощностей можно подобрать оптимальное соотношение между количеством используемых процессоров и трудоемкостью получающейся задачи.
Еще одно направление модификации алгоритма позволяет рассмотреть случай взвешенного графа. Для этого требуется ввести дополнительный функционал, который перед слиянием вершин будет давать оценки, чтобы сливать только те вершины, ребра между которыми наиболее похожи на межкластерные.
Вычислительный эксперимент
Вычислительный эксперимент будет проведен на ряде модельных графов. Представлены графы с различным числом вершин, результаты кластеризации данных графов, полученные рассматриваемым алгоритмом, и получены графики зависимости времени работы и качества работы алгоритма от числа вершин в графе.
Исходный код
Литература
Данная статья является непроверенным учебным заданием.
До указанного срока статья не должна редактироваться другими участниками проекта MachineLearning.ru. По его окончании любой участник вправе исправить данную статью по своему усмотрению и удалить данное предупреждение, выводимое с помощью шаблона {{Задание}}. См. также методические указания по использованию Ресурса MachineLearning.ru в учебном процессе. |