Изменения

Перейти к: навигация, поиск

Обучение на больших данных

8343 байта добавлено, 16:54, 23 января 2021
Применение методов машинного обучения для построения "озера" данных
{{В разработке}} '''Обучение на больших данных''' {{---}} раздел машинного обучения, специализирующийся на построении моделей, обрабатывающих большие объёмы данных, т. н. Также встречаются термины "big data" или "большие данные".
== Понятие больших данных ==
=== Признаки больших данных. Правило VVV ===
Чтобы массив информации обозначить приставкой «big» он должен обладать следующими признаками<ref name="vvv">[https://ru.wikipedia.org/wiki/%D0%91%D0%BE%D0%BB%D1%8C%D1%88%D0%B8%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5#VVV Правило VVV]</ref>:
* Volume (Объем) {{---}} данные измеряются по физической величине и занимаемому пространству на цифровом носителе. К «big» относят массивы свыше 150 Гб в сутки;
* Velocity (Скорость, обновление) {{---}} информация регулярно обновляется и для обработки в реальном времени необходимы интеллектуальные технологии <ref name="inttech">[https://studme.org/200941/informatika/intellektualnye_tehnologii_primenenie интеллектуальные Интеллектуальные технологии]</ref> в рамках больших данных;
* Variety (Разнообразие) {{---}} информация в массивах может иметь неоднородные форматы, быть структурированной частично, полностью и скапливаться бессистемно. Например, социальные сети используют большие данные в виде текстов, видео, аудио, финансовых транзакций, картинок и прочего.
=== Порядок работы с большими данными ===
Чтобы эффективно обрабатывать и анализировать большие данные, существуют такие инструменты как "аналитические модели"<ref name="analiticsmodels">[https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C Математические модели в форме аналитических моделей]</ref>. Их решения ищутся в замкнутом виде, в виде функциональных зависимостей. Такие модели способны строить гипотезы на основе больших данных, искать в них зависимости и закономерности {{- --}} всю самую полезную для большинства бизнес-задач информацию. Кроме того, важна хорошая [[Интерпретируемые модели|интерпретируемость]] построенной модели, так как это позволяет упростить её анализ без повторного её построения, что в условиях больших данных при работе с большими данными крайне важно. Для этого большие данные проходят через несколько этапов:
1. [[Автоматическое машинное обучение|Чистка данных]] (англ. data cleaning) {{---}} поиск и исправление ошибок в первичном наборе информации, например, ошибки ручного ввода (опечатки), или некорректные значения с измерительных приборов из-за кратковременных сбоев и т.д.;
2. [[Уменьшение размерности|Работа с признаками]] (англ. feature engineering) {{---}} генерация переменных для построения аналитических моделей;
3. [[Модель алгоритма и её выбор|Построение]] и обучение аналитической модели (англ. model selection) для предсказания целевой (таргетной) переменной. Так проверяются гипотезы о зависимости таргетной переменной от предикторов;.
На практике это помогает решить множество задач. Например, проанализировать, как связаны отказы оборудования с условиями подачи напряжения, или определить вероятность своевременного возврата кредита частным заемщиком.
=== Методы обработки больших данных ===
К основным методам сбора и анализа больших данных относят следующие:
* Глубинный глубинный анализ или "добыча" данных (англ. data mining<ref name="datamining">[https://ru.wikipedia.org/wiki/Data_mining Data Mining]</ref>) – обучение ассоциативным правилам, классификация, кластерный и регрессионный анализ;* краудсорсинг — категоризация и обогащение данных народными силами, т.е. с добровольной помощью сторонних лиц;
* смешение и интеграция разнородных данных, таких как, цифровая обработка сигналов и обработка естественного языка;
* машинное обучение, включая искусственные нейронные сети, сетевой анализ, методы оптимизации и генетические алгоритмы;
* В связи с большим потоком данных, конечный их набор постоянно изменяется, поэтому необходимо анализировать данные особым образом. Так, чтобы своевременно актуализировать информацию о них;
* При возникновении ошибок в модели приходится тратить очень много ресурсов на их поиск и устранение, так как объёмы данных очень велики;
* Возникает проблема разнородности данных. Необходимо уметь обрабатывать данные различных форматов в рамках одной системы. Например, описания книг, фильмов и музыки; Также стоит отметить, что в связи с большой популярностью "больших данных", эта сфера очень быстро развивается, постоянно появляются всё новые технологии и инструменты для работы. Для развивающегося бизнеса внедрение систем по работе с большими данными приводит к дополнительным материальным затратам. А от специалистов в этой сфере требуется быстро овладевать новыми навыками, что также может вызвать затруднения. === Применение машинного обучения к большим данным. Поиск в больших данных ===При работе с большими данными иногда возникает ситуация, когда пользователю нужно найти какие-то конкретные данные. Возникает задача эффективного поиска информации в больших данных. В силу большого объёма всех данных большинство известных методов поиска будут работать неэффективно. Например, '''''поиск перебором'''''<ref ="bruteforcesearch">[https://en.wikipedia.org/wiki/Brute-force_search#:~:text=In%20computer%20science%2C%20brute%2Dforce,candidate%20satisfies%20the%20problem's%20statement. Поиск перебором]</ref> (англ. ''exhaustive search'') {{---}} широко распространенный алгоритм не подходит для больших данных вследствие плохой оптимизации по времени исполнения и используемому месту. Также '''не подходят''' алгоритмы '''''поиска с ориентиром (индексирование)''''' (англ. ''beacon guided searching, BGS'') и [[Метрический классификатор и метод ближайших соседей|'''''метод "ближайших соседей"''''']] (англ. ''nearest neighbour search''). В случае первого на больших данных хранение индексов этих данных становится проблемой, так как данных слишком много, а в случае со вторым алгоритмом будут сильно мешать различные шумы и отклонения, коих в больших данных зачастую очень много.
Также стоит отметить, что Здесь на помощь приходят [https://ru.wikipedia.org/wiki/%D0%93%D0%B5%D0%BD%D0%B5%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC генетические алгоритмы]. Процедура поиска в связи с большой популярностью "больших данных"производится довольно часто, эта сфера очень следовательно такие алгоритмы довольно быстро развиваетсяприспособятся к поиску наиболее часто используемых данных. Также к плюсам генетических алгоритмов можно отнести возможность кастомизации и устойчивость к шумам, постоянно появляются всё новые технологии и инструменты а также хорошую масштабируемость для работызадач с более высокой размерностью. Для бизнеса Всё это приводит к дополнительным материальным затратамкак раз то, т. к. крайне важно "идти что нужно в ногу со временем". Для специалистов по "большим данным" это так же приводит к дополнительным трудностям, т. к. необходимо крайне быстро овладевать этими новыми технологиямислучае больших данных.
=== Применение машинного обучения к большим данным ===В условиях Кроме того, при поиске в больших данных иногда возникает ситуацияможет помочь [[Кластеризация|кластеризация]] этих данных. Таким образом они будут разбиты на группы "похожести", когда пользователю нужно найти какие-то конкретные данныев каждой группе обладают сходными признаками, по которым можно существенно снизить круг дальнейшего поиска, что существенно ускоряет процесс поиска. Встаёт задача информационного поиска С той же целью может применятся и оценка '''''важности признака при перестановке'''''<ref name="infosearchpfi">[https://rudocs.wikipediamicrosoft.orgcom/ru-ru/dotnet/machine-learning/wikihow-to-guides/%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA Информационный поискexplain-machine-learning-model-permutation-feature-importance-ml-net#train-the-model Permutation Feature Importance]</ref>(англ. ''permutation feature importance, PFI''). Этот приём позволяет выделить наиболее значимые признаки объектов. В силу большого объёма всех данных будет неэффективно перебирать их все Заключается он в поисках тоготом, что нужнопосле первоначального обучения некоторой модели происходит случайная перестановка значений признаков у объектов. В данном случае можно применить алгоритмы машинного обученияЗа итерацию берётся некоторый признак, который есть у всех объектов, которые занимаются классификацией данных и их [[Ранжирование|ранжированием]]происходит случайная перестановка значений этого признака между объектами. При этом оставшиеся признаки не изменяются.Поиск в размеченных Далее происходит повторный запуск модели и отсортированных данных происходит значительно быстреепроизводится расчёт отклонений её результатов от первичных. Такая процедура выполняется для всех признаков, чтобы можно было выделить наиболее значимые. А Это может существенно помочь в условиях больших данных это очень важнозадаче поиска, когда можно снизить количество рассматриваемых признаков, принимая во внимание только наиболее значимые. Например, любая поисковая система при любом запросе должна давать результат за одно и то же времясуществует некоторый набор данных, однако объём тех данныхсодержащий информацию о продаваемой недвижимости. Каждый объект недвижимости имеет множество признаков: местоположение относительно объектов инфраструктуры, которые ей приходится проанализировать огроменуровень благополучия данного района города, поэтому эффективный поиск в больших данных {{---}} очень важная задачаи многие другие. В этом случае при помощи приёма PFI можно рассчитать, а машинное обучение сильно помогает в её решениикакие из этих признаков имеют большее влияние на цену объекта недвижимости.
== Обработка разнородных данных в рамках одной системы ==
=== "Озеро" данных ===
При работе с большими данными часто возникает ситуация, когда одна и та же модель должна уметь обрабатывать данные различного формата. Это позволяет строить более точные аналитические модели точнее и получать более достоверную информацию о данных в дальнейшем. Также отметим, что в данной ситуации данные берутся из множества '''различных''' источников, которые и определяют формат получаемых данных.
Рассмотрим модель распределенного хранения разнородных данных в концепции '''''«озеро данных»'''''<ref name="datalake">[https://en.wikipedia.org/wiki/Data_lake Озеро данных]</ref>.
::<tex>S=\langle\{DT\}_{i=1}^{n_{st}},\{SS\}_{j=1}^{m_{ss}},\{E\}_{k=1}^{p_e},IS,DS\rangle</tex>:
Данная модель позволяет хранить как сырые разнородные данные, так и структурированные данные в соответствии с предопределенной схемой. Такой результат достигается наличием шаблонов объектов и шаблонов параметров объектов. Также это позволяет снизить временные затраты на доступ к данным.
[[Файл:Schema.PNG|700px|thumb|right|Рисунок 1: Модель === Схема модели хранения разнородных данных]]===
[[Файл:Schema.PNG|700px|thumb|right|Рисунок 1: Модель хранения разнородных данных<ref name=== Схема модели "datalake_pic">[http://www.vstu.ru/upload/iblock/ed2/ed26c52e2ff99fb5b39fbaf37717a96c.pdf Модель хранения разнородных данных ===- схема озера данных]</ref>]]
Рассмотрим схему модели, изображённую на рисунке 1:
* '''Parameter Object template''' {{---}} шаблон параметранекоторого объекта <tex>O</tex>. Каждый объект может иметь множество источников данных <tex>M_{ds}</tex>. Структуру объекта можно представить следующим образом: <tex>O=\langle ds_1, ds_2, хранимого в источнике данных;\dots, ds_m \rangle</tex>.
* '''Data source template''' {{---}} шаблон источника данных. Каждый источник данных может иметь множество параметров с различными типами данных <tex>M_p</tex>. Структуру источника данных можно представить следующим образом: <tex>ds=\langle p_1, p_2, \dots, p_k \rangle</tex>;
* '''Object Parameter template''' {{---}} шаблон некоторого объекта <tex>O</tex>. Каждый объект может иметь множество источников параметра, хранимого в источнике данных <tex>M_{ds}</tex>. Структуру объекта можно представить следующим образом: <tex>O=\langle ds_1, ds_2, \dots, ds_m \rangle</tex>.;
Чтобы реализовать такую модель хранения, необходимо выполнить следующие действия:
=== Применение методов машинного обучения для построения "озера" данных ===
Представленная выше модель хорошо описывает схему хранения разнородных данных путём создания некоторого шаблона, который мог бы описывать все эти данные. Построение такого шаблона может быть очень трудоёмкой задачей, так как данных много и их форматов тоже может быть много. Здесь Возникает задача '''''метапрофилирования''''' данных. Этот процесс направлен на помощь структуризацию разносортных данных и приходит машинное обучениеразличных метаданных. Нейронные сетиБез этого большинство действий с данными будут попросту невозможны – будь то построение запросов для СУБД, очистка данных, при правильном их использованииклассификация и кластеризация. Кроме того, когда объёмы данных слишком велики, могут помочь в построении такого шаблонаБД может быть огромное количество таблиц, обучаясь на разнородных данныхчьи метаданные могут сильно различаться. В таких условиях получение полной информации даже по одному объекту будет практически невыполнимой задачей. Такие сети были названы  '''''метапрофилировочные нейронные сети''Мета-профайл''' (англ. ''metametadata-profile neural network''){{---}} особая структура данных, призванная собрать воедино различную информацию о конкретном объекте <tex>O<ref name/tex>. Сюда так же входят и различные представления этого объекта. Например, музыкальную композицию можно идентифицировать по-разному, от названия и автора до жанра и года создания: ::<tex>MP="mnn"(Name, Prop)</tex>* <tex>[https:Name</tex> {{---}} уникальное имя мета-профайла, <tex>Name \in Namespace</arxiv.orgtex>, где <tex>Namespace</pdftex> {{---}} все возможные имена объектов;* <tex>Prop</2008tex> {{---}} множество атрибутов мета-профайла <tex>\{p_1, \dots, p_n\} | \forall p_i \in Prop: i=\{1, \dots, n\}</tex>.12258.pdf Learning to Profile<tex>p_i=(PName_i, PType_i, P_i)</tex>: User Meta** <tex>PName_i</tex> {{---}} уникальное имя атрибута, <tex>PName_i \in PNamespace</tex>, где <tex>PNamespace</tex> {{--Profile Network-}} все возможные имена атрибутов.for Few** <tex>PType_i</tex> {{--Shot Learning - Hao Gong}} простой тип данных, Qifang Zhao<tex>PType_i \in Plaintypes</tex>, Tianyu Liгде <tex>Plaintypes</tex> {{---}} все возможные типы данных. Важно, Derek Choчто типы являются простыми, DuyKhuong Nguyen - Rakuten Institute of Technologyто есть числами, 2020]символами или строками.** <tex>P_i : 0 < P_i < 1</tex> {{---}} вероятность принадлежности атрибута <tex>p_i</tex> некоторому случайно отобранному представлению <tex>O</reftex>.
Предположим, что у нас есть некоторые данные о пользователях большой сервисной системы мирового масштабаПостроение этой структуры можно произвести различными методами машинного обучения. О каждом из пользователей постоянно собираются самые разные данныеСюда входят [[Логистическая регрессия|логистическая регрессия]], на основе которых в будущем им будут выдаваться рекомендации и предложения.Нейронная сеть[[Байесовская классификация|наивная байесовская классификация]], которую необходимо построить, состоит из нескольких других нейронных сетей[[Глубокое обучение|глубокое обучение]]. Каждая из них обрабатывает свой формат данныхФактически, следовательно выбор вида сети здесь стоит за разработчиком. В результате задача классификации, в которой мы получаем некий новый объектдолжны понять, признаки которого будут зависеть от обработанных данных. Он и будет шаблоном объектакакие атрибуты относятся к описываемому объекту, который будет храниться в "озере" данныха какие нет.
ТакПредположим, напримерчто у нас имеется некоторая выборка данных из одного источника. В данной выборке для каждого объекта имеется лишь одно представление, можно анализировать предпочтения людей касательно жанров искусствадостаточно полное для однозначной его идентификации. Также имеется выборка данных, относящихся к объектам совсем другого типа, но имеющих похожие атрибуты, её размер должен быть примерно таким же, как и у предыдущей, чтобы убедиться в том, что данные для обучения сбалансированы. Это необходимо, чтобы отметать неверные варианты при обучении. Опираясь на эти выборки, анализируяпроисходит обучение на остальных данных (различные источники данных), какую музыку они слушаютпредставленных в виде векторов, какие книги читают содержащих в себе имена различных атрибутов объекта и какие фильмы смотрятзначения этих атрибутов. На основе вероятностей, имен, типов атрибутов принимается решение, отнести их к объекту или нет. Таким образом, шаблон объекта обрастает новыми атрибутами, по которым его можно идентифицировать.
== Работа с комплексом Apache Spark для обучения на больших данных ==
Многие компании на сегодняшний день уже столкнулись с необходимостью обработки больших массивов данных. Для этой цели они начали использовать проекты экосистемы [https://hadoop.apache.org/ Apache Hadoop]. Данная экосистема базируется на [https://ru.wikipedia.org/wiki/MapReduce#:~:text=MapReduce%20%E2%80%94%20%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C%20%D1%80%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%91%D0%BD%D0%BD%D1%8B%D1%85%20%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9%2C%20%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F,%D0%BD%D0%B0%D0%B1%D0%BE%D1%80%D0%B0%D0%BC%D0%B8%20%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85%20%D0%B2%20%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D1%8B%D1%85%20%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B0%D1%85. MapReduce], парадигме параллельного программирования, разработанного компанией Google.
Основные достоинства MapReduce:
* Масштабируемостьмасштабируемость;* Устойчивость устойчивость к сбоям;* Простота простота использования.
Но при всех достоинствах данного инструмента, наблюдалась низкая производительность на итеративных алгоритмах (например, алгоритмы машинного обучения). Решение проблемы было найдено в университете Беркли: была разработана модель распределенных вычислений, которая имеет устойчивость к сбоям при пользовании распределенной коллекцией данных (англ. resilient distributed dataset, RDD).
На основе RDD по сей день развивается система [https://spark.apache.org/ Apache Spark], которая обладает сравнительно высокой эффективностью при работе итеративных алгоритмов за счет кэширования результатов в памяти. На основе концепции распределенных коллекций разрабатываются распределенные системы:
* [https://spark.apache.org/docs/1.0.0/sql-programming-guide.html Shark] {{---}} хранилище данных;* [https://spark.apache.org/docs/latest/graphx-programming-guide.html GraphX] {{---}} система обработки графовых данных;* [https://spark.apache.org/docs/latest/streaming-programming-guide.html Spark Streaming] {{---}} система обработки потоковых данных;* [https://spark.apache.org/docs/latest/ml-guide.html Spark MLlib] {{---}} библиотека алгоритмов машинного обучения.
Все из перечисленных систем совместимы со стеком технологий Hadoop.
MLlib {{---}} основная библиотека Spark. Она предоставляет множество служебных программ, полезных для задач машинного обучения:* Классификацияклассификация;* Регрессиярегрессия;* Кластеризациякластеризация;* Моделированиемоделирование;* Сингулярное сингулярное разложение и анализ по методу главных компонент;* Проверка проверка гипотез и статистической выборки.
=== Примеры реализации алгоритмов с использованием Spark MLlib ===
Рассмотрим удобство использования Apache Spark на примере. Задача нашей модели {{---}} предугадать : захочет ли клиент оформить срочный вклад. Для этого воспользуемся [https://www.kaggle.com/rouseguy/bankbalanced| данными из Machine Learning Repository].
Напишем нашу модель на Python. Для начала работы с Apache Spark его необходимо установить, выполнив
<font color = "orange">'''pip''' '''install'''</font> pyspark
== Источники информации ==
* [https://ru.wikipedia.org/wiki/%D0%91%D0%BE%D0%BB%D1%8C%D1%88%D0%B8%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5 Wikipedia {{---}} Большие данные]
* [https://habr.com/ru/company/habr_career/blog/456746/ Блог компании Хабр Карьера {{---}} Большие данные — большая ответственность, большой стресс и большие деньги]
* [https://habr.com/ru/company/productstar/blog/503580/ Блог компании ProductStar {{---}} Что такое «Big Data»?]
* [https://databricks.com/spark/about О системе Apache Spark]
* [https://docs.microsoft.com/ru-ru/azure/hdinsight/spark/apache-spark-creating-ml-pipelines Документация от Microsoft {{---}} Создание конвейера машинного обучения Apache Spark]
* [https://www.researchgate.net/publication/322994594_A_survey_of_different_search_techniques_for_big_data A survey of different search techniques for big data] {{---}} 4th International Conference on Innovations in Information, Embedded and Communication Systems, 2017;* [http://www.vstu.ru/upload/iblock/ed2/ed26c52e2ff99fb5b39fbaf37717a96c.pdf Методы обработки разнородных данных в проактивных системах управления транспортной инфраструктурой] {{---}} Чан Ван Фу, Волгоградский государственный технический университет, 2019г;* [https://www.researchgate.net/profile/Michael_Gubanov/publication/346275767_WebLens_Towards_Interactive_Large-scale_Structured_Data_Profiling/links/5fc0055c299bf104cf7fd4a1/WebLens-Towards-Interactive-Large-scale-Structured-Data-Profiling.pdf Towards Interactive Large-scale Structured Data Profiling] {{---}} Rituparna Khan, Michael Gubanov {{---}} Department of Computer Science, Florida State University, 2020г.
[[Категория: Машинное обучение]]
[[Категория: Большие данные]]
59
правок

Навигация