Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ПТАиМСС – магистратура, 2 курс осень 2021 – 3.1 занятие

F21d69109b1c03921abf7d12f0fb6654?s=47 ТиМПИ
September 17, 2021

ПТАиМСС – магистратура, 2 курс осень 2021 – 3.1 занятие

F21d69109b1c03921abf7d12f0fb6654?s=128

ТиМПИ

September 17, 2021
Tweet

Transcript

  1. 17 сентября 2021 aak@dscs.pro, mva@dscs.pro Анастасия Андреевна Корепанова м.н.с. лаборатории

    ТиМПИ Алгоритмы выделения сообществ Абрамов Максим Викторович доцент кафедры информатики
  2. 2/38 2/38 СОЦИАЛЬНЫЙ ГРАФ 1/3

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

    Сообщество.
  4. 4/38 4/38 СОЦИАЛЬНЫЙ ГРАФ 3/3

  5. 5/38 5/38 ДРУГИЕ ПРИМЕНЕНИЯ 1) Криминология. Выделение криминальных сообществ, которые

    могут распространять и поддерживать терроризм и т.д. 2) Здравоохранение. Выделение групп, уязвимых к эпидемии. 3) Политика. Влияние политических идей на социальные группы. 4) Маркетинг. Таргетированная реклама, сегментация клиентов и т.д. 5) …
  6. 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.
  7. 7/38 7/38 СООБЩЕСТВА • Сообщества (очень неформально) — группы узлов,

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

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

    сообщества. • Разрез графа. • Модулярность.
  10. 10/38 10/38 ПЛОТНОСТЬ СООБЩЕСТВА • 𝐺(𝑉,𝐸) — граф, 𝑉 —

    множество вершин графа, 𝐸 — множество рёбер графа. • 𝑛 =|𝑉|, 𝑚 =|𝐸|. • 𝑆 — набор вершин графа 𝐺, образующих сообщество. • 𝑛𝑠 — число вершин в сообществе 𝑆, 𝑚𝑠 — число рёбер в сообществе 𝑆, 𝑚𝑒𝑥𝑡 — число рёбер, соединяющих сообщество 𝑆 с остальными узлами. • Плотность графа: 𝜌 = 𝑚 𝑛(𝑛 − 1)/2 • Внутренняя плотность сообщества: 𝛿𝑖𝑛𝑡 𝑆 = 𝑚𝑠 𝑛𝑠 (𝑛𝑠 − 1)/2 • Внешняя плотность: 𝛿𝑒𝑥𝑡 𝑆 = 𝑚𝑒𝑥𝑡 𝑛𝑠 (𝑛 − 𝑛𝑠 )/2 𝛿𝑖𝑛𝑡 > 𝜌 𝛿𝑖𝑛𝑡 > 𝛿𝑒𝑥𝑡 Хотим: 𝛿𝑖𝑛𝑡 = 5 6 𝛿𝑒𝑥𝑡 = 2 4(𝑛 − 4)/2
  11. 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 )
  12. 12/38 12/38 МОДУЛЯРНОСТЬ 1/3 доля рёбер от общего числа рёбер,

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

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

  15. 15/38 15/38 ОБОБЩЕНИЕ Знаем, как оценить кластеризацию. А как её

    найти? • Точное решение — полный перебор. • NP-полная задача. • Решается жадными, эвристическими, приближёнными алгоритмами. • Обычно решается несколькими алгоритмами сразу, с помощью разных метрик выбирается наилучший. • Фиксируем количество кластеров или решаем рекурсивно.
  16. 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. …
  17. 17/38 17/38 АЛГОРИТМ КАРГЕРА 1/2 Стягивание ребра — это операция,

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

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

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

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

  22. 22/38 22/38 СТЕПЕНЬ ПОСРЕДНИЧЕСТВА РЕБРА (EDGE BETWEENNESS) 1/3 Чем больше

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

  24. 24/38 24/38 СТЕПЕНЬ ПОСРЕДНИЧЕСТВА РЕБРА (EDGE BETWEENNESS) 3/3 Алгоритм Гирван

    — Ньюмена (Girvan–Newman algorithm) Повторяем, пока граф связный: 1.Считаем степень посредничества всех рёбер. 2.Удаляем ребро с наибольшей степенью.
  25. 25/38 25/38 КАРАТЕ КЛУБ ЗАКАРИ (ZACHARY’S KARATE CLUB) 1/6

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

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

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

  29. 29/38 29/38 КАРАТЕ КЛУБ ЗАКАРИ (ZACHARY’S KARATE CLUB) 5/6 Лучший:

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

  31. 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𝑚 𝛿(𝑐𝑣 , 𝑐𝑤 )
  32. 32/38 32/38 АЛГОРИТМ ЛЁВЕНА (LOUVAIN METHOD, FAST COMMUNITY UNFOLDING) 2/5

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

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

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

    Кластеры = 4. Модулярность = 0.445.
  36. 36/38 36/38 СРАВНЕНИЕ

  37. 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() Взять любой граф, выделить сообщества с помощью двух алгоритмов, посчитать модулярность.
  38. 17 сентября 2021 aak@dscs.pro, mva@dscs.pro Анастасия Андреевна Корепанова м.н.с. лаборатории

    ТиМПИ Алгоритмы выделения сообществ Абрамов Максим Викторович доцент кафедры информатики