Ранее мы публиковали быстрый , где с помощью графиков анализировались сообщества в «Точках кипения» из разных городов России.
Теперь мы хотим рассказать вам, как строить такие графики и анализировать их.
Ниже под катом — пошаговая инструкция для тех, кто давно хотел разобраться в графической визуализации и ждал подходящей возможности.
1. Выбор гипотезы
Если вы попытаетесь визуализировать хоть что-то, бездумно загружая данные в программу построения графиков, результат вас не обрадует. Итак, сначала выясните, что вы хотите узнать из графиков, и выдвиньте жизнеспособную гипотезу.Для этого разберитесь, какие данные у вас уже есть, какие из них можно представить как «объекты», а какие как «связи» между ними.
Обычно объектов значительно меньше, чем связей — можно проверить себя таким образом.
Наш тестовый пример мы готовили вместе с командой Boiling Point из Томска.
Соответственно, все данные для анализа о событиях и их участниках мы будем иметь оттуда.
Нам стало интересно, сформировалось ли сообщество из участников этих мероприятий и как оно выглядит с точки зрения принадлежности участников к бизнесу, университетам и власти.
Мы предположили, что люди, посетившие одно и то же мероприятие, связаны друг с другом.
Причём, чем чаще они вместе посещали мероприятия, тем крепче была связь.
Во втором случае мы решили выяснить, как принадлежность участников к одной из «сетей» (нашим ключевым направлениям) коррелирует с интересующими их сквозными технологиями.
Распределение равномерное, есть ли «горячие темы»? Для анализа мы взяли данные об участниках мероприятия из 200 томских технологических компаний.
В принципе, даже таких первоначальных формулировок гипотез достаточно, чтобы перейти ко второму шагу.
2. Подготовка данных
Теперь, когда вы определились, что хотите узнать, возьмите весь массив данных, посмотрите, какая информация об «объектах» хранится, выкиньте все ненужное и добавьте недостающее.Если данные распределены по нескольким источникам, сначала соберите все в одну кучу, удалив дубликаты.
Позвольте мне объяснить на примере.
У нас были данные об участниках 650 мероприятий.
Это, условно говоря, 650 таблиц Excel по ~23 000 записей в них, содержащих поля «Идентификатор руководителя», «Должность», «Организация».
Для построения графа достаточно одного уникального идентификатора (к счастью, он здесь есть — это Leader ID) и признака, который привязывает каждого участника к одной из трёх рассматриваемых сфер: правительству, бизнесу или университетам.
А этой информации у нас пока нет. Чтобы его получить, можно пойти дальше: в каждом из 650 файлов убрать лишние столбцы и добавить новое поле, заполнить его значениями для каждой строки, например: «1» для власти, «2» для бизнеса.
и «3» для образования и науки.
Или можно сначала объединить все 650 файлов в один большой список, удалить дубликаты и только потом добавлять новые значения.
В первом случае такая работа займет 1-2 месяца.
Во втором - 1-2 недели.
В общем, при добавлении новых атрибутов старайтесь сначала сгруппировать данные.
Например, вы можете отсортировать участников по компаниям/организациям и задать атрибут массово.
Подготовим данные дальше.
Чтобы загрузить их в большинство программ визуализации, вам потребуется создать два файла: один со списком вершин, второй со списком ребер.
Файл вершин в нашем случае содержал два столбца: Id — номер вершины и Label — тип.
Файл ребер также содержал два столбца: Source — идентификатор начальной вершины, Target — идентификатор конечной вершины.
Как превратить в ребра данные о том, что участники 1, 2, 5 и 23 посетили одно и то же мероприятие? Необходимо создать шесть линий и отметить связь каждого участника с каждой: 1 и 2, 1 и 5, 1 и 23, 2 и 5, 2 и 23, 5 и 23.
В нашем втором примере таблицы выглядели так:
В топе числятся как рынки, так и сквозные технологии.
Если, скажем, представитель компании, принадлежащей к рынку Технет (ID=4), посетил мероприятие по теме «Большие данные и ИИ» (ID=17), то вводим ребро (строку), соединяющее эти вершины в ребро.
таблица (Источник = 4, Цель = 17).
Этап подготовки данных — самая трудоемкая часть процесса, но наберитесь терпения.
3. Визуализация графика
Итак, таблицы с данными подготовлены, можно поискать способ представить их в виде графика.Для визуализации мы использовали программу Gephi — мощный инструмент с открытым исходным кодом, способный обрабатывать графы с сотнями тысяч вершин и связей.
Вы можете скачать его с Официальный веб-сайт .
Я сделаю скриншоты со второго проекта, в котором было небольшое количество вершин и связей, чтобы все было максимально понятно.
Прежде всего нам необходимо загрузить таблицы вершинами и ребрами.
Для этого в меню раздела «Лаборатория данных» выберите пункт «Импорт из CSV».
Сначала загружаем файл с вершинами.
На первом экране формы указываем, что импортируем вершины, и проверяем, что программа правильно определяет кодировку подписей.
На третьей форме «Отчет об импорте» важно указать тип столбца.
Для нас он не ориентирован.
Аналогичным образом загружаем ребрышки.
В первом окне указываем, что это файл с краями, а также проверяем кодировку.
В третьем окне «Отчет об импорте» нас ждет важный момент. Здесь важно указать не только то, что граф не ориентирован, но и загрузить ребра в ту же рабочую область, что и вершины.
Поэтому выберите пункт «Добавить к существующему рабочему месту».
В результате мы увидим примерно такой график (вкладка «Обработка»):
Итак, ребра имеют разную толщину в зависимости от количества связей между вершинами.
Посмотреть вес каждого ребра можно на вкладке «Лаборатория данных» в свойствах ребра в столбце «Вес».
Что здесь плохого: все вершины одинакового размера и расположены абсолютно случайно.
Исправим это на вкладке «Обработка».
Сначала в левом верхнем окне выберите Узлы и нажмите на иконку с кружками («Размер»).
Далее выберите пункт Ranking — он позволяет установить размер вершины в зависимости от любого параметра.
У нас есть возможность выбрать только один параметр — Степень, который показывает, сколько ребер выходит из вершины.
Выберите минимальный и максимальный размер круга и нажмите кнопку «Применить».
Здесь, если вы выберете другие значки, вы сможете настроить цвет маркера вершины и цвет ребер.
Теперь график стал более понятным.
Следующее, что нужно сделать, это распутать граф.
Это можно сделать вручную, перемещая вершины, или использовать алгоритмы стекирования, реализованные в Gephi. Чего мы достигаем при правильном монтаже? Максимальная видимость.
Чем меньше пересечений вершин и ребер в графе, чем меньше пересечений ребер, тем лучше.
Также было бы неплохо, чтобы соседние вершины располагались ближе друг к другу, а несмежные — дальше друг от друга.
Ну и всё было распределено по видимой области, а не сжато в одну кучу.
Как это сделать в Gephi? Левое нижнее окно «Стек» содержит наиболее популярные алгоритмы стека, основанные на силовых аналогиях.
Представьте себе, что вершины — это заряженные шарики, которые отталкиваются друг от друга, но некоторые из них удерживаются вместе чем-то похожим на пружины.
Если задать соответствующие силы и «отпустить» граф, вершины разлетятся на максимально допустимые пружинами расстояния.
Наиболее однородную картину дает алгоритм Фрюхтермана и Рейнгольда.
Выберите Fruchterman Reingold из раскрывающегося меню и установите размер области застройки.
Нажмите кнопку «Выполнить».
Вы получите что-то вроде этого:
Вы можете помочь алгоритму и, не останавливая его, перетащить некоторые вершины, пытаясь распутать граф.
Но помните, что кнопки «Отмена» нет; вернуться к прежнему расположению вершин уже не получится.
Поэтому сохраняйте новые версии проекта перед каждым рискованным изменением.
Еще один полезный алгоритм — Force Atlas 2. Он представляет собой граф в виде металлических колец, соединенных пружинами.
Деформированные пружины приводят систему в движение, она колеблется и со временем принимает устойчивое положение.
Этот алгоритм хорош для визуализаций, которые подчеркивают структуру группы и выделяют высоковзаимодействующие подмножества.
Этот алгоритм имеет большое количество настроек.
Давайте посмотрим на самые важные из них.
«Без перекрытия» предотвращает перекрытие вершин друг с другом.
Разреженность увеличивает расстояние между вершинами, делая граф более читабельным.
Кроме того, что делает граф более воздушным, так это уменьшение влияния весов ребер на относительное положение вершин.
Поигравшись с настройками получаем следующий график:
Получив график в удобном для вас виде, приступайте к окончательной обработке.
Это вкладка «Вид».
Здесь мы можем установить, например, отрисовку графа с изогнутыми ребрами, что минимизирует перекрытие вершин другими ребрами.
Мы можем включить метки вершин, установив размер и цвет шрифта.
Наконец, измените фон фона.
Например, вот так:
Для того, чтобы сохранить полученный рисунок, нажмите на надпись «Ээкспортировать SVG/PDF/PNG» в левом нижнем углу окна.
Также не забудьте сохранить сам проект отдельно через верхнее меню «Файл» – «Сохранить проект».
В нашем случае важно было подчеркнуть взаимосвязь сквозных технологий и рынков НТИ, для чего мы вручную выстроили все рынки в одну линию по центру, а все остальное разместили сверху и снизу.
В результате получается такой график.
И всё же для решения конкретных задач без расстановки вершин вручную не обойтись.
Вы, наверное, думаете, как нам удалось раскрасить вершины в разные цвета? Есть одна хитрость.
Вы можете перейти на вкладку «Лаборатория данных», создать там новый столбец в вершинах, назвав его «Рынок».
И заполняем значения для каждой вершины: 1, если это рынок НТИ, 0, если это сквозная технология.
Далее просто заходим в «Обработка», выбираем иконку в виде палитры Узлы – Раздел и в качестве разделителя наш новый атрибут «Рынок».
Для более сложных конструкций, когда необходимо выделить кластеры и раскрасить их разными цветами, Gephi использует богатый арсенал статистических вычислений, результаты которых можно использовать для раздельной раскраски.
Эти расчеты расположены в правом столбце вкладки «Обработка».
Например, нажав кнопку «Выполнить» рядом с расчетом «Модульность», вы узнаете оценку уровня кластеризации вашего графа.
Если затем установить цвет вершин в зависимости от класса модульности, появится вот такая красивая картинка:
Если вы хотите узнать еще больше о возможностях Gephi, стоит прочитать руководство Мартина Гранжана по использованию программы.
http://www.martingrandjean.ch/gephi-introduction/ .
4. Анализ результата
Итак, вы получили финальную визуализацию графика.Что она тебе дает? Во-первых, это красиво, его можно вставить в презентацию, показать друзьям или сделать заставкой на рабочий стол.
Во-вторых, из него можно понять, насколько сложна и многокластерна структура рассматриваемой вами предметной области.
В-третьих, обратите внимание на самые большие вершины и самые толстые соединения.
Это особые элементы, на которых все держится.
Таким образом, построив граф экспертного сообщества, посещающего мероприятия «Точки кипения», мы сразу выявили участников, которые с наибольшей вероятностью выступят в роли суперконнекторов.
Они представляли собой «вершины», посредством которых кластеры объединялись в единое целое.
А во втором случае мы увидели, как выглядит концентрация специалистов томских компаний с точки зрения их принадлежности к рынку и сквозным цифровым технологиям, на которые они опираются.
Это косвенно говорит об уровне технологических компетенций и экспертизы региона.
Помощь графиков в понимании окружающей действительности действительно велика, так что не поленитесь и попробуйте создать собственную визуализацию данных.
Это совсем не сложно, но иногда трудоемко.
Теги: #математика #Визуализация данных #Интеллектуальный анализ данных #графики
-
Алгоритмы И Структуры Данных – Шпаргалка
19 Oct, 24 -
Как Мы Начали Создавать Конференции
19 Oct, 24