Алгоритм Лейдена
Часть серии о | ||||
Сетевая наука | ||||
---|---|---|---|---|
Типы сетей | ||||
Графики | ||||
|
||||
Модели | ||||
|
||||
| ||||
Алгоритм Лейдена — это алгоритм обнаружения сообществ, разработанный Траагом и др. [1] в Лейденском университете . Он был разработан как модификация Метод Лувена для решения проблем разобщенных сообществ.
Компоненты графа
[ редактировать ]Прежде чем определить алгоритм Лейдена , будет полезно определить некоторые компоненты графа.
Вершины и ребра
[ редактировать ]Граф состоит из вершин (узлов) и ребер . Каждое ребро соединено с двумя вершинами, и каждая вершина может быть соединена с нулем или более ребрами. Края обычно представляются прямыми линиями, а узлы представляются кругами или точками. В заданных обозначениях пусть быть множеством вершин, и быть набором ребер:
где — направленное ребро из вершины в вершину . Мы также можем записать это как упорядоченную пару:
Сообщество
[ редактировать ]Сообщество — это уникальный набор узлов:
а объединение всех сообществ должно представлять собой общее множество вершин:
Раздел
[ редактировать ]Раздел — это совокупность всех сообществ:
Качество
[ редактировать ]Подобно модульности , функция качества используется для оценки того, насколько хорошо были распределены сообщества. Алгоритм Лейдена использует модель Постоянного Поттса (CPM): [2]
Алгоритм
[ редактировать ]Алгоритм Лейдена аналогичен алгоритму метода Лувена с некоторыми важными модификациями.
Шаг 1: Во-первых, каждый узел сети назначается своему сообществу.
Шаг 2. Далее мы решаем, в какие сообщества переместить узлы, и обновляем раздел. .
queue = V(G) # create a queue from the nodes while queue != empty: node = queue.next() # get the next node delta_H = 0 for C in communities: # compute the change in quality for each community if delta_H(node, C) > delta_H: delta_H = delta_H(node, C) community = C if delta_H > 0: move node to community outside_nodes = { node_i | (node, node_i) are edges and node_i is not in community } # find the nodes which are connected to the node but not in the community queue.add(outside_nodes not already in queue)
Шаг 3. Назначьте каждый узел графа своему сообществу в новом разделе под названием .
Шаг 4. Целью этого шага является разделение сообществ с плохими связями:
for C in communities of P: # find the nodes in the community which have lots of edges within the community well_connected_nodes = { node | node is in C, |E(node, C\node)| >= gamma ||node||(||C|| - ||node||) } for node in well_connected_nodes: if node is singleton under P_refined: well_connected_communities = { C_i | C_i is in P_refined, C_i is a subset of C, |E(C_i, C\C_i)| >= gamma*||C_i||(||C|| - ||C_i||) for C_i in well_connected_communities: compute probability P(C_i) # 0 if assignment of node to C_i decreases quality of P_refined, greater weights for greater quality increases assign node to C_i by sampling P(C_i) distribution
Шаг 5. Используйте уточненный раздел агрегировать график. Каждое сообщество в становится узлом в новом графе .
Пример : Предположим, что у нас есть:
Тогда наш новый набор узлов будет:
Шаг 6. Обновите раздел. используя агрегированный график. Мы не допускаем разделения сообществ , но сообщества можно разделить на несколько узлов из уточненного раздела :
Пример : Предположим, что это плохо связанное сообщество из раздела :
Затем предположим, что на этапе уточнения он был разделен на два сообщества: и :
Когда мы агрегируем граф, новые узлы будут:
но мы сохраним старый раздел:
Шаг 7. Повторяйте шаги 2–6, пока каждое сообщество не будет состоять только из одного узла.
Ссылки
[ редактировать ]- ^ Трааг, Винсент А; Уолтман, Людо; ван Эк, Нис Ян (26 марта 2019 г.). «От Лувена до Лейдена: гарантия хороших связей между сообществами» . Научные отчеты . 9 (1): 5233. arXiv : 1810.08473 . Бибкод : 2019НатСР...9.5233Т . дои : 10.1038/s41598-019-41695-z . ПМК 6435756 . ПМИД 30914743 .
- ^ Трааг, Винсент А; Ван Доорен, Пол; Нестеров, Юрий (29 июля 2011 г.). «Узкие возможности для обнаружения сообществ без ограничений по разрешению». Физический обзор E . 84 (1): 016114. arXiv : 1104.3083 . Бибкод : 2011PhRvE..84a6114T . дои : 10.1103/PhysRevE.84.016114 . ПМИД 21867264 .