Алгоритм Лувена для обнаружения сообществ (Louvain Method)
Материал из MachineLearning.
| | Статья написана с использованием LLM Qwen3.7-Plus и проверена участником Mariia Shubina 10:22, 19 июля 2026 (MSD) |
|
Введение
Алгоритм Лувена (англ. Louvain method) — это эвристический метод для обнаружения сообществ в больших сетях, основанный на жадной оптимизации модулярности. Впервые предложенный в 2008 году Венсаном Блонделем и его коллегами, алгоритм получил широкое распространение благодаря своей вычислительной эффективности и способности выявлять иерархическую структуру в графах, содержащих миллионы вершин и рёбер[1].
Метод сочетает локальную оптимизацию с последующей иерархической агрегацией графа, что позволяет достигать высоких значений модулярности за время, близкое к линейному относительно числа рёбер. В данной статье приводится строгая математическая постановка задачи, детальный разбор фаз алгоритма, анализ его вычислительной сложности, а также обсуждение ограничений и современных расширений, включая переход к алгоритму Лейдена.
Постановка задачи и математические основы
Формальная постановка задачи
Пусть дан неориентированный взвешенный граф , где
— множество вершин (
), а
— множество рёбер (
). Граф описывается матрицей смежности
, где элемент
представляет собой вес ребра между вершинами
и
(для невзвешенных графов
). Степень вершины
обозначается как
, а общий вес всех рёбер в графе равен
.
Задача обнаружения сообществ заключается в разбиении множества вершин на непересекающиеся подмножества (сообщества)
таким образом, чтобы связи внутри сообществ были значительно плотнее, чем связи между различными сообществами.
Модулярность Ньюмана-Гирвана
Ключевой метрикой качества разбиения в алгоритме Лувена является модулярность , предложенная Ньюманом и Гирваном. Модулярность измеряет разность между долей рёбер внутри сообществ и математическим ожиданием этой доли в нулевой модели (модели конфигураций), которая сохраняет распределение степеней вершин, но соединяет их случайным образом.
Формула модулярности имеет вид:
где , если вершины
и
принадлежат одному сообществу, и
в противном случае. Слагаемое
представляет собой вероятность наличия ребра между
и
в модели конфигураций. Максимально возможное значение
близко к 1, хотя на практике для реальных сетей значения выше 0.3–0.7 уже свидетельствуют о выраженной модульной структуре.
Приращение модулярности при перемещении узла
Основная вычислительная идея алгоритма заключается в эффективном расчёте изменения модулярности при перемещении вершины
из её текущего сообщества в соседнее сообщество
.
Пусть — сумма весов рёбер внутри сообщества
, а
— сумма весов всех рёбер, инцидентных вершинам сообщества
. Обозначим через
сумму весов рёбер между вершиной
и вершинами сообщества
.
Приращение модулярности при добавлении вершины в сообщество
вычисляется как разность модулярности после и до перемещения:
После алгебраических упрощений эта формула сводится к виду, который используется в практических реализациях для минимизации вычислений:
Аналогичная формула применяется для расчёта выигрыша при удалении вершины из сообщества (с заменой на сумму весов рёбер к сообществу без учёта самой вершины, а
на сумму без учёта степени вершины).
Фазы алгоритма Лувена
Алгоритм работает итеративно и состоит из двух чередующихся фаз, которые применяются рекурсивно к агрегированным графам.
Фаза 1: Локальная оптимизация
На начальном этапе каждая вершина графа выделяется в собственное уникальное сообщество. Далее алгоритм выполняет следующие действия для каждой вершины :
- Рассматриваются все соседние сообщества вершины
.
- Для каждого соседнего сообщества вычисляется
, которое получилось бы при перемещении
в это сообщество.
- Вершина
перемещается в то сообщество, которое обеспечивает максимальный положительный прирост
. Если ни одно перемещение не даёт положительного прироста, вершина остаётся в своём текущем сообществе.
- Процесс повторяется для всех вершин графа в определённом порядке до тех пор, пока за полный проход не будет сделано ни одного перемещения (достигнут локальный максимум модулярности).
Фаза 2: Агрегация графа
После завершения первой фазы строится новый, агрегированный граф:
- Каждое найденное сообщество становится новой супервершиной.
- Вес ребра между двумя супервершинами равен сумме весов всех рёбер между вершинами соответствующих сообществ в исходном графе.
- Ребра, соединяющие вершины внутри одного сообщества, превращаются в петли (self-loops) супервершины, вес которых равен сумме внутренних рёбер сообщества.
После построения агрегированного графа Фаза 1 применяется к нему снова. Процесс повторяется до тех пор, пока агрегация перестанет изменять структуру графа (количество супервершин не уменьшится) или не будет достигнут глобальный максимум модулярности.
Псевдокод и вычислительная сложность
Псевдокод
Вход: Граф G = (V, E) с весами рёбер A_ij Выход: Разбиение вершин на сообщества 1. Инициализация: присвоить каждой вершине i уникальное сообщество c_i = i 2. Повторять: 3. изменения = ложь 4. Для каждой вершины i в V (в случайном или фиксированном порядке): 5. удалить i из текущего сообщества 6. найти сообщество C, максимизирующее \Delta Q при добавлении i в C 7. если максимальное \Delta Q > 0: 8. переместить i в C 9. изменения = истина 10. если не изменения: прервать цикл (Фаза 1 завершена) 11. Построить агрегированный граф G' из найденных сообществ 12. Если G' идентичен графу предыдущей итерации: 13. завершить алгоритм 14. Иначе: 15. G = G' 16. перейти к шагу 2 (начать новую итерацию для агрегированного графа)
Анализ вычислительной сложности
- Время: Вычисление
для одной вершины требует знания только степеней и сумм весов рёбер соседних сообществ, что при правильной поддержке структур данных (например, хеш-таблиц для
и
) выполняется за время, пропорциональное степени вершины
. Полный проход по всем вершинам занимает время
. На практике алгоритм сходится за небольшое число проходов (обычно 2–5), а количество уровней иерархической агрегации логарифмически мало. Таким образом, общая временная сложность оценивается как
или даже
для разреженных графов, что делает метод одним из самых быстрых.
- Память: Требуется хранение исходного графа, структур для отслеживания сообществ и агрегированных графов на каждом уровне. Пространственная сложность составляет
, что позволяет обрабатывать графы с десятками миллионов рёбер на стандартном оборудовании.
Проблема предела разрешения
Одним из фундаментальных ограничений оптимизации модулярности является так называемый предел разрешения (resolution limit), впервые описанный Фортунато и Бартелеми в 2007 году[1].
Модулярность сравнивает фактическое число рёбер с математическим ожиданием в модели конфигураций. В очень больших сетях ( велико) ожидаемое число рёбер между двумя небольшими, но внутренне плотными сообществами может быть меньше 1. В результате объединение этих двух сообществ в одно формально увеличивает значение
, даже если они структурно обособлены. Алгоритм Лувена, максимизируя
, неизбежно сольёт такие мелкие сообщества, не позволяя обнаружить мелкомасштабную структуру.
Параметр разрешения
Для решения этой проблемы вводится параметр разрешения , модифицирующий формулу модулярности:
- При
мы получаем классическую модулярность.
- При
штраф за объединение сообществ увеличивается, что способствует обнаружению меньших и более плотных сообществ.
- При
алгоритм склонен формировать более крупные, укрупнённые сообщества.
Выбор оптимального зависит от предметной области и может осуществляться с помощью методов стабильности или кросс-валидации на графах.
Сравнение с другими методами
- Спектральная кластеризация: основана на поиске собственных векторов матрицы Лапласа графа. Обладает строгими теоретическими гарантиями, но имеет временную сложность
, что делает её неприменимой для больших сетей без использования аппроксимаций (например, метода Нистрома).
- Алгоритм Гирвана-Ньюмана: иерархический метод, удаляющий рёбра с наибольшей промежуточностью (betweenness centrality). Имеет сложность
или
для разреженных графов, что также ограничивает его применение малыми сетями, несмотря на высокую интерпретируемость.
- Распространение меток (Label Propagation): работает за время
, передавая метки соседям. Чрезвычайно быстр, но сильно недетерминирован и склонен к формированию одного гигантского сообщества (так называемого "monster community"), поглощающего большую часть графа.
- Алгоритм Лейден (Leiden algorithm): прямой современный преемник алгоритма Лувена, предложенный Траагом и др. в 2019 году[1]. Он добавляет фазу рафинирования (refinement) между локальной оптимизацией и агрегацией, что гарантирует связность всех выделяемых сообществ и часто приводит к более высоким значениям модулярности при сопоставимой вычислительной стоимости.
Ограничения метода
Несмотря на популярность, классический алгоритм Лувена имеет ряд существенных ограничений:
- Недетерминированность: Результат зависит от порядка обхода вершин на Фазе 1. Разные порядки могут приводить к различным локальным оптимумам модулярности.
- Риск застревания в локальных оптимумах: Жадный характер перемещения вершин не гарантирует нахождения глобального максимума
. Сообщества, однажды объединённые на ранних этапах агрегации, не могут быть разделены на последующих уровнях (проблема "необратимости агрегации").
- Несвязные сообщества: Из-за механизма агрегации супервершина на верхнем уровне может соответствовать набору вершин в исходном графе, которые не имеют путей связи друг с другом внутри этого сообщества. Это топологический артефакт, который нарушает интуитивное определение сообщества как связного подграфа.
Варианты и расширения
Для преодоления ограничений классического подхода были разработаны различные модификации:
- Динамический (инкрементальный) Лувен: адаптирован для временных графов. Вместо полного перезапуска алгоритма при добавлении или удалении рёбер пересчитываются только значения
для затронутых вершин и их соседей, что обеспечивает почти постоянное время обновления.
- Многоуровневое рафинирование: техники, при которых после завершения агрегации алгоритм "спускается" обратно к исходному графу, используя найденное разбиение как начальное приближение для повторной локальной оптимизации, что помогает выйти из локальных оптимумов.
- Глубокие методы кластеризации графов (GNN): современные подходы, такие как Graph Autoencoders или методы на основе контрастивного обучения, не максимизируют модулярность напрямую, а обучают векторные представления вершин, сохраняя топологию. Они принципиально отличаются от Лувена, так как являются параметрическими и требуют обучения, но часто превосходят эвристические методы в задачах с богатыми признаками вершин.
Литература
- Blondel V. D., Guillaume J. L., Lambiotte R., Lefebvre E. Fast unfolding of communities in large networks // Journal of Statistical Mechanics: Theory and Experiment: Журнал. — 2008. — Т. 2008. — № 10. — С. P10008.
- Traag V. A., Waltman L., van Eck N. J. From Louvain to Leiden: guaranteeing well-connected communities // Scientific Reports: Журнал. — 2019. — Т. 9. — № 1. — С. 5233.
- Fortunato S., Barthelemy M. Resolution limit in community detection // Proceedings of the National Academy of Sciences: Журнал. — 2007. — Т. 104. — № 1. — С. 36-41.
- Newman M. E. J. Networks: An Introduction. — Oxford University Press, 2010. — 754 с.

