Выделение сообществ по графу

18-09-2014 06:39

Материалы по решению задачи на кеггл Learning Social Circles in Networks, в которой нужно распределить друзей пользователя по кругам.

Community detection in graphs

pdf

Survey on Social Community Detection

pdf

Рассматриваются три подхода:

Определение сообщества

  • группа узлов в сети, внутри которого узлы плотные, а между узлы разреженные
  • часть графа с небольшой связью со всей остальной системой - локальные группы

Подходы к определению сообществ

  • традиционный подход - кластеризация k-means
  • дивизивные иерархические алгоритмы
  • модульные алгоритмы
  • спектральные алгоритмы
  • динамические алгоритмы
  • статистические основанные на интерфейсе
  • методы мультирешений
  • методы перекрывающих сообществ

Girvan and Newman Algorithm

Дивизивный алгоритм кластеризации. Суть - удаление ребер, которые принадлежат разным сообществам. Есть несколько мер определения, какие ребра являются центральными. Например, промежуточной центральности, где оценивается уровень важности ребра. Можно использовать количество наиболее коротких путей через ребро в качестве такой метрки.

  1. Вычислить центральность всех ребер
  2. Удалить ребро с наибольшей центральностью
  3. Пересчитать центральности
  4. Перейти к шагу 2

Modularity-based algorithm

Предыдущий алгоритм, улучшеный за счет моудльности. "glutton" - тип алгоритма, который максимизирует модульность, сливая сообщества на каждом шаге, чтобы получить наибольшее значение. Разрешается объединять только те сообщества, у которых есть общие ребра. Качество алгоритма хуже, но сложность линейная.

Louvain Algorithm

Быстро работает на больших взвешенных графах. Не гарантирует оптимальное разбиение. Вначале все вершины находятся в одном сообществе. Для каждого узла i вычисляется выигрыш веса модульности при размещении рядом с узлом j, а затем выбирается наилучшее сообщество. Короче обычный агломеративный алгоритм.

Ссылки

tags: kaggle data mining
comments powered by Disqus