Slide 1

Slide 1 text

17 сентября 2021 [email protected], [email protected] Анастасия Андреевна Корепанова м.н.с. лаборатории ТиМПИ Алгоритмы выделения сообществ Абрамов Максим Викторович доцент кафедры информатики

Slide 2

Slide 2 text

2/38 2/38 СОЦИАЛЬНЫЙ ГРАФ 1/3

Slide 3

Slide 3 text

3/38 3/38 СОЦИАЛЬНЫЙ ГРАФ 2/3 • Кластер. • Группа. • Сообщество.

Slide 4

Slide 4 text

4/38 4/38 СОЦИАЛЬНЫЙ ГРАФ 3/3

Slide 5

Slide 5 text

5/38 5/38 ДРУГИЕ ПРИМЕНЕНИЯ 1) Криминология. Выделение криминальных сообществ, которые могут распространять и поддерживать терроризм и т.д. 2) Здравоохранение. Выделение групп, уязвимых к эпидемии. 3) Политика. Влияние политических идей на социальные группы. 4) Маркетинг. Таргетированная реклама, сегментация клиентов и т.д. 5) …

Slide 6

Slide 6 text

6/38 6/38 КАРАТЕ КЛУБ ЗАКАРИ (ZACHARY’S KARATE CLUB) • Wayne W. Zachary An Information Flow Model for Conflict and Fission in Small Groups // Journal of Anthropological Research. 1977. Vol. 33. Pp. 452-473.

Slide 7

Slide 7 text

7/38 7/38 СООБЩЕСТВА • Сообщества (очень неформально) — группы узлов, такие что между узлами одного сообщества гораздо больше связей, чем между группами. Свойства: • Между любыми двумя узлами в сообществе существует путь. • Это короткий путь . • Высокая плотность узлов в сообществе (высокая частота связей внутри группы). • Отделимость сообщества (чаще со своими, чем с чужими).

Slide 8

Slide 8 text

8/38 8/38 ТИПЫ СООБЩЕСТВ Непересекающиеся сообщества & Пересекающиеся сообщества

Slide 9

Slide 9 text

9/38 9/38 МЕРЫ​ КАЧЕСТВА КЛАСТЕРИЗАЦИИ Как можно измерить? • Плотность сообщества. • Разрез графа. • Модулярность.

Slide 10

Slide 10 text

10/38 10/38 ПЛОТНОСТЬ СООБЩЕСТВА • 𝐺(𝑉,𝐸) — граф, 𝑉 — множество вершин графа, 𝐸 — множество рёбер графа. • 𝑛 =|𝑉|, 𝑚 =|𝐸|. • 𝑆 — набор вершин графа 𝐺, образующих сообщество. • 𝑛𝑠 — число вершин в сообществе 𝑆, 𝑚𝑠 — число рёбер в сообществе 𝑆, 𝑚𝑒𝑥𝑡 — число рёбер, соединяющих сообщество 𝑆 с остальными узлами. • Плотность графа: 𝜌 = 𝑚 𝑛(𝑛 − 1)/2 • Внутренняя плотность сообщества: 𝛿𝑖𝑛𝑡 𝑆 = 𝑚𝑠 𝑛𝑠 (𝑛𝑠 − 1)/2 • Внешняя плотность: 𝛿𝑒𝑥𝑡 𝑆 = 𝑚𝑒𝑥𝑡 𝑛𝑠 (𝑛 − 𝑛𝑠 )/2 𝛿𝑖𝑛𝑡 > 𝜌 𝛿𝑖𝑛𝑡 > 𝛿𝑒𝑥𝑡 Хотим: 𝛿𝑖𝑛𝑡 = 5 6 𝛿𝑒𝑥𝑡 = 2 4(𝑛 − 4)/2

Slide 11

Slide 11 text

11/38 11/38 РАЗРЕЗ ГРАФА (GRAPH CUT) Сколько рёбер нужно убрать, чтобы отделить сообщество от графа 𝑉 = 𝑉1 + 𝑉2 • Graph cut 𝑄 = cut 𝑉1 , 𝑉2 = σ𝑖∈𝑉1,𝑗∈𝑉2 𝑒𝑖𝑗 • Ratio cut 𝑄 = cut 𝑉1 , 𝑉2 |𝑉1 | + cut 𝑉1 , 𝑉2 |𝑉2 | • Normalized cut: 𝑄 = cut 𝑉1 , 𝑉2 Vol(𝑉1 ) + cut 𝑉1 , 𝑉2 𝑉𝑜𝑙(𝑉2 ) , Vol 𝑉1 = ෍ 𝑖∈𝑉1,𝑗∈𝑉 𝑒𝑖𝑗 • Conductance: 𝑄 = cut 𝑉1 , 𝑉2 min(Vol 𝑉1 , Vol 𝑉2 )

Slide 12

Slide 12 text

12/38 12/38 МОДУЛЯРНОСТЬ 1/3 доля рёбер от общего числа рёбер, которые попадают в данные группы минус ожидаемая доля рёбер, которые попали бы в те же группы, если бы они были распределены случайно. 𝑄 = 1 2𝑚 ෍ 𝑖𝑗 𝑎𝑖𝑗 − 𝑘𝑖 𝑘𝑗 2𝑚 𝛿(𝑐𝑖 , 𝑐𝑗 ) 𝑄 ∈ [− 1 2 , 1]

Slide 13

Slide 13 text

13/38 13/38 МОДУЛЯРНОСТЬ 2/3 Доля ребер внутри сообщества от общего числа рёбер: σ𝑖𝑗 𝑎𝑖𝑗 𝛿(𝑐𝑖 , 𝑐𝑗 ) σ 𝑖𝑗 𝑎𝑖𝑗 = 1 2𝑚 ෍ 𝑖𝑗 𝑎𝑖𝑗 𝛿(𝑐𝑖 , 𝑐𝑗 ) 𝑐𝑖 − сообщество узла 𝑖, 𝑎𝑖𝑗 − вес ребра между 𝑖 и j, 𝛿 𝑢, 𝑣 = ቊ 1, если 𝑢 = 𝑣 0 иначе 𝑚 = 1 2 ෍ 𝑖𝑗 𝑎𝑖𝑗 − число рёбер в графе 𝑘𝑖 𝑘𝑗 2𝑚 Вероятность, что в случайном графе между узлами будет ребро: 𝑘𝑖 − степень узла 𝑖

Slide 14

Slide 14 text

14/38 14/38 МОДУЛЯРНОСТЬ 3/3 Чем выше модулярность, тем лучше!

Slide 15

Slide 15 text

15/38 15/38 ОБОБЩЕНИЕ Знаем, как оценить кластеризацию. А как её найти? • Точное решение — полный перебор. • NP-полная задача. • Решается жадными, эвристическими, приближёнными алгоритмами. • Обычно решается несколькими алгоритмами сразу, с помощью разных метрик выбирается наилучший. • Фиксируем количество кластеров или решаем рекурсивно.

Slide 16

Slide 16 text

16/38 16/38 АЛГОРИТМЫ Идеального, к сожалению, нет 1.Matrix Factorization 2.Deep Learning 3.Label Propagation, Percolation and Random Walks 4.Tensor Decomposition 5.Spectral Methods 6.Temporal Methods 7.Cyclic Patterns 8.Centrality and Cuts 9.Physics Inspired 10.Block Models 11.Hypergraphs 12. …

Slide 17

Slide 17 text

17/38 17/38 АЛГОРИТМ КАРГЕРА 1/2 Стягивание ребра — это операция, которая удаляет ребро из графа, а до этого связанные ребром вершины сливаются в одну вершину. • Будем стягивать рёбра случайным образом, пока у нас не останется всего два узла. 𝑃(финальный разрез графа = минимальный разрез) ≥ 2 𝑛2 • Повторим Ω(𝑛2)

Slide 18

Slide 18 text

18/38 18/38 АЛГОРИТМ КАРГЕРА 2/2

Slide 19

Slide 19 text

19/38 19/38 ФИКСИРОВАННОЕ КОЛИЧЕСТВО КЛАСТЕРОВ

Slide 20

Slide 20 text

20/38 20/38 РЕКУРСИВНОЕ ДЕЛЕНИЕ

Slide 21

Slide 21 text

21/38 21/38 СТЕПЕНЬ ПОСРЕДНИЧЕСТВА

Slide 22

Slide 22 text

22/38 22/38 СТЕПЕНЬ ПОСРЕДНИЧЕСТВА РЕБРА (EDGE BETWEENNESS) 1/3 Чем больше кратчайших путей через ребро проходит, тем оно круче. 𝐶𝐵 𝑒 = ෍ 𝑠≠𝑡 𝜎𝑠𝑡 (𝑒) 𝜎𝑠𝑡 , 𝜎𝑠𝑡 − количество кратчайших путей между 𝑠 и 𝑡

Slide 23

Slide 23 text

23/38 23/38 СТЕПЕНЬ ПОСРЕДНИЧЕСТВА РЕБРА (EDGE BETWEENNESS) 2/3

Slide 24

Slide 24 text

24/38 24/38 СТЕПЕНЬ ПОСРЕДНИЧЕСТВА РЕБРА (EDGE BETWEENNESS) 3/3 Алгоритм Гирван — Ньюмена (Girvan–Newman algorithm) Повторяем, пока граф связный: 1.Считаем степень посредничества всех рёбер. 2.Удаляем ребро с наибольшей степенью.

Slide 25

Slide 25 text

25/38 25/38 КАРАТЕ КЛУБ ЗАКАРИ (ZACHARY’S KARATE CLUB) 1/6

Slide 26

Slide 26 text

26/38 26/38 КАРАТЕ КЛУБ ЗАКАРИ (ZACHARY’S KARATE CLUB) 2/6

Slide 27

Slide 27 text

27/38 27/38 КАРАТЕ КЛУБ ЗАКАРИ (ZACHARY’S KARATE CLUB) 3/6

Slide 28

Slide 28 text

28/38 28/38 КАРАТЕ КЛУБ ЗАКАРИ (ZACHARY’S KARATE CLUB) 4/6

Slide 29

Slide 29 text

29/38 29/38 КАРАТЕ КЛУБ ЗАКАРИ (ZACHARY’S KARATE CLUB) 5/6 Лучший: • кластеры = 6; • модулярность = 0.345.

Slide 30

Slide 30 text

30/38 30/38 КАРАТЕ КЛУБ ЗАКАРИ (ZACHARY’S KARATE CLUB) 6/6

Slide 31

Slide 31 text

31/38 31/38 АЛГОРИТМ ЛЁВЕНА (LOUVAIN METHOD, FAST COMMUNITY UNFOLDING) 1/5 V.D. Blondel, J.-L. Guillaume, R. Lambiotte, E. Lefebvre, 2008 «The Louvain method» • Эвристический метод для жадной оптимизации модулярности • Несколько фаз • Вычислительно простой • Модулярность: 𝑄 = 1 2𝑚 ෍ 𝑣𝑤 𝑎𝑣𝑤 − 𝑘𝑣 𝑘𝑤 2𝑚 𝛿(𝑐𝑣 , 𝑐𝑤 )

Slide 32

Slide 32 text

32/38 32/38 АЛГОРИТМ ЛЁВЕНА (LOUVAIN METHOD, FAST COMMUNITY UNFOLDING) 2/5 • Отнесём каждый узел к отдельному сообществу. • Фаза I • Для каждого узла оценим выигрыш в модулярности, если мы исключим его из его сообщества и присоединим к другому узлу. • Присоединим узел к сообществу, дающему наибольший выигрыш по модулярности . • Будем повторять, пока не достигнем локального максимума модулярности. • Фаза II • Все узлы одного сообщества объединим в «супер узел». • Обновим веса на ребрах. • Будем повторять, пока не достигнем локального максимума модулярности.

Slide 33

Slide 33 text

33/38 33/38 АЛГОРИТМ ЛЁВЕНА (LOUVAIN METHOD, FAST COMMUNITY UNFOLDING) 3/5

Slide 34

Slide 34 text

34/38 34/38 АЛГОРИТМ ЛЁВЕНА (LOUVAIN METHOD, FAST COMMUNITY UNFOLDING) 4/5

Slide 35

Slide 35 text

35/38 35/38 АЛГОРИТМ ЛЁВЕНА (LOUVAIN METHOD, FAST COMMUNITY UNFOLDING) 5/5 Кластеры = 4. Модулярность = 0.445.

Slide 36

Slide 36 text

36/38 36/38 СРАВНЕНИЕ

Slide 37

Slide 37 text

37/38 37/38 ЗАДАНИЕ import matplotlib.pyplot as plt import networkx as nx from networkx.algorithms.community.centrality import girvan_newman G = nx.karate_club_graph() communities = girvan_newman(G) node_groups = [] for com in next(communities): node_groups.append(list(com)) print(node_groups) color_map = [] for node in G: if node in node_groups[0]: color_map.append('blue') else: color_map.append('green') nx.draw(G, node_color=color_map, with_labels=True) plt.show() Взять любой граф, выделить сообщества с помощью двух алгоритмов, посчитать модулярность.

Slide 38

Slide 38 text

17 сентября 2021 [email protected], [email protected] Анастасия Андреевна Корепанова м.н.с. лаборатории ТиМПИ Алгоритмы выделения сообществ Абрамов Максим Викторович доцент кафедры информатики