Как сделать социальный граф

Обновлено: 06.07.2024

Начнем с краткого введения в базовые компоненты сети: узлы и ребра.

  • Узлы (например, A,B,C,D,E) обычно представляют объекты в сети и содержат собственные и сетевые свойства. К собственным относятся вес, размер, расположение и прочие атрибуты, а к сетевым — количество соседей (степень) и связная компонента, которой принадлежит узел (кластер).
  • Ребра — это связи между узлами, которые в некоторых случаях также содержат свойства. Например, вес, который определяет силу соединения, направление при ассиметричном отношении, а также время.

Эти два базовых элемента способны описывать множество явлений: социальные связи, виртуальную сеть маршрутизации, физические электросети, дорожную сеть, сети биологических связей и прочие отношения.

Реальные сети

Реальные и, в частности, социальные сети обладают уникальной структурой, которая обычно отличает их от случайных математических сетей.

  • Согласно феномену “Мир тесен” , в реальных сетях пути между подключенными участниками часто очень коротки. Это применимо как к реальным и виртуальным социальным сетям (теория шести рукопожатий), так и к физическим, например аэропортам и электричеству маршрутизации трафика.
  • Безмасштабные сети со степенным законом распределения (power-law) обладают асимметричной популяцией с несколькими сильно связанными узлами (например, социальное влияние) и множеством слабо связанных узлов.
  • Гомофилия — склонность людей образовывать связи с подобными себе, что приводит к схожести свойств между соседями.

Меры центральности

Централизованные узлы играют ключевую роль в сети, выступая в качестве центров для различных тенденций. Определение и значимость центральности могут различаться от случая к случаю и ссылаться на различные показатели. Примеры указаны ниже.

  • Степень (Degree) — количество соседей узла.
  • Влиятельность (EigenVector/PageRank) — итеративные циклы соседей.
  • Близость (Closeness) — степень близости ко всем узлам.
  • Посредничество (Betweenness) — количество коротких путей, проходящих через узел.

Иллюстрация различных мер центральности: (b) высшая степень влиятельности, (h) высшая степень посредничества, (p) лучшая степень близости, (k) высшая степень центральности. Источник

Иллюстрация различных мер центральности: (b) высшая степень влиятельности, (h) высшая степень посредничества, (p) лучшая степень близости, (k) высшая степень центральности. Источник

Меры варьируются в зависимости от сценария: ранжирование (page-rank), обнаружение критических точек (betweenness), транспортные узлы (closeness) и прочие.

Построение сети

Для построения сетей подойдет любой набор данных, в котором можно описать связи между узлами. В данном примере мы построим и визуализируем сеть голосования для Евровидения 2018 на основе официальных данных. Для этого воспользуемся пакетом Python Networkx .

Мы прочитаем данные из файла Excel в датафрейм Pandas, чтобы получить табличное представление голосов. Каждая строка включает все голоса из определенной страны. Мы распределим набор так, чтобы в каждой из них был представлен один голос (ребро) между двумя странами (узлы).

Затем построим ориентированный граф с помощью Networkx из edgelist, с которым мы работаем в формате датафрейма Pandas. И наконец, для визуализации мы применим метод обобщения, как показано во фрагменте кода ниже.

Визуализация

Встроенный метод draw выдает очень непонятную фигуру. Он пытается построить сильно связный граф, но без полезных “подсказок” полезную информацию из данных извлечь не получится. Мы улучшим фигуру, разделяя и охватывая различные визуальные аспекты с помощью предварительной информации об этих сущностях.

  • Позиция (Position) — каждая страна присваивается в соответствии с географическим положением.
  • Стиль (Style) — каждая страна распознается по флагу и его цветам.
  • Размер (Size) — размер узлов и ребер представляет количество точек.

Теперь построим компоненты сети по частям.

Поток информации

Для описания этого процесса распространения информации часто используются две популярные базовые модели.

Линейный порог определяет поведение, при котором влияние накапливается от нескольких соседей узла и активируется, только если превышает определенный порог. Такое поведение типично для рекомендаций фильмов: совет от одного из друзей может в конечном счете убедить человека посмотреть кино, если он услышит его и от нескольких других людей.

В модели независимых каскадов каждый из активных соседей узла может потенциально и независимо активировать его. Этот процесс напоминает распространение вирусной инфекции: каждое социальное взаимодействие может привести к заражению.

Пример потока информации

Чтобы проиллюстрировать процесс распространения информации, воспользуемся сетью “Буря мечей” , основанной на персонажах сериала “Игра престолов”. Сеть сконструирована на совместных появлениях героев в книге “Песнь льда и огня”.

Опираясь на модель независимых каскадов, мы попытаемся отследить динамику распространения слухов, которые часто встречаются в этом сериале.

Внимание, спойлер! Предположим, что в самом начале Джон Сноу ни о чем не знает, а двое его верных друзей Бран Старк и Сэмвел Тарли владеют очень важным секретом о его жизни. Посмотрим, как распространяются слухи по модели независимых каскадов.

Слух достигает Джона в точке t=1, распространяется на его соседей, а затем и по всей сети, получая широкую огласку.

Динамика во многом зависит от параметров модели, которые влияют на закономерность процесса распространения.

Максимизация влияния

Проблема максимизации влияния описывает маркетинговую (и не только) установку, при которой цель маркетолога состоит в том, чтобы выбрать ограниченный набор узлов в сети, который будет естественным образом распространять влияние как можно большему количеству узлов. Например, пригласить на мероприятие по запуску продукта определенное число влиятельных лиц, которые затем расскажут о нем остальным участникам своей сети.

Подобных инфлюенсеров можно определить различными методиками, такими как меры центральности, упомянутыми выше. Вот самые центральные узлы в сети “Игра престолов”.

Как видите, некоторые персонажи повторно появляются на верхних позициях различных параметров. В сериале они также хорошо известны своим социальным влиянием.

Мы видим, что выбор одного узла может покрыть около 50% сети. Вот насколько важными могут быть социальные инфлюенсеры.

Однако максимизация влияния — нелегкий процесс и считается NP-трудной задачей. Чтобы найти лучший начальный набор для эффективного расчета, было разработано множество алгоритмов. Мы использовали метод полного перебора, чтобы выбрать лучшую начальную пару узлов (Роберт Баратеон и Кхал Дрого) в нашей сети. Процесс занял 41 минуту, и нам удалось достичь 56% покрытия. Получить такой результат с помощью алгоритмов центральности было бы непросто.

Вывод

Анализ сетей — сложный, но полезный инструмент, который пригодится в различных областях, особенно в стремительно растущих социальных сетях. Он применяется в маркетинговой максимизации влияния, обнаружении мошенничества и системах рекомендаций. Для работы с наборами данных сетей существует множество инструментов и методик. Выбирать их стоит с учетом уникальных свойств сети.

Пришла пора разобраться с модным понятием Социальный Граф. Честно скажу, до совсем недавнего времени не знала что это такое вообще, видела только немыслимые картинки. Понятие Социального Графа у всех на слуху, и я не удивлюсь, если год 2008 будет годом Социального Графа, и вообще, если веб3.0 будет с ним связан.

Сначала рассмотрим сам термин Социальный Граф. Он был не так уж и давно введен в модный обиход любого гламурного вебдванолевца социалкой FaceBook, которая с его помощью описывала то, что творится у нее внутри. И отцы/монстры всемирной сети решили разобраться, что к чему. Почему именно такой термин, может ли это быть самостоятельной концепцией, какое будущее нам предвещает и т.п. Ну вот, к примеру, статьи Фитцпатрика и Бернерс-Ли . Они, правда, довольно многословны, читать их нудно и сложно.

В общем, нам с вами это проще представить скорее вот так:

Социальный Граф

и ничего более. Уверена, вы видели не одну его интерпретацию. Я думаю, что по картинкам интуитивно понятно, что этот граф из себя представляет. Но вопрос скорее даже не в этом. Меня волнует другое: почему к нему такой интерес? Ну и в свете последних событий с Google Social Graph API - тоже интересно.

Социальный граф стоит на трех столпах:- Человеческая личность. Мы одни, а сетей много. У каждого из нас по нескольку аккаунтов и (в большинстве случаев, конечно) любой хочет, чтобы все они ассоциировались с одним человеком – с ним самим. Это хорошо, если у нас везде один логин, но иногда случается, что в разных сервисах разные логины. То есть seobaby в одном сервисе, seobabynet в другом (по случаю занятости seobaby), sunnydenny в третьем и т.п. Нужен какой-то механизм идентификации помощнее. OpenID не годится хотя бы потому, что он не везде есть и что кроме стандартного OpenID-аккаунта, у меня есть еще seobaby, sunnydenny и seobabynet и никуда я от этого не денусь.

- Типы отношений. Между людьми в одной или различных социальных сетях. Член семьи, друг, коллега - основные, но нам хочется и любовник, и брат и сват и все такое… В принципе, в Facebook или Spock есть чуть больше типов связей. Но со временем и другие сети будут вводить более расширеный формат, из-за размытия границ в вебе между личным и корпоративным.

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

И тут время говорить уже об API. Точнее, Брэд об этом говорит. О том, что необходим API либо какой-то сервис, который бы смог быть “регулировщиком и контролером” информации, обмениваемой между различными сетями. Речь может идти о какой-то открытой базе данных, в которой есть информация различных социальных сетей, и которая далее доставляет эту информацию конечному пользователю через API. И также позволяет юзеру искать информацию в других сетях. А если такая система, расширяемая и безопасная, будет построена, то надо бы еще заставить владельцев компаний-сервисов использовать этот API.

Но станет ли Facebook отправлять свои данные в эту базу? Да не будет он. Но если гора не идет к Магомету, то.. Стоит рассмотреть вариант, при котором FaceBook и Со дают возможность экспорта самим юзерам. А с другой стороны, пользователи в принципе ленятся делать лишнюю работу вручную.

Теперь к Google Social Graph API , нашумевшем тут намедни. Google, конечно, молодец, что запускает свой Social Graph API, который позволит так называемой “третьей стороне”получать данные, то есть компания решила пойти наиболее открытым путем. Третья сторона вольна забирать эти открытые данные и впаивать их в свои приложения (кстати, в том числе помним (узнаем) и о гугловских open social приложениях). Например, этим уже занимается Plaxo (там на главной увидите про new Plaxo - now with Pulse; это то самое, о чем я веду речь). В общем, использовать эти данные можно на свое усмотрение.

Кстати, наверное, не стоит говорить о том, что Google использует данные XFN (XHTML Friends Network) и FOAF (Friend of a Friend), равно как и стандартные микроформаты, используемые тем же Facebook, это и так понятно. Но стоит сказать о том, что этими данными Google не ограничивается. Этот вывод делается на основе того, что он понимает социальные связи между людьми в MySpace, хотя MySpace ничего подобного XFN не использует. Так что отсутствие таких семантических данных в вашей социальной сети… это, конечно, довольно заманчиво звучит, скажем, с технической точки зрения, но не со стороны приватности данных. В принципе, не знаю, для меня это не такой уж и острый вопрос, но для кого-то, вероятно, вполне насущный.

И вообще, я думаю, раз уж столько разговоров уже сейчас, в 2008 году мы еще очень немало услышим о Социальных Графах. Немаловажно, что корпоративные работники будут стремиться к открытым социальным сетям, где они смогут все свои созданные контакты онлайн носить с собой.

Основными, как мне кажется, будут вопросы владения социальным графом. Уверена, что прецеденты в духе “отдайте мне мой Социальный Граф” будут. Собственно, уже есть – пример, можно здесь почитать. Пользователь не смог экспортировать 5000 своих контактов из FaceBook в PlaxoPulse. Услышим мы о парочке подсудных дел, что-то кому-то обязательно не понравится, ну а если можно сделать денег… то почему бы и нет.

Всем известно, что такое социальный граф. Однако определить его полезность – непростая задача. В статье я расскажу, чем действительно ценен граф и как можно применить на практике эти знания.

Итак социальный граф – система связей между людьми в социальных сетях, в интернет или в реальной жизни.


Вроде бы очевидно, что это колонка друзей в соцсетях или контакты в записной книге телефона.

Графически граф можно представить, как солнце с расходящимися лучами (связями) к множеству узлов — друзей.

Это статический отпечаток, который может характеризовать человека. Если связей много, то мы предполагаем, что человек социально активный и авторитетный. Однако в сети это часто бывает не так. И все это знают.

Зачем же люди набирают множество других – незнакомых лично друзей в социалках? Мы опустим момент SMM или придания значимости себе.

На самом деле люди, привлекая друзей в социальных сетях, настраивают свои социальные фильтры получения информации. На практике это выглядит так. Появился интерес у человека в определенной сфере и он начинает искать людей компетентных в области. В итоге френдит и получает нужную информацию.

Другими словами наш социальный граф меняется практически постоянно и служит для получения определенных потоков информации. Значит его наибольшей ценностью является сбор нужной информации.

Если рассмотреть социальный граф в аналогии, то его можно сравнить с транспортной системой страны. Если есть дороги, но по ним никто не ездит, то они бесполезны, хотя соединяют город А и город Б. Как только начинает курсировать транспорт транспортная сеть получает смысл. И еще большим смыслом обладают маршруты движения автотранспорта. Так же происходит и с информацией или контентом.

Давайте рассмотрим пример распространения информации по социальному графу и увидим во что преобразуется граф и как это использовать.


Так вот, именно информационные каскады имеют важнейшую роль в практике распространения информации в сети, а не сами социальные графы как таковые. Это касается SMM, рекламных кампаний, привлечения новых клиентов.

Остановимся еще на одной важной особенности. Мы видим, что от инициатора каскада прошло несколько уровней распространения от человека к человеку. Причем некоторые узлы привлекли по несколько других узлов. Они являются лидерами распространения.

Рассмотрим другой пример распространения на этом же социальном графе. Пусть это будет пост о технологиях.


Здесь уже имеет место другой каскад и другие лидеры.

Таким образом один и тот же социальный граф может быть источником разных информационных каскадов, с совершенно разными лидерами распространения.

А теперь перейдем к практике.

Мечта любого вебмастера и маркетолога, чтобы информация которую нужно донести до аудитории, обладала свойствами информационного каскада. Это показатель виральности контента. У самых известных вирусных историй наблюдаются каскады с сотнями тысяч узлов и десятками уровней распространения.

Отсюда делаем несколько важных выводов.

1. Нужно отслеживать каскады. Информационный каскад появляется не всегда и зависит от контента. Примеры каскадов можно посмотреть здесь

2. При появлении каскада определяются узлы максимально распространения или лидеры мнений.

3. Следует уделить максимум внимания лидерам мнений и научиться с ними работать. Это социальный капитал любого проекта. Подробнее об этом

Отслеживать каскады возможно не только в социальных сетях, но и на самом сайте. Для этого подходят социальные кнопки share и наблюдение за их счетчиками. Именно репосты стимулируют информационные каскады в социальных сетях, а не кнопки like.

Не все кнопки могут проследить каскад распространения, но инструменты такие есть.

С ростом веса социальных сетей в общем трафике задачей любого сайта становится не только создание качественного контента но и его адаптация под социальные сети, то есть SMO. Это включает в себя правильно настроенный OGP и инструменты для переноса контента в социальные сети – все те же социальные кнопки.

Для появления каскада потребуется побудить пользователей делиться контентом. Это решается расположением социальных кнопок, стимулирующими надписями над кнопками, кастомизацией вида кнопок под сайт и увеличением их размера, внедрением креативных кнопок, добавлением эмоциональной составляющей.

Кто же такой лидер мнения? Это человек, в окружении которого люди с одинаковыми интересами. В результате его действия вызывают такую же реакцию других.

Когда вы знаете лидеров мнений своего сайта, сервиса, бренда реально существенно сократить рекламные расходы, направляя коммуникации именно на них, увеличить трафик и продажи.

Как основателю сервиса Grrow.me мне часто приходится общаться с заказчиками. И стало очевидно, что маркетологи крупных компаний, известных брендов или просто вебмастера не знают, что делать с лидерами мнений.

Давайте разберем несколько вариантов работы с лидерами мнений.

1) Обеспечьте социальное доказательство. На многих сайтах установлены виджеты социальных сетей, которые показывают участников группы сайта. Очень неплохо, если у вас будет отдельный блок с лидерами мнений. Это важно.

2) Если у вас контентный сайт, то вы можете высылать лидерам свои инсайды незадолго до выхода материала например.

3) Рекомендуйте лидерам контент, схожий с контентом, вызвавшим каскад. Такой контент нравится или полезен друзьям лидера. Таким образом вы поддержите его авторитет в сети.

4) Покажите лидерам мнений их важность. Если демонстрировать каскад распространения в прямом эфире, то лидеры увидят сколько человек они активизировали.

5) Создавайте дефицит. Часть контента может быть показана только лидерам. Это так называемый скрытый контент, доступный только по ссылкам.

6) Создавайте эксклюзивные условия для Лидеров, если у вас продающий сайт. Это делает американский KLOUT.

7) Не продавайте ничего лидерам мнений. Это ТАБУ. Им пытаются продать ВСЕ.

8) Спрашивайте советов у лидеров.

9) Будьте полезными лидерам. Они могут к вам обратиться по каким-то вопросам. Такие вопросы необходимо решать в первую очередь.

На самом деле партнерские отношения с лидерами мнений могут предусматривать множества вариантов. Тут есть, где развернуться. Причем многие пункты уже автоматизированы и предлагаются сервисами.

Лидеры мнений уже давно не звезды первой величины, их масса в социальных сетях. В каждой узкой или широкой области есть свои лидеры.

Социальный граф и информационные каскады позволяют точно выявлять лидеров по разным тематикам. Надо просто научиться этим пользоваться.

Анализ социальных сетей: от теории графов до приложений на Python

Начнем с краткого введения в базовые компоненты сети: узлы и ребра.


Пример сети

  • Узлы (например, A,B,C,D,E) обычно представляют объекты в сети и содержат собственные и сетевые свойства. К собственным относятся вес, размер, расположение и прочие атрибуты, а к сетевым — количество соседей (степень) и связная компонента, которой принадлежит узел (кластер).
  • Ребра — это связи между узлами, которые в некоторых случаях также содержат свойства. Например, вес, который определяет силу соединения, направление при ассиметричном отношении, а также время.

Эти два базовых элемента способны описывать множество явлений: социальные связи, виртуальную сеть маршрутизации, физические электросети, дорожную сеть, сети биологических связей и прочие отношения.

Реальные сети

Реальные и, в частности, социальные сети обладают уникальной структурой, которая обычно отличает их от случайных математических сетей.


(а) Сеть “Мир тесен”. (b) Безмасштабная сеть. (с) Случайная сеть. Источник

  • Согласно феномену “Мир тесен”, в реальных сетях пути между подключенными участниками часто очень коротки. Это применимо как к реальным и виртуальным социальным сетям (теория шести рукопожатий), так и к физическим, например аэропортам и электричеству маршрутизации трафика.
  • Безмасштабные сети со степенным законом распределения (power-law) обладают асимметричной популяцией с несколькими сильно связанными узлами (например, социальное влияние) и множеством слабо связанных узлов.
  • Гомофилия — склонность людей образовывать связи с подобными себе, что приводит к схожести свойств между соседями.

Меры центральности

Централизованные узлы играют ключевую роль в сети, выступая в качестве центров для различных тенденций. Определение и значимость центральности могут различаться от случая к случаю и ссылаться на различные показатели. Примеры указаны ниже.

  • Степень (Degree) — количество соседей узла.
  • Влиятельность (EigenVector/PageRank) — итеративные циклы соседей.
  • Близость (Closeness) — степень близости ко всем узлам.
  • Посредничество (Betweenness) — количество коротких путей, проходящих через узел.


Иллюстрация различных мер центральности: (b) высшая степень влиятельности, (h) высшая степень посредничества, (p) лучшая степень близости, (k) высшая степень центральности. Источник

Меры варьируются в зависимости от сценария: ранжирование (page-rank), обнаружение критических точек (betweenness), транспортные узлы (closeness) и прочие.

Построение сети


Для построения сетей подойдет любой набор данных, в котором можно описать связи между узлами. В данном примере мы построим и визуализируем сеть голосования для Евровидения 2018 на основе официальных данных. Для этого воспользуемся пакетом Python Networkx.

Мы прочитаем данные из файла Excel в датафрейм Pandas, чтобы получить табличное представление голосов. Каждая строка включает все голоса из определенной страны. Мы распределим набор так, чтобы в каждой из них был представлен один голос (ребро) между двумя странами (узлы).

Затем построим ориентированный граф с помощью Networkx из edgelist, с которым мы работаем в формате датафрейма Pandas. И наконец, для визуализации мы применим метод обобщения, как показано во фрагменте кода ниже.

Визуализация

Встроенный метод draw выдает очень непонятную фигуру. Он пытается построить сильно связный граф, но без полезных “подсказок” полезную информацию из данных извлечь не получится. Мы улучшим фигуру, разделяя и охватывая различные визуальные аспекты с помощью предварительной информации об этих сущностях.

  • Позиция (Position) — каждая страна присваивается в соответствии с географическим положением.
  • Стиль (Style) — каждая страна распознается по флагу и его цветам.
  • Размер (Size) — размер узлов и ребер представляет количество точек.

Теперь построим компоненты сети по частям.

Поток информации

Для описания этого процесса распространения информации часто используются две популярные базовые модели.

Линейный порог определяет поведение, при котором влияние накапливается от нескольких соседей узла и активируется, только если превышает определенный порог. Такое поведение типично для рекомендаций фильмов: совет от одного из друзей может в конечном счете убедить человека посмотреть кино, если он услышит его и от нескольких других людей.


Функция активации линейного порога. Источник

В модели независимых каскадов каждый из активных соседей узла может потенциально и независимо активировать его. Этот процесс напоминает распространение вирусной инфекции: каждое социальное взаимодействие может привести к заражению.

Пример потока информации

Чтобы проиллюстрировать процесс распространения информации, воспользуемся сетью “Буря мечей”, основанной на персонажах сериала “Игра престолов”. Сеть сконструирована на совместных появлениях героев в книге “Песнь льда и огня”.


Схематический процесс создания сети “Игра престолов”

Опираясь на модель независимых каскадов, мы попытаемся отследить динамику распространения слухов, которые часто встречаются в этом сериале.

Внимание, спойлер! Предположим, что в самом начале Джон Сноу ни о чем не знает, а двое его верных друзей Бран Старк и Сэмвел Тарли владеют очень важным секретом о его жизни. Посмотрим, как распространяются слухи по модели независимых каскадов.

Слух достигает Джона в точке t=1, распространяется на его соседей, а затем и по всей сети, получая широкую огласку.

Динамика во многом зависит от параметров модели, которые влияют на закономерность процесса распространения.

Максимизация влияния

Проблема максимизации влияния описывает маркетинговую (и не только) установку, при которой цель маркетолога состоит в том, чтобы выбрать ограниченный набор узлов в сети, который будет естественным образом распространять влияние как можно большему количеству узлов. Например, пригласить на мероприятие по запуску продукта определенное число влиятельных лиц, которые затем расскажут о нем остальным участникам своей сети.

Подобных инфлюенсеров можно определить различными методиками, такими как меры центральности, упомянутыми выше. Вот самые центральные узлы в сети “Игра престолов”.


Меры центральности в сети “Игра престолов”

Как видите, некоторые персонажи повторно появляются на верхних позициях различных параметров. В сериале они также хорошо известны своим социальным влиянием.

Мы видим, что выбор одного узла может покрыть около 50% сети. Вот насколько важными могут быть социальные инфлюенсеры.


Покрытие сети с различными методами и бюджетами

Однако максимизация влияния — нелегкий процесс и считается NP-трудной задачей. Чтобы найти лучший начальный набор для эффективного расчета, было разработано множество алгоритмов. Мы использовали метод полного перебора, чтобы выбрать лучшую начальную пару узлов (Роберт Баратеон и Кхал Дрого) в нашей сети. Процесс занял 41 минуту, и нам удалось достичь 56% покрытия. Получить такой результат с помощью алгоритмов центральности было бы непросто.

Вывод

Анализ сетей — сложный, но полезный инструмент, который пригодится в различных областях, особенно в стремительно растущих социальных сетях. Он применяется в маркетинговой максимизации влияния, обнаружении мошенничества и системах рекомендаций. Для работы с наборами данных сетей существует множество инструментов и методик. Выбирать их стоит с учетом уникальных свойств сети.


Так выглядит пример социального графа дружеских связей.Каждый квадратик - человек.Каждая линия - дружба.

Содержание

Чтобы построить социальный граф, нам надо:

1. Получить список всех друзей текущего пользователя и представить их в виде точек на плоскости.

2. Для каждого друга из п.1 получить его друзей, общих с текущим пользователем.

3. Точку каждого друга соединить линиями с точками других друзей, которые есть у него в друзьях.


Для более точного понимания можно рассмотреть пример: у Вас есть все из перечисленных друзей (A, B, C, D, E, F H, K). В свою очередь у друга 'A' есть Ваш друг 'E' и 'F'. У друга 'B' есть Ваши друзья 'C', 'D', 'H', 'K'. Ваш друг 'C' дружит с 'D' и 'K'.


Главной целью нашей работы является анализ дружеских связей Вконтакте с помощью построения социального графа.

1.Получение данных пользователя.

2.Обработка полученных данных.


2.После получения списков друзей с помощью методов API VK,нам нужно будет их отсортировать.Делаем это следующим образом :

  • Поисковым запросом находим список друзей исходного id.
  • Далее заполняем словарь общих друзей.
  • Получаем ответ.

Всю полученную информацию мы сохраняем в словаре.

Таким образом,суть в том, что мы просто составляем словарь по поисковым запросам.У нас есть первоначальная таблица id друзей.Затем, c помощью цикла у каждого id мы смотрим количество общих друзей с исходным id.

3.Для визуализации графов мы использовали библиотеку NetworkX. Рассматриваемая библиотека NetworkX предназначенная для создания, манипуляции и изучения структуры, динамики и функционирования сложных сетевых структур.Так же использовалась библиотека Matplotlib.

BZipYtxHV4s.jpg

Полученный социальный граф дружеских связей.

Таким образом, в ходе работы над проектом, был построен социальный граф дружеских связей в социальной сети Вконтакте. Мы смогли проанализировать информацию о некоторой группе людей и наглядно увидеть связь между ними. Из результатов программы можно увидеть, как выделяются подгруппы людей, внутри которых почти все дружат между собой —та самая кластеризация, о которой говорилось во введении.

Читайте также: