Современные технологии обработки данных

Big Data

Википедия по состоянию на середину 2018 года давала следующее определение термину Big Data: «Большие данные (Big Data) — обозначение структурированных и неструктурированных данных огромных объёмов и значительного многообразия, эффективно обрабатываемых горизонтально масштабируемыми программными инструментами, появившимися в конце 2000-х годов и альтернативных традиционным системам управления базами данных и решениям класса Business Intelligence».

Как видим, в этом определении присутствуют такие неопределенные термины, как «огромных», «значительного», «эффективно» и «альтернативных». Даже само название весьма субъективно. Например, 4 Терабайта (емкость современного внешнего жесткого диска для ноутбука) — это уже большие данные или еще нет? К этому определению Википедия добавляет следующее: «в широком смысле о “больших данных” говорят как о социально-экономическом феномене, связанном с появлением технологических возможностей анализировать огромные массивы данных, в некоторых проблемных областях — весь мировой объём данных, и вытекающих из этого трансформационных последствий».

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

  1. Обрабатывать большие по сравнению со «стандартными» сценариями объемы данных;

  2. Уметь работать с быстро поступающими данными в очень больших объемах. То есть данных не просто много, а их постоянно становится все больше и больше;

  3. Уметь работать со структурированными и слабо структурированными данными параллельно и в разных аспектах».

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

Определяющими характеристиками для больших данных являются, помимо их физического объёма, и другие, подчеркивающие сложность задачи обработки и анализа этих данных. Набор признаков VVV (volume, velocity, variety — физический объём, скорость прироста данных и необходимости их быстрой обработки, возможность одновременно обрабатывать данные различных типов) был выработан компанией Meta Group в 2001 году с целью указать на равную значимость управления данными по всем трём аспектам.

В дальнейшем появились интерпретации с четырьмя V (добавлялась veracity — достоверность), пятью V (viability — жизнеспособность и value — ценность), семью V (variability — переменчивость и visualization — визуализация). Но компания IDC, например, интерпретирует именно четвёртое V как value (ценность), подчеркивая экономическую целесообразность обработки больших объёмов данных в соответствующих условиях.

Исходя из вышеприведенных определений, основные принципы работы с большими данными таковы:

Горизонтальная масштабируемость

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

Отказоустойчивость

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

Локальность данных

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

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

Изначально в совокупность подходов и технологий включались средства массово-параллельной обработки неопределённо структурированных данных, такие как СУБД NoSQL, алгоритмы MapReduce и средства проекта Hadoop. В дальнейшем к технологиям больших данных стали относить и другие решения, обеспечивающие сходные по характеристикам возможности по обработке сверхбольших массивов данных, а также некоторые аппаратные средства.

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

NoSQL (от англ. Not Only SQL, не только SQL) — общий термин для различных нереляционных баз данных и хранилищ, не обозначает какую-либо одну конкретную технологию или продукт. Обычные реляционные базы данных хорошо подходят для достаточно быстрых и однотипных запросов, а на сложных и гибко построенных запросах, характерных для больших данных, нагрузка превышает разумные пределы и использование СУБД становится неэффективным.

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

R — язык программирования для статистической обработки данных и работы с графикой. Широко используется для анализа данных и фактически стал стандартом для статистических программ.

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

  • Методы класса Data Mining (добыча данных, интеллектуальный анализ данных, глубинный анализ данных) — совокупность методов обнаружения в данных ранее неизвестных, нетривиальных, практически полезных знаний, необходимых для принятия решений. К таким методам, в частности, относятся обучение ассоциативным правилам (association rule learning), классификация (разбиение на категории), кластерный анализ, регрессионный анализ, обнаружение и анализ отклонений и др.

  • Краудсорсинг — классификация и обогащение данных силами широкого, неопределённого круга лиц, выполняющих эту работу без вступления в трудовые отношения

  • Смешение и интеграция данных (data fusion and integration) — набор техник, позволяющих интегрировать разнородные данные из разнообразных источников с целью проведения глубинного анализа (например, цифровая обработка сигналов, обработка естественного языка, включая тональный анализ, и др.)

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

  • Искусственные нейронные сети, сетевой анализ, оптимизация, в том числе генетические алгоритмы (genetic algorithm — эвристические алгоритмы поиска, используемые для решения задач оптимизации и моделирования путём случайного подбора, комбинирования и вариации искомых параметров с использованием механизмов, аналогичных естественному отбору в природе)

  • Распознавание образов

  • Прогнозная аналитика

  • Имитационное моделирование (simulation) — метод, позволяющий строить модели, описывающие процессы так, как они проходили бы в действительности. Имитационное моделирование можно рассматривать как разновидность экспериментальных испытаний

  • Пространственный анализ (spatial analysis) — класс методов, использующих топологическую, геометрическую и географическую информацию, извлекаемую из данных

  • Статистический анализ — анализ временных рядов, A/B-тестирование (A/B testing, split testing — метод маркетингового исследования; при его использовании контрольная группа элементов сравнивается с набором тестовых групп, в которых один или несколько показателей были изменены, для того чтобы выяснить, какие из изменений улучшают целевой показатель)

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

Data Mining

Интеллектуальный анализ данных (добывание данных, Data Mining) — процесс аналитического исследования больших массивов необработанных данных (обычно экономического характера) в целях выявления скрытых закономерностей и систематических взаимосвязей между переменными, которые затем можно применить к новым совокупностям данных.

В общем случае интеллектуальный анализ данных (ИАД) состоит из трех стадий:

  1. выявление закономерностей (свободный поиск);

  2. использование выявленных закономерностей для предсказания неизвестных значений (прогностическое моделирование);

  3. анализ исключений, предназначенный для выявления и толкования аномалий в найденных закономерностях.

Все методы интеллектуальном анализа данных подразделяются на два больших класса по принципу работы с исходными данными:

  1. Группа методов, опирающихся на известные закономерности, так называемые методы рассуждении на основе анализа прецедентов. Данные здесь могут храниться в явном детализированном виде и непосредственно использоваться для прогностического моделирования и (или) анализа исключений. Главная проблема этой группы методов — затрудненность использования при больших объемах данных, хотя именно при анализе больших хранилищ данных методы ИАД приносят наибольшую пользу.

  2. Группа методов, основанных на выявлении закономерностей в процессе свободного поиска. Здесь информация вначале извлекается из первичных данных и преобразуется в некоторые формальные конструкции (их вид зависит от конкретного метода), т.е. закономерности в данных выявляются в процессе свободного поиска, что отсутствует в первой группе методов. Для прогностическом моделирования и анализа исключений используются результаты этой стадии, которые гораздо более компактны, чем сами массивы исходных данных. При этом полученные конструкции могут быть либо «прозрачными» (интерпретируемыми), либо «черными ящиками» (нетрактуемыми).

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

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

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

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

Рассмотрим свойства обнаруживаемых знаний.

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

Знания должны быть нетривиальны. Результаты анализа должны отражать неочевидные, неожиданные закономерности в данных, составляющие так называемые скрытые знания. Результаты, которые могли бы быть получены более простыми способами (например, визуальным просмотром), не оправдывают привлечение мощных методов Data Mining.

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

Знания должны быть доступны для понимания человеку. Найденные закономерности должны быть логически объяснимы, в противном случае существует вероятность, что они являются случайными. Кроме того, обнаруженные знания должны быть представлены в понятном для человека виде.

В Data Mining для представления полученных знаний служат модели. Виды моделей зависят от методов их создания. Наиболее распространенными являются: правила, деревья решений, кластеры и математические функции.

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

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

Классификация (Classification). Задача разбиения множества объектов или наблюдений на априорно заданные группы, называемые классами, внутри каждой из которых они предполагаются похожими друг на друга, имеющими примерно одинаковые свойства и признаки. При этом решение получается на основе анализа значений атрибутов (признаков). Классификация является одной из важнейших задач DataMining. Она применяется вмаркетинге при оценке кредитоспособности заемщиков, определении лояльности клиентов,распознавании образов, медицинской диагностике и многих других приложениях. Если аналитику известны свойства объектов каждого класса, то когда новое наблюдение относится к определенному классу, данные свойства автоматически распространяются и на него. Если число классов ограничено двумя, то имеет место бинарная классификация, к которой могут быть сведены многие более сложные задачи. Например, вместо определения таких степеней кредитного риска, как «Высокий», «Средний» или «Низкий», можно использовать всего две — «Выдать» или «Отказать». Для классификации в Data Mining используется множество различных моделей: нейронные сети, деревья решений, машины опорных векторов, метод k-ближайших соседей, алгоритмы покрытия и др., при построении которых применяется обучение с учителем, когда выходная переменная (метка класса) задана для каждого наблюдения. Формально классификация производится на основе разбиения пространства признаков на области, в пределах каждой из которых многомерные векторы рассматриваются как идентичные. Иными словами, если объект попал в область пространства, ассоциированную с определенным классом, он к нему и относится.

Кластеризация (Clustering). Кластеризация является логическим продолжением идеи классификации. Это задача более сложная, особенность кластеризации заключается в том, что классы объектов изначально не предопределены. Результатом кластеризации является разбиение объектов на группы. Пример метода решения задачи кластеризации: обучение “без учителя” особого вида нейронных сетей — самоорганизующихся карт Кохонена.

Ассоциация (Associations). В ходе решения задачи поиска ассоциативных правил отыскиваются закономерности между связанными событиями в наборе данных. Отличие ассоциации от двух предыдущих задач DataMining: поиск закономерностей осуществляется не на основе свойств анализируемого объекта, а связи между несколькими событиями, которые происходят одновременно. Наиболее известный алгоритм решения задачи поиска ассоциативных правил – алгоритм Apriori.

Последовательность позволяет найти временные закономерности между транзакциями. Задача последовательности подобна ассоциации, но ее целью является установление закономерностей не между одновременно наступающими событиями, а между событиями, связанными во времени (т.е. происходящими с некоторым определенным интервалом во времени). Другими словами, последовательность определяется высокой вероятностью цепочки связанных во времени событий. Фактически, ассоциация является частным случаем последовательности с временным лагом, равным нулю. Эту задачу DataMining также называют задачей нахождения последовательных шаблонов (sequentialpattern). Правило последовательности: после события X через определенное время произойдет событие Y.

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

Определение отклонений или выбросов (DeviationDetection), анализ отклонений или выбросов. Цель решения данной задачи — обнаружение и анализ данных, наиболее отличающихся от общего множества данных, выявление так называемых нехарактерных шаблонов.

Оценивание (Estimation). Задача оценивания сводится к предсказанию непрерывных значений признака.

Анализ связей (LinkAnalysis). Задача нахождения зависимостей в наборе данных.

Визуализация (Visualization, GraphMining). В результате визуализации создается графический образ анализируемых данных. Для решения задачи визуализации используются графические методы, показывающие наличие закономерностей в данных. Пример методов визуализации — представление данных в 2-D и 3-D измерениях.

Подведение итогов (Summarization). Задача, цель которой — описание конкретных групп объектов из анализируемого набора данных.

Сферы применения DataMining

Следует отметить, что на сегодняшний день наибольшее распространение технология DataMining получила при решении бизнес-задач. Возможно, причина в том, что именно в этом направлении отдача от использования инструментов DataMining может составлять, по некоторым источникам, до 1000% и затраты на ее внедрение могут достаточно быстро окупиться. Мы будем рассматривать четыре основные сферы применения технологии DataMining подробно: наука, бизнес, исследования для правительства и Web-направление.

Применение DataMining для решения бизнес-задач. Основные направления: банковское дело, финансы, страхование, CRM, производство, телекоммуникации, электронная коммерция, маркетинг, фондовый рынок и другие.

Применение DataMining для решения задач государственного уровня. Основные направления: поиск лиц, уклоняющихся от налогов; средства в борьбе с терроризмом.

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

Применение DataMining для решения Web-задач. Основные направления: поисковые машины (search engines), счетчики и другие.

Электронная коммерция. В сфере электронной коммерции DataMining применяется для формирования рекомендательных систем и решения задач классификации посетителей Web-сайтов. Такая классификация позволяет компаниям выявлять определенные группы клиентов и проводить маркетинговую политику в соответствии с обнаруженными интересами и потребностями клиентов. Технология DataMining для электронной коммерции тесно связана с технологией WebMining.

Нейронные сети

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

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

Нейронные сети могут быть синхронные и асинхронные.В синхронных нейронных сетях в каждый момент времени свое состояние меняет лишь один нейрон. В асинхронных — состояние меняется сразу у целой группы нейронов, как правило, у всего слоя. Можно выделить две базовые архитектуры — слоистые и полносвязные сети.Ключевым в слоистых сетях является понятие слоя. Слой — один или несколько нейронов, на входы которых подается один и тот же общий сигнал. Слоистые нейронные сети - нейронные сети, в которых нейроны разбиты на отдельные группы (слои) так, что обработка информации осуществляется послойно. В слоистых сетях нейроны i-го слоя получают входные сигналы, преобразуют их и через точки ветвления передают нейронам (i+1) слоя. И так до k-го слоя, который выдает выходные сигналы для интерпретатора и пользователя. Число нейронов в каждом слое не связано с количеством нейронов в других слоях, может быть произвольным. В рамках одного слоя данные обрабатываются параллельно,а в масштабах всей сети обработка ведется последовательно — от слоя к слою. К слоистым нейронным сетям относятся, например, многослойные персептроны, сети радиальных базисных функций, когнитрон, некогнитрон, сети ассоциативной памяти. Однако сигнал не всегда подается на все нейроны слоя. В когнитроне, например, каждый нейрон текущего слоя получает сигналы только от близких ему нейронов предыдущего слоя. Слоистые сети, в свою очередь, могут быть однослойными и многослойными.

Однослойная сеть — сеть, состоящая из одного слоя.

Многослойная сеть — сеть, имеющая несколько слоев.

В многослойной сети первый слой называется входным, последующие — внутренними или скрытыми, последний слой — выходным. Таким образом, промежуточные слои — это все слои в многослойной нейронной сети, кроме входного и выходного. Входной слой сети реализует связь с входными данными, выходной — с выходными. Таким образом, нейроны могут быть входными, выходными и скрытыми. Входной слой организован из входных нейронов (inputneuron), которые получают данные и распространяют их на входы нейронов скрытого слоя сети. Скрытый нейрон (hiddenneuron) — это нейрон, находящийся в скрытом слое нейронной сети. Выходные нейроны (outputneuron), из которых организован выходной слой сети, выдает результаты работы нейронной сети.

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

Перед использованием нейронной сети ее необходимо обучить. Процесс обучения нейронной сети заключается в подстройке ее внутренних параметров под конкретную задачу. Алгоритм работы нейронной сети является итеративным, его шаги называют эпохами или циклами. Эпоха — одна итерация в процессе обучения, включающая предъявление всех примеров из обучающего множества и, возможно, проверку качества обучения на контрольном множестве. Процесс обучения осуществляется на обучающей выборке. Обучающая выборка включает входные значения и соответствующие им выходные значения набора данных. В ходе обучения нейронная сеть находит некие зависимости выходных полей от входных. Таким образом, перед нами ставится вопрос — какие входные поля (признаки) нам необходимо использовать. Первоначально выбор осуществляется эвристически, далее количество входов может быть изменено.

Сложность может вызвать вопрос о количестве наблюдений в наборе данных. И хотя существуют некие правила, описывающие связь между необходимым количеством наблюдений и размером сети, их верность не доказана. Количество необходимых наблюдений зависит от сложности решаемой задачи. При увеличении количества признаков количество наблюдений возрастает нелинейно, эта проблема носит название “проклятие размерности”. При недостаточном количестве данных рекомендуется использовать линейную модель.

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

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

При обучении нейронных сетей часто возникает серьезная трудность, называемая проблемой переобучения (overfitting). Переобучение, или чрезмерно близкая подгонка — излишне точное соответствие нейронной сети конкретному набору обучающих примеров, при котором сеть теряет способность к обобщению. Переобучение возникает в случае слишком долгого обучения, недостаточного числа обучающих примеров или переусложненной структуры нейронной сети. Переобучение связано с тем, что выбор обучающего (тренировочного) множества является случайным. С первых шагов обучения происходит уменьшение ошибки. На последующих шагах с целью уменьшения ошибки (целевой функции) параметрыподстраиваются под особенности обучающего множества. Однако при этом происходит”подстройка” не под общие закономерности ряда, а под особенности его части — обучающего подмножества. При этом точность прогноза уменьшается. Один из вариантов борьбы с переобучением сети — деление обучающей выборки на два множества (обучающее и тестовое). На обучающем множестве происходит обучение нейронной сети. На тестовом множестве осуществляется проверкапостроенной модели. Эти множества не должны пересекаться. С каждым шагом параметры модели изменяются, однако постоянное уменьшение значения целевой функции происходит именно на обучающем множестве. При разбиении множества на два мы можем наблюдать изменение ошибки прогноза на тестовом множестве параллельно с наблюдениями над обучающим множеством. Какое-то количество шагов ошибки прогноза уменьшается на обоих множествах. Однако на определенном шаге ошибка на тестовом множестве начинает возрастать, при этом ошибка на обучающем множестве продолжает уменьшаться. Этот момент считается началом переобучения.