Извлечение и визуализация данных
Выбери формат для чтения
Загружаем конспект в формате doc
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Извлечение и визуализация данных
Любая система поддержки принятия решений, прежде всего, должна обладать средствами отбора и предоставления пользователю данных в удобной для восприятия и анализа форме.
Чтобы получить какие-то новые знания об исследуемом объекте или явлении, необязательно строить сложные модели. Часто достаточно посмотреть на данные в нужном виде, чтобы сделать определенные выводы или выдвинуть предположение о характере зависимостей в системе, получить ответ на интересующий вопрос. Это помогает сделать визуализация.
• OLAP (кросс-таблицы и кросс-диаграммы);
• таблицы
• диаграммы, гистограммы
• карты, проекции, срезы и т.п.
Проиллюстрируем вышесказанное. На рис. 4 приведены два способа визуализации одних и тех же данных по продажам в аптечной сети: в виде таблицы и в виде графика. В первом случае, глядя на таблицу, мы практически не можем сделать каких-либо выводов, относительно динамики продаж.
Во втором варианте, представив те же данные в виде сумм продаж в разрезе аптек и построив столбчатую диаграмму, мы видим, что самые большие продажи приходятся на «Отдел» Аптека 1.
Хотя для построения систем отчетности можно применять различные подходы, самый распространенный на сегодня – это механизм OLAP (Online Analytical Processing – оперативная аналитическая обработка данных). Как правило, наиболее удобными для анализа являются многомерные данные, описывающие предметную область сразу с нескольких точек зрения. Для описания таких наборов данных вводится понятие многомерных кубов (гиперкубов, метакубов). По осям такого куба размещаются параметры (или измерения, например, - время, продукты, клиенты), а в ячейках – зависящие от них данные (показатели, например, - сумма продаж, средняя цена закупки). Вдоль каждой оси представлены различные уровни детализации данных. Пользователь манипулирует измерениями и получает информацию в нужном разрезе. Использование такой модели данных позволяет повысить эффективность работы с ними: генерировать сложные запросы, создавать отчеты, выделять подмножества данных и т.д. Технология комплексного многомерного анализа данных и предоставления результатов этого анализа в удобной для использования форме получила название OLAP. OLAP дает возможность в реальном времени генерировать описательные и сравнительные сводки данных и получать ответы на различные другие аналитические запросы. OLAP-кубы представляют собой проекцию исходного куба данных на куб данных меньшей размерности. При этом значения ячеек агрегируются, то есть объединяются с применением функции агрегации – сумма, среднее, количество, минимум, максимум. Такие проекции или срезы исходного куба представляются на экране в виде кросс-таблицы. Благодаря простоте понимания OLAP получил широкое распространение в качестве механизма анализа данных, но необходимо понимать, что его возможности в области более глубокого анализа, например, прогнозирования, крайне ограничены.
Проиллюстрируем идею OLAP-куба на простом примере. Пусть, информацию, хранящуюся в базе данных или подмножество данных, получаемое в результате выполнения запроса можно представить в виде таблицы:
Основываясь на данных из таблицы, можно дать ответы на несколько вопросов, которые могут возникнуть при анализе объемов продаж. Например.
Каков объем продаж каждого товара по одному из городов?
Данную выборку можно интерпретировать как одномерную, поскольку объемы продаж
расположены только вдоль одного измерения с наименованием товара.
Каков объем продаж каждого из товаров по городам?
Чтобы представленный куб превратился в 3-х мерный необходимо добавить еще одно измерение данных, т.е., практически, привлечь дополнительную информацию по анализируемым параметрам.
Например, если в базе данных предусмотрена информация о квартальном объеме продаж каждого товара по всем городам, то номер квартала может стать этим дополнительным измерением.
На основе подобной выборки можно построить 3-х мерный куб.
Такая модель представления данных позволяет получать нужную информацию, производя соответствующие сечения (срезы) OLAP-куба.
Нет необходимости пытаться произвести геометрическую интерпретацию OLAP-куба с размерностью более 3-х. Действительно, поскольку человеческое сознание «приспособлено» к восприятию 3-х мерной действительности, все прочие представления сложны для восприятия. Тем более что речь идет не о реальном, а об информационном пространстве, а само понятие «многомерный куб» есть не что иное, как служебный термин, используемый для описания метода.
Работа с OLAP кубом.
Принципы построения.
Механизм OLAP (Online Analytical Processing) является на сегодня одним из популярных методов анализа данных. Есть два основных подхода к решению этой задачи. Первый из них называется Multidimensional OLAP (MOLAP) – реализация механизма при помощи многомерной базы данных на стороне сервера, а второй Relational OLAP (ROLAP) – построение кубов "на лету" на основе SQL запросов к реляционной СУБД. Мы же опишем нашу реализацию ядра настольного ROLAP модуля.
Общую схему работы настольной OLAP системы можно представить следующим образом:
Алгоритм работы следующий:
1. Получение данных в виде плоской таблицы или результата выполнения SQL запроса.
2. Кэширование данных и преобразование их к многомерному кубу.
3. Отображение построенного куба при помощи кросс-таблицы или диаграммы и т.п. В общем случае, к одному кубу может быть подключено произвольное количество отображений.
Отображения, используемые в OLAP системах, чаще всего бывают двух видов – кросс-таблицы и диаграммы. Рассмотрим кросс-таблицу, которая является основным и наиболее распространенным способом отображения куба.
Кросс-таблица представляет собой размещение многомерных данных на плоскости в виде сводной таблицы. Следовательно, прежде чем строить эту таблицу, необходимо указать измерения и факты.
Кросс-таблица
Таблицу можно разделить на следующие элементы, с которыми мы и будем работать в дальнейшем:
Заполняя матрицу с фактами, мы должны действовать следующим образом:
• На основании данных об измерениях определить координаты добавляемого элемента в матрице.
• Определить координаты столбцов и строк итогов, на которые влияет добавляемый элемент.
• Добавить элемент в матрицу и соответствующие столбцы и строки итогов.
При этом нужно отметить то, что полученная матрица будет сильно разреженной, почему ее организация в виде двумерного массива (вариант, лежащий на поверхности) не только нерациональна, но, скорее всего, и невозможна в связи с большой размерностью этой матрицы, для хранения которой не хватит никакого объема оперативной памяти. Например, если наш куб содержит информацию о продажах за один год, и если в нем будет всего 3 измерения – Клиенты (250), Продукты (500) и Дата (365), то мы получим матрицу фактов следующих размеров:
Кол-во элементов = 250 х 500 х 365 = 45 625 000
И это при том, что заполненных элементов в матрице может быть всего несколько тысяч. Причем, чем больше количество измерений, тем более разреженной будет матрица.
Поэтому, для работы с этой матрицей нужно применить специальные механизмы работы с разреженными матрицами.
Загрузка данных в гиперкуб
Первым этапом работы системы будет загрузка данных и преобразование их во внутренний формат. Закономерным будет вопрос – а зачем это надо, ведь можно просто использовать данные из плоской таблицы, просматривая ее при построении среза куба. Для того чтобы ответить на этот вопрос, рассмотрим структуру таблицы с точки зрения OLAP машины.
Для OLAP системы колонки таблицы могут быть либо фактами, либо измерениями. При этом логика работы с этими колонками будет разная. В гиперкубе измерения фактически являются осями, а значения измерений – координатами на этих осях. При этом куб будет заполнен сильно неравномерно – будут сочетания координат, которым не будут соответствовать никакие записи и будут сочетания, которым соответствует несколько записей в исходной таблице, причем первая ситуация встречается чаще, то есть куб будет похож на вселенную – пустое пространство, в отдельных местах которого встречаются скопления точек (фактов). Таким образом, если мы при начальной загрузке данных произведем преагрегирование данных, то есть объединим записи, которые имеют одинаковые значения измерений, рассчитав при этом предварительные агрегированные значения фактов, то в дальнейшем нам придется работать с меньшим количеством записей, что повысит скорость работы и уменьшит требования к объему оперативной памяти.
Для построения срезов гиперкуба нам необходимы следующие возможности – определение координат (фактически значения измерений) для записей таблицы, а также определение записей, имеющих конкретные координаты (значения измерений). Рассмотрим каким образом можно реализовать эти возможности.
Для хранения гиперкуба проще всего использовать базу данных своего внутреннего формата. Схематически преобразования можно представить следующим образом:
То есть вместо одной таблицы мы получили нормализованную базу данных. Вообще–то нормализация снижает скорость работы системы, – могут сказать специалисты по базам данных, и в этом они будут безусловно правы, в случае когда нам надо получить значения для элементов словарей (в нашем случае значения измерений). Но все дело в том, что нам эти значения на этапе построения среза вообще не нужны. Как уже было сказано выше, нас интересуют только координаты в нашем гиперкубе, поэтому определим координаты для значений измерений. Самым простым будет перенумеровать значения элементов. Для того, чтобы в пределах одного измерения нумерация была однозначной, предварительно отсортируем списки значений измерений (словари, выражаясь терминами БД) в алфавитном порядке. Кроме того, перенумеруем и факты, причем факты преагрегированные. Получим следующую схему:
Теперь осталось только связать элементы разных таблиц между собой. В теории реляционных баз данных это осуществляется при помощи специальных промежуточных таблиц. Нам достаточно каждой записи в таблицах измерений поставить в соответствие список, элементами которого будут номера фактов, при формировании которых использовались эти измерения (то есть определить все факты, имеющие одинаковое значение координаты, описываемой этим измерением). Для фактов соответственно каждой записи поставим в соответствие значения координат, по которым она расположена в гиперкубе. В дальнейшем везде под координатами записи в гиперкубе будут пониматься номера соответствующих записей в таблицах значений измерений. Тогда для нашего гипотетического примера получим следующий набор, определяющий внутреннее представление гиперкуба:
Такое будет у нас внутреннее представление гиперкуба. Так как мы делаем его не для реляционной базы данных, то в качестве полей связи значений измерений используются просто поля переменной длины (в РБД такое сделать мы бы не смогли, так как там количество колонок таблицы определено заранее).
Реализация гиперкуба
Можно было бы попытаться использовать для реализации гиперкуба набор временных таблиц, но этот метод обеспечит слишком низкое быстродействие, поэтому будем использовать свои структуры хранения данных.
Для реализации гиперкуба нам необходимо использовать структуры данных, которые обеспечат максимальное быстродействие и минимальные расходы оперативной памяти. Очевидно, что основными у нас будут структуры для хранения словарей и таблицы фактов. Рассмотрим задачи, которые должен выполнять словарь с максимальной скоростью:
• проверка наличия элемента в словаре;
• добавление элемента в словарь;
• поиск номеров записей, имеющих конкретное значение координаты;
• поиск координаты по значению измерения;
• поиск значения измерения по его координате.
Для реализации этих требований можно использовать различные типы и структуры данных. Например, можно использовать массивы структур. В реальном случае к этим массивам необходимы дополнительные механизмы индексации, которые позволят повысить скорость загрузки данных и получения информации.
Для оптимизации работы гиперкуба необходимо определить то, какие задачи необходимо решать в первоочередном порядке, и по каким критериям нам надо добиваться повышения качества работы. Главным для нас является повышение скорости работы программы, при этом желательно, чтобы требовался не очень большой объем оперативной памяти. Повышение быстродействия возможно за счет введения дополнительных механизмов доступа к данным, например, введение индексирования. К сожалению, это повышает накладные расходы оперативной памяти.
Построение срезов куба.
Итак, в мы описали способ хранения данных в виде гиперкуба. Он позволяет сформировать набор точек в многомерном пространстве на основе информации, находящейся в хранилище данных. Для того, чтобы человек мог иметь возможность работы с этими данными, их необходимо представить в виде, удобном для обработки. При этом в качестве основных видов представления данных используются сводная таблица и графики. Причем оба этих способа фактически представляют собой проекции гиперкуба. Для того, чтобы обеспечить максимальную эффективность при построения представлений, будем отталкиваться от того, что представляют собой эти проекции.
Начнем рассмотрение со сводной таблицы, как с наиболее важной для анализа данных. Можно выделить три части, из которых состоит сводная таблица: это заголовки строк, заголовки столбцов и собственно таблица агрегированных значений фактов. Самым простым способом представления таблицы фактов будет использование двумерного массива, размерность которого можно определить, построив заголовки. К сожалению, самый простой способ будет самым неэффективным, потому что таблица будет сильно разреженной, и память будет расходоваться крайне неэффективно, в результате чего можно будет строить только очень малые кубы, так как иначе памяти может не хватить.
Работа с OLAP-кубом
Кросс-таблица
Кросс-таблица представляет собой размещение многомерных данных на плоскости в виде сводной таблицы. Следовательно, прежде чем строить эту таблицу, необходимо указать измерения и факты. Например, измерения – это Месяц, Наименование товара, Группа товара, а факт – Количество проданного товара.
Размещение измерений
Измерения могут быть размещены в строках и столбцах кросс-таблицы. В мастере настройки отображения изначально весь список выбранных измерений отображается в окне «Доступные измерения». Нажимая кнопки «>« и «>>« справа и снизу от этого окна можно размещать выбранные измерения в строках и столбцах таблицы. Здесь можно так же выбрать, какие факты отображать в кросс-таблице на пересечении измерений и какую функцию применять при их агрегации (объединении).
Измерения в кросс-таблице изображаются специальными полями. Синие поля показывают измерения, участвующие в построении таблицы. Зелеными полями отображаются скрытые измерения, не участвующие в построении таблицы. Есть возможность перестраивать таблицу с помощью мыши «на лету». Сделать это можно, если перетаскивать поля с заголовками измерений.
Кросс-диаграмма обладает интересной возможностью – построением тренда. Во многих случаях тренд позволяет увидеть тенденции, которые обычно скрыты из-за большого разброса значений, наличия отклонений, не типичных для отображаемого процесса и т.д. Линия тренда получается путем сглаживания рядов данных, на основе которых построена кросс-диаграмма, посредством выделения и отсечения больших отклонений, которые в большинстве случаев мешают оценить общий характер процесса.