"Анализ данных"

Понимание социальных сетей

Социальная сеть формируется, когда существует набор связей между объектами (такими как люди или организации) и взаимодействий (таких как дружба, контракты) между ними. В современном мире существует множество социальных сетей, одна из самых известных — сеть друзей Facebook. Однако, пока мы можем устанавливать связи между различными сущностями, мы можем представлять многие вещи вокруг нас в виде социальной сети или графа. Другими примерами социальной сети могут быть клиенты, пишущие отзывы о продукте — клиенты и продукты становятся узлами в сети, а написание отзывов о продуктах становится преимуществом. В этой статье я буду использовать социальные сети и графики взаимозаменяемо.

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

1. Узлы — это объекты внутри графа, такие как люди, продукты, организации, серверы.

2. Ребра — это связи или отношения между узлами, например, когда два человека пишут отзывы об одном и том же продукте.

3. Вес. Вес ребра – это сила соединения. Например: если двух людей связывают 10 общих друзей, то вес равен 10.

4. Однодольный граф — сеть, состоящая только из узлов одного типа.

5. Многодольный граф — сеть, состоящая из нескольких типов узлов.

6. Неориентированный граф — если направление связи между узлами отсутствует, то граф называется неориентированным графом. Например, отношения между двумя друзьями.

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

Почему важно анализировать социальную сеть?

  1. Дает нам лучшее понимание того, как связаны юридические или физические лица
  2. Дает нам определенные измерения важных объектов/соединений в сети

3. Найдите похожие сущности на основе типов соединений

4. Выйдите за рамки индивидуального восприятия и проанализируйте людей/сущности на основе их связей.

Давайте углубимся в анализ анализа социальных сетей с помощью Python.

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

Источник данных: набор данных SNAP Facebook Gemsec https://snap.stanford.edu/data/gemsec-Facebook.html. Этот набор данных представляет синие подтвержденные сети страниц Facebook разных спортсменов. Узлы представляют страницы спортсменов, а ребра — взаимные лайки между ними. Для достижения анонимности узлы индексируются с 0.

Пакеты с открытым исходным кодом для анализа социальных сетей:

Два очень популярных пакета, доступных для анализа социальных сетей:

NetworkX: NetworkX — это пакет Python для создания, управления и изучения структуры, динамики и функций сложных сетей. https://networkx.org/

Networkit: NetworKit — это развивающийся набор инструментов с открытым исходным кодом для крупномасштабного сетевого анализа. Его цель — предоставить инструменты для анализа больших сетей размером от тысяч до миллиардов ребер. https://networkit.github.io/

Чтобы загрузить эти пакеты, выполните следующие команды в терминале:

pip3 установить сеть

pip3 установить сетьx

Ниже приведены шаги, которые можно выполнить, чтобы воссоздать анализ в Jupyter Notebook:

Шаг 1. Загрузите набор данных из репозитория SNAP в Pandas DataFrame, создайте объект графа и распечатайте статистику по количеству узлов и ребер.

Шаг 2. Визуализируйте социальную сеть.

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

Здесь мы видим, что есть определенные группы узлов, которые не пересекаются, и некоторые, которые объединены общим отношением узлов.

Шаг 3. Создание показателей социальной сети

Центральность по степени. Центральность по степени рассчитывается на уровне узла и измеряет количество ребер, которые он имеет. Значения степени центральности нормализуются путем деления на максимально возможную степень в простом графе n-1, где n — количество узлов в G.

Центральность по собственному вектору – степень центральности вычисляется на уровне узла и измеряет влияние узла на сеть.

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

Заключение

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

Источники

https://snap.stanford.edu/data/gemsec-Facebook.html

https://networkx.org/documentation/stable/index.html

https://networkit.github.io/

https://en.wikipedia.org/wiki/Социальная_сеть