Небольшое введение в сетевой анализ

Anastasiya Kuznetsova
5 min readJul 17, 2019

--

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

Немножко базовых понятий. Сеть — это конечный набор узлов (nodes) и ребер (edges), с помощью которых узлы могут быть связаны. Эта связь также может быть направленная (звонки друзей друг другу) или нет — ненаправленная (дружба в вконтакте).

Например, можно сделать сеть дружбы пользователей Вконтакте, она будет ненаправленная, потому что Вконтакте ты не можешь с кем-то дружить только в одну сторону — вы явно будете друзьями с обоих сторон. Она будет состоять из нескольких компонентов, а может и одного гигантского — тут вопрос в том, связаны ли мы действительно все друг с другом или нет. Если да, то в сети не будет одиночек и мы все будем одной большой сеточкой с кучей кластеров, которые скорее-всего будут географическими — кластер жителей Питера, Москвы и такжe связи между ними. Узлом в сети может быть что угодно — человек (сеть дружбы), организация (сеть бизнес-сотрудничества), страна (сеть торговли) и тд. Главное, чтобы было нечто и что-то, что их связывает.

Данные

Данные для визуализации подаются в нескольких форматах

  • Матрица смежности (adjacency matrix)- названия рядов и столбцов — узлы, на их пересечении — наличие связи — связь есть/нет (1/0). Если сеть ненаправленная, то матрица получится симметричной, если направленная, то и матрица будет несимметричной. Если есть лупы (связь узла с самим собой), то по диагонали матрицы тоже могут находиться значения. Иногда в ячейках не 1/0, а вес связи, например, сила дружбы, измеряемая в количестве совместных походов в кино.
  • Двусвязный список рёбер (edge list) — он показывает все связи в сети. В ней два столбца и в каждом представлены узлы, если они находятся друг напротив друга, то между ними есть связь. В третьем столбец может также лежать вес связи.
  • Список смежности (adjacency list) — устроен по типу узел — его связи с другими узлами. Что-то среднее между матрицей и эджлистом.
Визуализация ненаправленной сети и данные для нее
Визуализация направленной сети и данные для нее

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

Самые популярные способы визуализации сетевых данных — сеть, матричная диаграмма (matrix diagram), дуговая диаграмма (arc diagram), хордовая диаграмма (chord diagram), диаграмма Санкея (sankey plot). Еще про это можно почитать тут.

  • Сеть — самое базовое, что есть, но тут важную роль играет выбор layout-а (алгоритма визуализации). Самый популярный — force-directed layout (силовой алгоритм). Он старается расположить узлы и связи так, чтобы они были примерно одной длины и не пересекались. Я еще напишу что-то более подробное про алгоритмы визуализации, а пока знайте, что большая часть сеточек визуализирована именно этим алгоритмом.
Сети работников фирмы, ссылка
  • Матрицы выглядят почти как японские кроссворды, где клеточки закрашивают. Они очень хорошо показывают данные и их структуру. С ними удобно считать количество узлом или анализировать плотные участки сети, выделяя кластеры.
Совместное появление персонажей в романе «Отверженные», ссылка
  • Дуговая диаграмма — они нужны, если у вас есть последовательность во времени. Не подойдет для больших данных или какого-то длинного временного отрезка, но в целом хорошо показывает именно последовательности, например, появление героев в книге.
Перекрестные упоминания в Библии, ссылка
  • Хордовая диаграмма — это тоже больше про layout, потому что сеточка рисуется кругом. Удобно использовать при небольшом количестве узлов, где важно показать тип или вес связи. Например, объем торговли между странами. Диаграмма Санкея (санкиплот) выглядит и работает также, только узлы расположены последовательно, а не кругом.
Торговля природными ресурсами между странами, ссылка

Если вы все же выбрали сеть, то вот на что еще, кроме алгоритма расположения узлов, стоит обратить внимание. Размер узла обычно рисуется в зависимости от его сетевых характеристик. Самое базовое — degree– количество связей узла. Это уже поможет вам найти самых популярных агентов в сети. Или, например, betweenness– количество кратчайших путей, проходящих через узел, показывающая доступ к разносторонним связям у агента и доступ к информации. С толщиной линии связи особо играться не советую, если важно показать вес, то берите хордовую или санкиплот. Зато можно с цветом! И связей и узлов, лучше узлов конечно и в зависимости от каких-нибудь его характеристик. Например, если это сеть дружбы, то можно раскрасить их в зависимости от того, из какого города эти люди. Еще можно красить кластеры, чтобы они лучше просматривались, но перед этим все же нужно проводить кластеризацию.

Еще немного про разные метрики тут

Ну вот как-то так! Ниже список инструментов и торжественно обещаю сделать еще пост про алгоритмы визуализации и когда какой брать. Надеюсь, было интересно)) Если что-то заинтересовало — пишите, расскажу! А пока можете весело порисовать эго-сеть своих друзей на сайте https://www.yasiv.com/vk. Самое крутое, что вы там найдете — кластеры друзей, которые скорее всего будут сформированы в зависимости от важных для вас мест — работа, универ, школа или еще какие-то тематические сообщества, в которых вы состоите. Найдите людей, которые объдиняются в эти кластеры, кроме вас, а еще, с кем выгоднее всего дружить — у кого много связей полезных и не очень. Приложение немного грязновато все визуализирует, но при желании точно найдете что-то интересненькое.

Где рисовать!

--

--

Anastasiya Kuznetsova
Anastasiya Kuznetsova

Written by Anastasiya Kuznetsova

Write about Data Visualization, BI and Tableau. Love sociology, space and urban analytics.

No responses yet