Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
19
Добавлен:
16.01.2025
Размер:
7.83 Mб
Скачать

мации, такой

подход в

сравнении с моделировани-

ем графовой

базы

данных средствами реляционной

СУБД позволяет применять дополнительную оптимизацию в случае данных с более сложной структурой. Также утверждается о наличии специальных оптимизаций для SSD-

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

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

Терминология графовых баз данных

graph database, графовая база данных — база данных построенная на графах — узлах и связях между ними

Cypher — язык для написания запросов к базе дан-

ных Neo4j (примерно, как SQL в MYSQL)

node, нода — объект в базе данных, узел графа. Количество узлов ограниченно 2 в степени 35 ~ 34 биллиона

node label, метка ноды — используется как услов-

ный «тип ноды». Например, ноды типа movie могут быть связанны с нодами типа actor. Метки нод — регистрозависимые, причем *Cypher не выдает ошибок, если набрать не в том регистре название.

relation, связь — связь между двумя нодами, ребро графа. Количество связей ограниченно 2 в степени 35 ~ 34 биллиона

relation identirfier, тип связи — в Neo4j у связей.

Максимальное количество типов связей 32767

properties, свойства ноды — набор данных, которые можно назначить ноде. Например, если нода — это товар, то в свойствах ноды можно хранить id товара из базы MySQL

node ID, ID нода — уникальный идентификатор ноды. По умолчанию, при просмотрах результата отображается именно этот ID.

91

Сохранение данных в Neo4j

Файл nodestore.db содержит определенный размер записей, содержащих информацию о ноде:

1.Метка, которая показывает, запись активна;

2.Указатель на первое отношение, которое содержит данная нода;

3.Указатель на первую свойство, которое содержит данная нода.

Нода не содержит собственного идентификатора. Так как каждая запись в nodestore.db занимает одинаковое количество места, можно рассчитать указатель на ноду.

Файл relationshipstore.db также содержит записи одинакового размера, которые описывают отношения, но они состоят из следующих элементов:

1.Метка, которая показывает, запись активна;

2.Указатель на ноду, которая содержит это отношение;

3.Указатель на ноду, к которой это отношение направлено;

4.Вид отношения;

5.Указатель на отношение, которое стоит впереди (в пределах данной ноды);

6.Указатель на отношение, которое стоит сзади (в пределах данной ноды);

7.Указатель на отношение, которое стоит впереди (в пределах Ноды, в которой это отношение направлено);

8.Указатель на отношение, которое стоит сзади (в пределах Ноды, в которой это отношение направлено);

9.Указатель на первое свойство данного отношения. Как модель данных выбран ориентированый граф

свойств:

Содержит узлы (nodes) и связи (relationships).

Узлы имеют свойства (properties). Узлы можно рассматривать как документы, содержащие свойства в виде пар ключ-значение.

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

92

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

Основные транзакционные возможности — поддержка ACID и соответствие спецификациям JTA, JTS и XA. Ин-

терфейс программирования приложений для СУБД реализован для многих языков программирования, вклю-

чая Java, Python, Clojure, Ruby, PHP, также реализовано API в

стиле REST. Расширить программный интерфейс можно как с помощью серверных плагинов, так и с помощью неуправляемых расширений (unmanaged extensions); плагины могут добавлять новые ресурсы к REST-интерфейсу для конечных

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

В СУБД используется Cypher — декларативная язык за-

просов к графам. Синтаксис этого языка похож на синтаксис SQL. Поддерживаются операции по созданию, выборки, обновления, удаления данных. Cypher описывает графы, используя спецификацию по образцу — используется простая форма ASCII-графики, пользователь рисует часть графа, его ин-

тересует, с помощью ASCII символов; вершины берутся в скобки, их метки прописываются после «:»; для создания нескольких узлов их следует перечислить через »,«; связи отражаются стрелками (-> и <-), а названия связей указываются внутри

квадратных скобок после «:»; свойства узлов и связей (пары ключ-значение) прописываются в фигурных скобках.

Язык запросов Cypher — самый распространенный язык запросов к графовым базам данных, что обусловлено его использованием в СУБД Neo4j . Cypher является декларативным языком и позволяет создавать, обновлять и удалять вершины, ребра, метки и свойства, а также управлять индексами и ограничениями. Для извлечения данных из хранилища испо-

93

льзуется запрос, содержащий шаблон фильтрации, позволяющий получать:

(n)(m) — все направленные ребра из вершины n

в вершину m;

(n:Person) — все вершины с меткой Person;

(n:Person:Russian) — все вершины, имеющие обе

метки Person и Russian;

(n:Person {name:{value}}) — все вершины с меткой

Person и отфильтрованные по дополнительному свойству;

(n:Person) (m) — ребра между вершинами n с

меткой Person и m;

(n)--(m) — все ненаправленные ребра между вер-

шинами n и m.

Запросы в Neo4j можно делать и другими способами, например, напрямую через Java API и на языке Gremlin[en], созданном в проекте с открытым исходным кодом TinkerPop. Cypher является не только языком запросов, но и языком манипулирования данными, так как предоставляет функции CRUD для графового хранилища.

Gephi

Gephi - это пакет программного обеспечения с открытым кодом для анализа и визуализации графов (сетей).

Gephi (https://gephi.org/) - это в настоящее время самая

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

типлатформенное программное обеспечение, которое распространяется с открытым кодом согласно лицензиям CDDL 1.0 и GNU General Public License v3. По адресу https://gephi.org/

доступны версии для Mac OS X, Windows и Linux исходных кодов.

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

помощью этого пакета можно заниматься любой темой сете-

94

вого анализа. Gephi использовался, среди прочего, для визуализации глобальной связности контента New York Times и изучения сетевого трафика Twitter во время социальных волнений; Gephi вдохновлял создания LinkedIn InMaps и был использован для визуализации целой сети Truthy.

Gephi позволяет обрабатывать графу структуры достаточно больших объемов (до 1 млн. Узлов) на персональном компьютере за счет ефективних алгоритмов.

Разработчики Gephi описывают эту программу как "как

Photoshop, но для данных".

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

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

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

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

Интерфейс пользователя системы Gephi включает три основных раздела (окна):

«Лаборатория данных»: здесь хранятся все исходные данные о сети, а также дополнительные расчетные значения;

«Обработка данных»: здесь происходит большая часть операций пользователя, в частности, ручное редактирование сетей, тестирование макетов, установки фильтров;

«Предварительный просмотр»: здесь уточняется форма вывода графу, как правило, с помощью набора инструментов граф дорабатывается, в том числе, и

с эстетической точки зрения. В этом же окне реализован вызов экспорта графа в форматы PDF, PNG и

SVG.

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

95

Gephi является интерактивным программным обеспечением и

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

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

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

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

При анализе больших и плотных сетей, быстрое компоновки (упорядочение узлов графов) является узким местом, поскольку большинство сложных алгоритмов компоновки является требовательными к параметрам процессора, памяти и времени выполнения. В то же время, Gephi поставляется с эффективными алгоритмами компоновки, такими как Yifan- Hu, Force-directed. В частности, алгоритм Yifan-Hu является

идеальным вариантом для применения после других, более быстрых и грубых алгоритмов. В то время, как большинство из предложенных в Gephi методов могут выполняться в течение допустимого времени, сочетание, например, OpenOrd и Yifan-Hu, дает наиболее качественные визуальные представ-

ления. Конечно, правильная параметризация любого алгоритма компоновки может влиять как на работе, так и на результат визуализации.

Gephi позволяет загружать данные сетей в форматах

GEXF, GDF, GML, GraphML, Pajek (NET), GraphViz (DOT), CSV,

UCINET (DL), Tulip (TPL), Netdraw (VNA) и таблиц Excel. Кроме того, Gephi позволяет экспортировать данные сетей в форма-

тах JSON, CSV, Pajek (NET), GUESS (GDF), Gephi (GEFX), GML

и GraphML. Благодаря этому Gephi может взаимодействовать

сдругими системами анализа и визуализации графов.

2.6.Математические основы

Вданной главе основное внимание уделено распознаванию информационных операций на основе изучения динамиче-

96

ских свойств информационных потоков в глобальных компьютерных сетях, в частности, в сети Интернет.

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

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

[Lande, 2007].

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

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

внимание уделено взаимосвязям.

97

Рис. 13 – Взаимосвязи между подходами к анализу времен-

ных рядов

2.6.1. Временные ряды

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

временной ряд

или коротко

 

 

 

подразумевая,

что фиксирование значений ряда

происходило через равный

 

*

+

(

) .

промежуток времени

:

 

 

 

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

В качестве примеров далее будут использоваться три временных ряда, которые были получены с помощью популярного сетевого сервиса GoogleTrends. Эти временные ряды отображают уровень интереса к Дональду Трампу, Хилари Клинтон и «русским хакерам» с августа 2016 года по апрель 2017 года. Временные ряды, получаемые с помощью GoogleTrends, показывают динамику популярности поискового запроса.

98

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

Для простоты ссылок на данные ряды в дальнейшем обозначим их Т (Д. Трамп), К (Х. Клинтон), Х («русские хакеры»).

Рис. 14 – Временные ряды, которые отображают интерес к

Дональду Трампу (Т), Хилари Клинтон (К) и «русским хакерам»

(Х) с 1 августа 2016 года по 1 апреля 2017 из GoogleTrends.

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

тов ряда из интервала заданной длины, а именно

где – ширина сглаживающего интервала (количество элементов, по которым рассчитывается среднее), – значение простого скользящего среднего в точке . Полученное зна-

чение

 

 

относится к середине сглаживающего интервала,

поэтому

 

сглаженный ряд

может быть определен как

=

0

 

1.

 

 

 

 

При использовании сглаживания скользящим средним, чем больше ширина сглаживающего интервала, тем более

99

гладкой получится функция. На Рис. 15 показано как выглядит сглаженный ряд Т при увеличении значения .

Рис. 15 – Исходный ряд Т и сглаженный простым скользящим

средним с шириной сглаживающего интервала 2, 7, 12, 18.

Результаты сглаживания ряда можно продемонстрировать на графике, у которого ось абсцисс соответствует вре-

менной оси, а вдоль оси ординат отложена ширина сглажи-

вающего интервала. На графике показаны значения

( ) – то

есть элементы сглаженного ряда в точке при использовании интервала ширины (Рис. 16).

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

w1

где ai 1.

i 0

100