"Анализ данных"
Понимание социальных сетей
Социальная сеть формируется, когда существует набор связей между объектами (такими как люди или организации) и взаимодействий (таких как дружба, контракты) между ними. В современном мире существует множество социальных сетей, одна из самых известных — сеть друзей Facebook. Однако, пока мы можем устанавливать связи между различными сущностями, мы можем представлять многие вещи вокруг нас в виде социальной сети или графа. Другими примерами социальной сети могут быть клиенты, пишущие отзывы о продукте — клиенты и продукты становятся узлами в сети, а написание отзывов о продуктах становится преимуществом. В этой статье я буду использовать социальные сети и графики взаимозаменяемо.
Некоторые основы социальных сетей, прежде чем мы углубимся в их сложность
1. Узлы — это объекты внутри графа, такие как люди, продукты, организации, серверы.
2. Ребра — это связи или отношения между узлами, например, когда два человека пишут отзывы об одном и том же продукте.
3. Вес. Вес ребра – это сила соединения. Например: если двух людей связывают 10 общих друзей, то вес равен 10.
4. Однодольный граф — сеть, состоящая только из узлов одного типа.
5. Многодольный граф — сеть, состоящая из нескольких типов узлов.
6. Неориентированный граф — если направление связи между узлами отсутствует, то граф называется неориентированным графом. Например, отношения между двумя друзьями.
7. Направленный граф — если существует направление связи между узлами, то граф называется направленным. Например, коммуникационная сеть, в которой один объект инициирует диалог с другим объектом.
Почему важно анализировать социальную сеть?
- Дает нам лучшее понимание того, как связаны юридические или физические лица
- Дает нам определенные измерения важных объектов/соединений в сети
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