Метод Лувена

Алгоритм кластеризации и обнаружения сообществ

Метод Лувена для обнаружения сообществ — это метод жадной оптимизации, предназначенный для извлечения непересекающихся сообществ из больших сетей, созданных Блонделем и др . [1] из Университета Лувена (источник названия этого метода).

Оптимизация модульности

Вдохновением для этого метода обнаружения сообществ является оптимизация модульности по мере продвижения алгоритма. Модульность — это значение шкалы между −1 (немодулярная кластеризация) и 1 (полностью модульная кластеризация), которое измеряет относительную плотность ребер внутри сообществ по отношению к ребрам вне сообществ. Оптимизация этого значения теоретически приводит к наилучшей возможной группировке узлов данной сети. Но поскольку перебор всех возможных конфигураций узлов в группы нецелесообразен, используются эвристические алгоритмы.

В методе обнаружения сообществ Лувена сначала находятся небольшие сообщества путем оптимизации модульности локально на всех узлах, затем каждое небольшое сообщество группируется в один узел, и первый шаг повторяется. Метод похож на более ранний метод Клаузета, Ньюмена и Мура [2] , который соединяет сообщества, объединение которых дает наибольшее увеличение модульности. Было показано, что алгоритм Лувена правильно определяет структуру сообщества, когда она существует, в частности, в стохастической блочной модели. [3]

Описание алгоритма

Модульность

Значение, которое необходимо оптимизировать, — это модульность , определяемая как значение в диапазоне , который измеряет плотность связей внутри сообществ по сравнению со связями между сообществами. [1] Для взвешенного графа модульность определяется как: [ 1 , 1 ] {\displaystyle [-1,1]}

Q = 1 2 m i = 1 N j = 1 N [ A i j k i k j 2 m ] δ ( c i , c j ) , {\displaystyle Q={\frac {1}{2m}}\sum _{i=1}^{N}\sum _{j=1}^{N}{\bigg [}A_{ij}-{\frac {k_{i}k_{j}}{2m}}{\bigg ]}\delta (c_{i},c_{j}),}

где:

  • A i j {\displaystyle A_{ij}} представляет собой вес ребра между узлами i и j ; см. Матрица смежности ;
  • ⁠ ⁠ k i {\displaystyle k_{i}} и ⁠ ⁠ k j {\displaystyle k_{j}} — сумма весов ребер, прикрепленных к узлам i и j соответственно;
  • m — сумма весов всех ребер в графе;
  • N — общее количество узлов в графе;
  • ⁠ ⁠ c i {\displaystyle c_{i}} и ⁠ ⁠ c j {\displaystyle c_{j}} — сообщества, к которым принадлежат узлы i и j ; и
  • δ {\displaystyle \delta } — это дельта-функция Кронекера :

δ ( c i , c j ) = { 1 if  c i  and  c j  are the same cluster 0 otherwise {\displaystyle {\begin{aligned}\delta (c_{i},c_{j})&={\begin{cases}1&{\text{if }}c_{i}{\text{ and }}c_{j}{\text{ are the same cluster}}\\0&{\text{otherwise}}\end{cases}}\end{aligned}}}

На основе приведенного выше уравнения модульность сообщества c можно рассчитать следующим образом: [4]

Q c = 1 2 m i j A i j 1 { c i = c j = c } ( i k i 2 m 1 { c i = c } ) 2 = Σ i n 2 m ( Σ t o t 2 m ) 2 {\displaystyle {\begin{aligned}Q_{c}&={\dfrac {1}{2m}}\sum _{i}\sum _{j}A_{ij}\mathbf {1} \left\{c_{i}=c_{j}=c\right\}-\left(\sum _{i}{\dfrac {k_{i}}{2m}}\mathbf {1} \left\{c_{i}=c\right\}\right)^{2}\\&={\frac {\Sigma _{in}}{2m}}-\left({\frac {\Sigma _{tot}}{2m}}\right)^{2}\end{aligned}}}

где

  • Σ i n {\displaystyle \Sigma _{in}} — сумма весов ребер между узлами внутри сообщества c (каждое ребро рассматривается дважды); и
  • Σ t o t {\displaystyle \Sigma _{tot}} представляет собой сумму всех весов ребер для узлов внутри сообщества (включая ребра, которые связаны с другими сообществами).

Поскольку узлы в разных сообществах не вносят вклад в модульность Q , ее можно записать как:

Q = c Q c {\displaystyle Q=\sum _{c}Q_{c}}

Алгоритм метода Лувена

Метод Лувена работает путем повторения двух фаз. [1] На первой фазе узлы сортируются в сообщества на основе того, как изменяется модульность графа, когда узел перемещает сообщества. На второй фазе граф переосмысливается таким образом, что сообщества рассматриваются как отдельные узлы. Подробное объяснение приведено ниже.

Фаза 1

Рисунок 1: Каждый узел в графе случайным образом назначается в одноэлементное сообщество.
Каждый узел сети закреплен за своим собственным сообществом.

Метод Лувена начинается с рассмотрения каждого узла v в графе как его собственного сообщества. Это можно увидеть на рисунке 1, где каждая точка (представляющая узлы) имеет уникальный цвет (представляющий, к какому сообществу принадлежит узел).

Узлы группируются в сообщества

Для каждого узла v мы рассматриваем, как перемещение v из его текущего сообщества C в соседнее сообщество C' повлияет на модульность разбиения графа. В псевдокоде ниже это происходит в цикле for. Мы выбираем сообщество C' с наибольшим изменением модульности, и если изменение положительное, мы перемещаем v в C' ; в противном случае мы оставляем его там, где он есть. Это продолжается до тех пор, пока модульность не перестанет улучшаться.

Рисунок 2: Узлы распределяются по сообществам на основе их модульности.
функция moveNodes(граф G, раздел P): делать  старая_модульность <- текущая_модульность_раздела для v в V(G), сделать # найти сообщество, которое вызывает наибольшее увеличение модульности при перемещении в него v C' <- argmax(delta_Q) # delta_Q — это изменение модульности если delta_Q > 0, то переместить v в C' конец, если  конец для обновить текущую_модульность_раздела пока текущая_модульность_раздела > старая_модульность возврат P конечная функция

[5]

Этот процесс применяется многократно и последовательно ко всем узлам до тех пор, пока не может произойти никакого увеличения модульности. Как только достигается этот локальный максимум модульности, первая фаза заканчивается. На рисунке 2 показано, как может выглядеть график на рисунке 1 после одной итерации фазы 1.

Фаза 2

Сообщества сводятся к одному узлу

Для каждого сообщества в разделе нашего графа отдельные узлы, составляющие это сообщество, объединяются, и само сообщество становится узлом. Ребра, соединяющие отдельные сообщества, используются для взвешивания новых ребер, соединяющих наши агрегированные узлы.

Этот процесс моделируется в псевдокоде, где функцияgregateGraph возвращает новый граф, вершины которого являются разбиением старого графа, а ребра вычисляются с использованием старого графа. Эта функция не показывает, что ребра взвешиваются, но простая модификация позволит отслеживать эту информацию.

Рисунок 3: Сообщества сводятся к одному узлу с взвешенными ребрами.
функция агрегатГраф(Граф G, Раздел P): В <- П  E <- [(A,B) | (x,y) находится в E(G), x находится в A и A находится в P, y находится в B и B находится в P] возвратить График(V,E)конечная функция

[5]

Рисунок 3 показывает, как будет выглядеть график из рисунка 2 после агрегации. Этот график аналогичен графику на рисунке 1 в том смысле, что каждый узел назначен одному сообществу. Отсюда процесс можно повторять, чтобы больше узлов перемещалось в существующие сообщества, пока не будет достигнут оптимальный уровень модульности.

Приведенный ниже псевдокод показывает, как предыдущие две функции работают вместе, завершая процесс.

функция louvain(график G, раздел P): делать P <- moveNodes(G, P) done <- length(P) == length(V(G)) # каждое сообщество — это один узел, несмотря на запущенный moveNodes если этого не сделано, то: G <- агрегатГрафик(G, P) P <- singletonPartition(G) конец, если пока не сделаноконечная функцияфункция singletonPartition(Graph G): return [{v} | v находится в V(G)] # каждый узел помещается в свое собственное сообществоконечная функция

[5]

Сложность времени

В общем случае предполагается, что метод Лувена имеет временную сложность . Ричард Блондель, соавтор статьи, в которой изначально был опубликован метод Лувена, похоже, поддерживает эту идею [6], но другие источники утверждают, что временная сложность «по существу линейна по числу связей в графе», [7] что означает, что временная сложность вместо этого будет , где m — число ребер в графе. К сожалению, ни один источник не опубликовал анализ временной сложности метода Лувена, поэтому здесь мы попытаемся сделать это. O ( n log n ) {\displaystyle O(n\log {}n)} O ( m ) {\displaystyle O(m)}

В псевдокоде выше функция louvain управляет выполнением алгоритма. Ясно видно, что внутри louvain moveNodes будет повторяться до тех пор, пока не станет возможным объединять узлы в сообщества. Это зависит от двух факторов: насколько может улучшиться модульность графа и, в худшем случае, если модульность может улучшиться с каждой итерацией louvain , это зависит от того , насколько быстроgregateGraph сократит граф до одного узла.

Если в каждой итерации louvain , moveNodes может переместить только один узел в сообщество, тоgregateGraph сможет уменьшить размер графа только на один. Это приведет к тому, что louvain повторится v раз. Поскольку moveNodes проходит по всем узлам в графе, это приведет к временной сложности , где n — количество узлов. O ( n 2 ) {\displaystyle {\mathcal {O}}(n^{2})}

Неясно, возможна ли такая ситуация, поэтому приведенный выше результат следует считать слабой границей. Блондель и др. в своей оригинальной публикации заявляют, что большая часть времени выполнения тратится на ранние итерации алгоритма, поскольку «количество сообществ резко уменьшается уже после нескольких проходов». [1] Это можно понять, рассмотрев сценарий, в котором moveNodes может перемещать каждый узел так, чтобы каждое сообщество имело два узла. В этом случаеgregateGraph вернет граф в два раза меньше исходного. Если бы это продолжалось, то метод Лувена имел бы время выполнения , хотя неясно, будет ли это наихудшим случаем, лучшим случаем, средним случаем или ни одним из них. Кроме того, нет гарантии, что размер графа будет уменьшаться в том же размере с каждой итерацией, и поэтому ни одна функция логарифма не может идеально описать временную сложность. n log 2 n {\displaystyle n\log _{2}{n}}

Предыдущие использования

  • Социальная сеть Twitter (2,4 миллиона узлов, 38 миллионов ссылок) Хосепа Пухоля, Виджая Эррамилли и Пабло Родригеса: [8] Авторы исследуют проблему разбиения онлайн-социальных сетей на разные машины.
  • Сеть мобильной связи (4 миллиона узлов, 100 миллионов ссылок) Дерека Грина, Донала Дойла и Падрейга Каннингема: [9] Стратегии отслеживания сообществ для выявления динамических сообществ в различных динамических социальных сетях.
  • Обнаружение видов в сетевой динамической модели. [10]

Недостатки

Лувен создает только непересекающиеся сообщества, что означает, что каждый узел может принадлежать максимум к одному сообществу. Это крайне нереалистично во многих реальных приложениях. Например, в социальных сетях большинство людей принадлежат к нескольким сообществам: их семья, их друзья, их коллеги, старые школьные приятели и т. д. В биологических сетях большинство генов или белков принадлежат более чем к одному пути или комплексу. Кроме того, было показано, что Лувен иногда создает произвольно плохо связанные сообщества и был эффективно заменен (по крайней мере, в случае непересекающихся) алгоритмом Лейдена .

График, иллюстрирующий, как сообщества могут стать разъединенными при использовании алгоритма Лувена.

Худшим примером произвольно плохо связанного сообщества является внутренне разъединенное сообщество. Внутренне разъединенное сообщество возникает с помощью алгоритма Лувена, когда узел, который действовал как «мост» между двумя группами узлов в своем сообществе, перемещается в новое сообщество, оставляя старое разъединенным. Оставшиеся узлы в старом сообществе также могут быть перемещены, но если их связь с сообществом достаточно сильна, несмотря на удаление узла «мост», они вместо этого останутся на месте. Пример этого см. на изображении справа; обратите внимание, как удаление узла-моста, узла 0, привело к разделению красного сообщества на две непересекающиеся подгруппы. Хотя это наихудший сценарий, существуют и другие, более тонкие проблемы с алгоритмом Лувена, которые также могут привести к произвольно плохо связанным сообществам, например, формирование сообществ с использованием узлов, которые связаны только слабо.

Изображение, иллюстрирующее, как предел разрешения модульности может привести к тому, что подсообщества станут скрытыми.

Другая распространенная проблема с алгоритмом Лувена — это предел разрешения модульности , то есть несколько небольших сообществ, сгруппированных вместе в более крупное сообщество. Это приводит к тому, что более мелкие сообщества скрываются; в качестве примера см. визуальное изображение предела разрешения справа. Обратите внимание, как, когда зеленое сообщество поглощается синим сообществом для увеличения модульности графа, меньшая группа узлов, которую оно представляло, теряется. Больше нет способа отличить эти узлы от узлов, которые уже были в синем сообществе. И наоборот, узлы, которые уже были в синем сообществе, больше не кажутся отличными от тех, которые были в зеленом сообществе; другими словами, любое различие, которое изначально заставило их разместиться в отдельных сообществах, было скрыто.

И предел разрешения модульности, и проблема произвольно плохо связанного сообщества еще больше усугубляются с каждой итерацией алгоритма. В конечном счете, единственное, что гарантирует алгоритм Лувена, это то, что полученные сообщества не могут быть объединены далее; другими словами, они хорошо разделены. Чтобы избежать проблем, возникающих из произвольно плохо связанных сообществ и предела разрешения модульности, рекомендуется использовать вместо этого алгоритм Лейдена , поскольку его фаза уточнения и другие различные корректировки исправили эти проблемы. [5]

Сравнение с другими методами обнаружения непересекающихся сообществ

При сравнении методов оптимизации модульности двумя важными показателями являются скорость и результирующее значение модульности. Более высокая скорость лучше, поскольку она показывает, что метод эффективнее других, а более высокое значение модульности желательно, поскольку оно указывает на наличие лучше определенных сообществ. Сравниваемые методы: алгоритм Клаузета, Ньюмана и Мура [2] , Понса и Латапи [11] и Вакиты и Цуруми [12] .

Сравнение оптимизации модульности [13]
КаратэАрхивИнтернетВеб nd.eduТелефонВеб uk-2005Веб-база 2001
Узлы/ссылки34/779к/24к70к/351к325 тыс./1 млн.2.6M/6.3M39М/783М118М/1Б
Клаузет, Ньюман и Мур.38/0с.772/3.6с.692/799с.927/5034с-/--/--/-
Понс и Латапи.42/0с.757/3.3с.729/575с.895/6666с-/--/--/-
Вакита и Цуруми.42/0с.761/0.7с.667/62с.898/248с.56/464с-/--/-
Метод Лувена.42/0с.813/0с.781/1с.935/3с.769/134с.979/738с.984/152мн

-/- в таблице относится к методу, выполнение которого заняло более 24 часов. Эта таблица (из [1] [14] ) показывает, что метод Лувена превосходит многие аналогичные методы оптимизации модульности как в категориях модульности, так и времени.

Смотрите также

Ссылки

  1. ^ abcde Блондель, Винсент Д.; Гийом, Жан-Лу; Ламбиотт, Рено; Лефевр, Этьен (9 октября 2008 г.). "Быстрое развертывание сообществ в больших сетях". Журнал статистической механики: теория и эксперимент . 2008 (10): 10008. arXiv : 0803.0476 . Bibcode : 2008JSMTE..10..008B. doi : 10.1088/1742-5468/2008/10/P10008. S2CID  334423.
  2. ^ ab Clauset, Aaron; Newman, MEJ; Moore, Cristopher (2004-12-06). "Поиск структуры сообщества в очень больших сетях". Physical Review E. 70 ( 6): 066111. arXiv : cond-mat/0408187 . Bibcode : 2004PhRvE..70f6111C. doi : 10.1103/PhysRevE.70.066111. ISSN  1539-3755. PMID  15697438. S2CID  8977721.
  3. ^ Коэн-Аддад, Винсент; Косовски, Адриан; Маллманн-Тренн, Фредерик; Саульпик, Дэвид (2020). «О силе Лувена в стохастической блочной модели». Достижения в области нейронных систем обработки информации (Neurips 2020) . Curran Associates, Inc., стр.  4055–4066 .
  4. ^ Гош, Саян; Халаппанавар, Махантеш; Тумео, Антонино; Кальянараман, Анант; Лу, Хао; Чаваррия-Миранда, Дэниел Г.; Хан, Ариф; Гебремедин, Ассефав Хадиш (2018). «Распределенный алгоритм Лувена для обнаружения сообществ графов» (PDF) . Международный симпозиум IEEE по параллельной и распределенной обработке 2018, IPDPS 2018, Ванкувер, Британская Колумбия, Канада, 21–25 мая 2018 г. Компьютерное общество IEEE. стр.  885–895 . doi :10.1109/IPDPS.2018.00098. ISBN 978-1-5386-4368-6.
  5. ^ abcd Трааг, Вирджиния; Уолтман, Л.; ван Эк, Нью-Джерси (26 марта 2019 г.). «От Лувена до Лейдена: гарантия хороших связей между сообществами». Научные отчеты . 9 (1): 5233. arXiv : 1810.08473 . Бибкод : 2019NatSR...9.5233T. дои : 10.1038/s41598-019-41695-z. ISSN  2045-2322. ПМК 6435756 . ПМИД  30914743. 
  6. ^ "Метод Лувена для обнаружения сообщества". perso.uclouvain.be . Получено 21.11.2024 .
  7. ^ "Louvain - Аналитика и алгоритмы - Ultipa Graph". www.ultipa.com . Получено 21.11.2024 .
  8. ^ Пуйоль, Хосеп М.; Эррамилли, Виджай; Родригес, Пабло (2009). «Разделяй и властвуй: разделение социальных сетей в Интернете». arXiv : 0905.4918v1 [cs.NI].
  9. ^ Грин, Дерек; Дойл, Донал; Каннингем, Патрик (май 2011 г.). Отслеживание эволюции сообществ в динамических социальных сетях (PDF) (технический отчет). Университетский колледж Дублина. UCD-CSI-2011-06. Архивировано из оригинала (PDF) 2013-05-12 . Получено 2014-11-20 .
  10. ^ Маркович, Омер; Красногор, Наталио (2018). «Прогнозирование появления видов в моделируемых сложных пребиотических сетях». PLOS ONE . 13 (2): e0192871. Bibcode : 2018PLoSO..1392871M. doi : 10.1371/journal.pone.0192871 . PMC 5813963. PMID  29447212 . 
  11. ^ Понс, Паскаль; Латапи, Матье (2006). «Вычислительные сообщества в больших сетях с использованием случайных блужданий» (PDF) . Журнал графовых алгоритмов и приложений . 10 (2): 191– 218. arXiv : cond-mat/0412368 . doi : 10.7155/jgaa.00124 . S2CID  121714719.
  12. ^ Вакита, Кен; Цуруми, Тошиюки (2007). «Поиск структуры сообщества в мегамасштабных социальных сетях». arXiv : cs/0702048 .
  13. ^ Блондель, Винсент Д.; Гийом, Жан-Лу; Ламбиотт, Рено; Лефевр, Этьен (2008). «Быстрое развертывание сообществ в больших сетях». Журнал статистической механики: теория и эксперимент . 2008 (10): 10008. arXiv : 0803.0476 . Bibcode : 2008JSMTE..10..008B. doi : 10.1088/1742-5468/2008/10/P10008. S2CID  334423.
  14. ^ Aynaud, Thomas; Blondel, Vincent D.; Guillaume, Jean-Loup; Lambiotte, Renaud (2013). "Многоуровневая локальная оптимизация модульности". В Bichot, Charles-Edmond; Siarry, Patrick (ред.). Graph Partitioning (1-е изд.). Wiley (опубликовано 13 февраля 2013 г.). стр.  315–345 . doi :10.1002/9781118601181.ch13. ISBN 978-1-84821-233-6.
  • «Метод Лувена для обнаружения сообществ в больших сетях» Венсан Блондель http://perso.uclouvain.be/vincent.blondel/research/louvain.html
Retrieved from "https://en.wikipedia.org/w/index.php?title=Louvain_method&oldid=1272545676"