Як зробити виявлення спільноти у зваженій соціальній мережі / графіку?


42

Мені цікаво, чи хтось міг би запропонувати, які є хорошими вихідними пунктами, коли справа стосується виявлення спільноти / розподілу / кластеризації графіка на графіку, який має зважені , непрямі краї. Графік, про який йде мова, має приблизно 3 мільйони ребер, і кожен край виражає ступінь подібності між двома вершинами, які він з'єднує. Зокрема, у цьому краю даних є окремі особи, а вершини є мірою схожості їх спостережуваної поведінки.

Раніше я дотримувався пропозиції, яку я потрапив сюди на stats.stackexchange.com, і використав реалізацію igraph впровадження модульної кластеризації Ньюмена, і був задоволений результатами, але це було невагомим набором даних.

Чи є якісь конкретні алгоритми, на які я повинен дивитись?

Відповіді:


20

igraph реалізація кластеризації модулів Ньюмена (функція швидкої зеленості) також може бути використана із зваженими краями. Просто додайте атрибут ваги до країв і проаналізуйте як завжди. На мій досвід, з гирями він бігає ще швидше, оскільки зв'язків менше.


велике спасибі за вказівку на це, я повністю пропустив посилання на ваги в документації.
laramichaels

9

Я знаю, що Gephi може обробляти неорієнтований зважений графік, але я, мабуть, пам’ятаю, що він повинен зберігатися в GDF , який досить близький до CSV або Ucinet DL . Будьте в курсі, що це все-таки альфа-реліз. Тепер, щодо кластеризації вашого графіку, Gephi, здається, не вистачає кластеризованих конвеєрів, за винятком алгоритму MCL, який зараз доступний в останній версії. У 2009 р. Був проект Google Code , "Статистика статистики мережі Gephi" (який містить, наприклад, показник модульності Ньюмена), але я не знаю, чи було випущено щось у цьому напрямку. У будь-якому випадку, схоже, це дозволяє деякі обчислення модульності / кластеризації, але дивіться також Аналіз соціальних мереж за допомогою R та Gephi таПідготовка даних для аналізу соціальних мереж за допомогою R та Gephi (велике спасибі @Tal).

Якщо ви звикли до Python, варто спробувати NetworkX (Ось приклад зваженого графіка з відповідним кодом). Тоді у вас є багато способів провести аналіз.

Ви також повинні ознайомитися з INSNA - програмним забезпеченням для аналізу соціальних мереж або веб-сторінкою Тима Еванса про складні мережі та складність .


Привіт, просто щоб повідомити, що Gephi не може обробляти зважений непрямий графік для ідентифікації спільноти за допомогою модульності. Дякую. -Gautam

@Gautam Добре знати, дякую. Я не дуже знайомий з Gephi, але я вважав, що він знаходиться в активному розвитку.
chl


4

Алгоритм модульності Louvain доступний на C ++: https://sites.google.com/site/findcommunities/

Він має справу з зваженими мережами мільйонів вузлів і країв, і було продемонстровано, що він набагато швидший, ніж алгоритм Ньюмена.


Алгоритм модульності модуля Louvain швидкий і стійкий - мені цікаво, чи існує версія його зменшення на карті.
Сторінка

3

Якщо ви використовуєте python і створили зважений графік за допомогою NetworkX , ви можете використовувати python-louvain для кластеризації. Де G - зважений графік:

import community 
partition = community.best_partition(G, weight='weight')

1

Я щойно натрапив на пакет tnet для Р. Творець, схоже, досліджує відкриття спільноти у зваженому та двосторонньому (двомодовому) графіках.

http://opsahl.co.uk/tnet/content/view/15/27/

Я ще не користувався ним.


1

SLPA (тепер його називають GANXiS) - це швидкий алгоритм, здатний виявляти як непересічні, так і перекриваються спільноти в соціальних мережах (непрямі / спрямовані та не зважені / зважені). Показано, що алгоритм дає значущі результати в реальних соціальних та генних мережах. Це одна з найсучасніших. Він доступний за адресою

https://sites.google.com/site/communitydetectionslpa/

Дивіться приємний огляд arxiv.org/abs/1110.5813 для отримання додаткової інформації


1

У мене є реалізація Java для неперекривається, зваженої / невагомої мережі, яка, ймовірно, може обробляти 3 мільйони вузлів (я перевірив її на мільйон наборів даних вузлів). Однак він працює як k-означає, і потрібна кількість розділів для виявлення вхідних даних (k в kmeans). Ви можете знайти більше інформації тут , і ось код , в github

Ура,

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.