Apache Top Open Source Project — Введение и примеры применения библиотеки машинного обучения MADlib

машинное обучение алгоритм база данных Apache
Apache Top Open Source Project — Введение и примеры применения библиотеки машинного обучения MADlib


Источник контента:4 ноября 2017 г. Мэй Цзинъи, инженер по исследованиям и разработкам Pivotal Greenplum Madlib, выступил с докладом «Машинное обучение в Greenplum — введение и примеры применения MADlib» на «Семинаре для клиентов Greenplum и машинного обучения». IT Dajiashuo (id:itdakashuo), как эксклюзивный видео-партнер, имеет право публиковать видео после того, как организатор и спикеры просмотрят и санкционируют его.

Количество слов для чтения:4809 | 6 минут чтения

Видеообращение с гостевым выступлением:suo.im/4Nm9F3

Резюме

Apache MADlib — это библиотека машинного обучения с открытым исходным кодом, разработанная Pivotal и UCBerkeley, которая обеспечивает точные параллельные реализации данных, статистические методы и методы машинного обучения для анализа структурированных и неструктурированных данных. MADlib предоставляет множество аналитических моделей, включая регрессионный анализ, деревья решений, случайные леса, байесовскую классификацию, векторные машины, модели риска, агрегацию KMEAN, анализ текста, проверку данных и многое другое. MADlib поддерживает Greenplum, PostgreSQL и Apache HAWQ, In-Database Analytics, что значительно расширяет функции анализа базы данных и в полной мере использует архитектуру MPP для быстрой обработки массивных наборов данных. В этой теме будут представлены базовая архитектура, принцип работы и функции MADlib, представлены примеры использования MADlib в Интернете, финансах, розничной торговле и других отраслях, а также представлены широкие перспективы машинного обучения в базе данных.

Введение в MADlib

MADlib — это масштабируемая библиотека машинного обучения, встроенная в базы данных на основе SQL. Давайте объясним это определение один за другим. Говоря о библиотеках машинного обучения, сверстники должны быть знакомы с scikit-learn на python. В нашей библиотеке реализованы аналогичные функции, но наш синтаксис основан на SQL, то есть вы можете вызывать эту библиотеку с помощью select + имя функции. Это означает, что все вызовы данных и расчеты выполняются в базе данных без импорта и экспорта данных. Поскольку он применяется в базе данных с массовой параллельной обработкой, его масштабируемость также очень хороша, и он может обрабатывать больший объем данных.

Весь наш проект и код находятся на Apache с открытым исходным кодом.На данный момент у нас было 6 релизов, и в этом году мы вышли из инкубатора Apache как проект Apache верхнего уровня.

Мы масштабируемое приложение для систем с массовым параллелизмом, в настоящее время поддерживающее PostgreSQL и Pivotal Greenplum.

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

Резюме истории

MADlib была основана в 2011 году, когда она принадлежала EMC/Greenplum, а позже Greenplum стала ключевой компанией Greenplum. В основном инициировано ученым из Калифорнийского университета в Беркли Джо Хеллерштейном при участии Стэнфордского университета, Университета Висконсин-Мэдисон и Университета Флориды.

Название MAD происходит от трех слов.

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

A означает Agile, agile, что означает, что эта система может помочь специалистам по обработке данных быстро и эффективно обрабатывать данные. Это зависит от интеграции MADlib с базой данных.

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

Слово mad, состоящее из трех букв вместе, в английском языке означает «отлично» в дополнение к общеизвестному значению безумия. Мы надеемся, что MADlib предоставит специалистам по данным отличную платформу для машинного обучения и анализа данных.

пользователи MADlib

MADlib имеет очень широкую пользовательскую базу.

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

Функции MADlib

Как показано на рисунке выше, этот список представляет собой алгоритм, который в настоящее время поддерживается MADlib.

Для обучения с учителем мы поддерживаем нейронную сеть, SVM, регрессию, дерево решений; для обучения без учителя мы поддерживаем кластеризацию, тематическое моделирование и т. д.; для обработки графики мы поддерживаем apsp, bfs и т. д.

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

Возможности MADlib

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

Лучшая масштабируемость. Наша масштабируемость очень стабильна по мере роста объема данных.

Более высокая точность предсказания. Обработка больших данных позволяет использовать более эффективные данные для достижения более точного эффекта прогнозирования.

Мы являемся проектом с открытым исходным кодом верхнего уровня на Apache ASF, наша разработка основана на сообществе Apache при поддержке Pivotal, и у нас очень хорошее взаимодействие с сообществом.

Как работает MADlib

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

MADlib построен на архитектуре Greenplum. MADlib создает функции в базе данных, определяя UDA и UDF в postgres. Когда мы используем sql, r для вызова MADlib, MADlib сначала оценит достоверность входных данных и предварительно обработает данные, передаст обработанный запрос в Greenplum, а затем выполнит все вычисления в Greenplum.

Процесс реализации

На приведенном выше рисунке показан поток выполнения всего процесса.

На стороне клиента мы можем использовать jupyter, zeppelin, psql и другие инструменты для подключения к базе данных и вызова функции MADlib.После обработки MADlib генерируются множественные запросы в соответствии с алгоритмом и передаются в базу данных.После этого Greenplum выполняет запрос и возвращает строку, которая обычно представляет собой одну или несколько таблиц A для хранения результатов.

MADlib Architecture

Это базовая архитектура MADlib.Наш пользовательский интерфейс — sql, а верхний слой кода — в основном python, который выполняет некоторую проверку ввода и предварительную обработку.Мы вызываем plpy для выполнения запроса. Средний и нижний уровни кода в основном написаны на C++, и мы используем C++ для вызова собственной библиотеки Eigen — это пакет, который обрабатывает алгебру и геометрию на C++. C++ также вызывает API c для связи с БД.

Пример – PageRank

Ниже приведен пример использования MADlib на примере алгоритма рейтинга страниц.

PageRank — это технология, вычисляемая поисковыми системами на основе прямых взаимных гиперссылок веб-страниц, важный алгоритм ранжирования веб-страниц, названный в честь Ларри Пейджа, основателя Google.

В MADlib для расчета pagerank графа в качестве входных данных нужны две таблицы: первая таблица вершинная (node), которая используется для сохранения информации об узле, и вторая таблица реберная (edge), которая используется для сохранения точки, на которую указывает узел. Шаги для вызова pagerank с помощью MADlib следующие: выберите MADlib.pagerank(), для которого требуется несколько входных данных. Первый вход — это таблица вершин, а второй вход — это имя столбца идентификатора вершины в таблице В таблице вершин в примере это столбец идентификатора. Третий вход — это имя таблицы ребер, четвертый вход — это имя столбца, соответствующего начальной и конечной точкам ребра в таблице, а последний вход — определяемая пользователем выходная таблица, результат расчета будет вернуться к этой таблице.Вышеприведенное изображение является результатом расчета. Глядя на таблицу pagerank_out, вы можете увидеть рейтинг страницы каждого узла. Кроме того, у нас есть таблица pagerank_out_summary, в которой хранится количество итераций сходимости.В этом примере вычисление сходится и возвращает результат после 16 итераций.

Масштабируемость

MADlib имеет хорошую масштабируемость и может обрабатывать данные большего размера. Взяв в качестве примера PageRank, этот график показывает время, необходимое для завершения расчета по мере увеличения количества ребер. Мы видим, что при 100 миллионах вершин, от 600 миллионов ребер до 5 миллиардов ребер время выполнения продолжает расти почти линейно.

Это производительность SVM

Мы видим, что время выполнения также увеличивается почти линейно в диапазоне 100 миллионов записей. Обработка 100 миллионов записей может быть завершена за 10 минут.

Вышеизложенное является предварительным введением в MADlib, я думаю, что у всех есть предварительное представление о MADlib. Далее два пользовательских случая.

Пользовательский пример 1 — Greenplum + MADlib для маркетинга по электронной почте

Во-первых, мы вводим предысторию следующего случая. Наш клиент — крупная многонациональная диверсифицированная медиа- и развлекательная компания, которая является пользователем Greenplum.

В данном случае они хотели повысить точность своего электронного маркетинга. Основные проблемы, с которыми они сталкиваются, заключаются в следующем: модель прогнозирования кликов по электронной почте недостаточно точна, и необходимы лучшие модели и маркетинговые стратегии. Во-вторых, их существующий процесс анализа данных является громоздким, медленным и включает множество ручных шагов, которые подвержены ошибкам. Поработав с командой Pivotal Data Science Team, мы предоставили им набор решений. Во-первых, мы в полной мере используем многочисленные возможности MADlib, упрощаем весь конвейер данных, повторно моделируем и прогнозируем с помощью MADlib и полностью автоматизируем процесс.

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

Источник данных клиента включает в себя следующую информацию: покупки пользователя, бронирование, регистрации, историю маркетинга по электронной почте, историю просмотра веб-страниц, географическую информацию и т. д. на мобильном терминале. Весь процесс осуществляется на платформе Greenplum. Инструменты моделирования — это в основном MADlib и немного PL/pgSQL.

Ниже приведен рабочий процесс анализа данных для этого клиента в то время. Необработанные данные импортируются и сохраняются в Greenplum. После этого данные были импортированы в SAS для очистки и подготовки данных. После этого данные были импортированы в EXCEL из SAS, а информационная ценность и вес доказательств, то есть количество информации и вес доказательств, были смоделированы и рассчитаны в EXCEL. После этого данные были импортированы обратно в SAS для расчета парной корреляции, типа корреляции переменных. По результатам расчета в EXCEL удаляются сильно коррелированные переменные. Вышеуказанные шаги предназначены для уменьшения количества переменных, поскольку SAS не очень хорошо обрабатывает более 1000 переменных. После этого данные снова импортируются обратно в SAS, для них выполняется логистическая регрессия, и, наконец, результаты анализа импортируются обратно в Greenplum. Из-за ограниченного объема данных, которые может обрабатывать SAS, клиенты могут использовать образец только для моделирования, поэтому в конце данные импортируются обратно в Excel для теста KS-Score и проверки модели. Тест KS-Score проверяет, может ли выборочное распределение эффективно представлять общее распределение, тем самым проверяя достоверность модели. После проверки результаты, наконец, импортируются обратно в Greenplum, и модель вручную используется для прогнозирования новых данных.

Из этого процесса мы можем увидеть некоторые проблемы:

Во-первых, очевидно, что многократно импортировать и экспортировать данные между Greenplum, SAS и Excel неудобно, в течение этого периода также будут возникать такие проблемы, как преобразование формата данных и потеря данных.

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

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

После работы с Pivotal Data Science мы создали новый рабочий процесс.

Как видите, все шаги в SAS и EXCEL удалены, и весь процесс выполняется в Greenplum. После сохранения данных сначала используйте генерацию функций MADlib для извлечения функций, а затем вызывайте различные функции MADlib для расчета информационного значения, парной корреляции и полного выбора функций. На этапе моделирования вызовите непосредственно соответствующую функцию логистической регрессии и эластичную сеть (используйте эластичную сеть для выбора переменных, а затем постройте логистическую регрессию). На этапе проверки MADlib предоставляет множество функций проверки. Наконец, функция MADlib может прогнозировать новые данные.

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

Эта оптимизация значительно повышает эффективность всего процесса анализа данных. на этапе генерации данных. Исходное время составляло 75 минут, после оптимизации это заняло всего 8 минут, а весь процесс стал в 9 раз быстрее. Этап компиляции атрибутов в 3 раза быстрее и использует на 495 атрибутов больше. На этапе расчета значения информации средняя скорость расчета каждой переменной в 13,7 раза выше, чем раньше. На этапе моделирования предыдущая итерация занимала около 30 минут, и можно было использовать только менее 50 переменных, в то время как после оптимизации средняя итерация заняла всего 1,86 минуты, а регрессионный анализ можно было выполнить с 376 переменными и средней скоростью каждой из них. итерация была в 16 раз больше оригинала. Видно, что весь процесс анализа данных значительно ускорился.

Это результат моделирования.

Точность исходной модели составляет 99,7%, но истинный положительный показатель равен 0%. То есть исходная модель может только прогнозировать пользователей, которые не будут очень хорошо нажимать на электронные письма, но не может уверенно предсказывать пользователей, которые будут нажимать на электронные письма. Уровень точности улучшенной модели составляет 62,8%, что, по-видимому, уменьшилось, но истинный положительный показатель составляет 66%, а это означает, что модель имеет 66%-ю уверенность в прогнозировании пользователей, которые будут нажимать на электронное письмо, и эти пользователи являются основными. пользователи, которые дают Группа пользователей, которой компания приносит свои основные ценности.

Пользовательский пример 2. Анализ пользователей финансовых продуктов на основе журналов API

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

В основном они сталкиваются со следующими проблемами: 1. Как использовать журналы API для лучшего понимания различных типов пользователей, 2. Как лучше понять взаимодействие пользователей с приложениями 3. Как классифицировать и защищать запросы API в реальном времени 3. Существующие API Количество объем данных журналов огромен, а существующей команде по анализу данных не хватает навыков анализа больших данных.

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

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

Источники данных этого проекта в основном включают журнал доступа к API пользователя и профиль клиента, включая 45 дней доступа, 5 миллиардов строк данных и миллионы пользовательской информации. Платформой по-прежнему является Greenplum, а для моделирования в основном используются MADlib, PLR, PL/PYTHON и PDLTools. PDLTools — еще один пакет для обработки данных от Pivotal Data Science. Визуализация в основном делается на Tableau.

На рисунке показан весь процесс моделирования. Из-за нехватки места подробное описание здесь не приводится.

Резюме

Во-первых, до улучшения, хотя пользователи и использовали Greenplum, они все равно анализировали выборки данных на R, а DCA простаивал. После улучшения пользователи используют Greenplum+MADlib для более тщательного анализа больших наборов данных.

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

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

Наконец, перед сотрудничеством заказчики прикидывали, стоит ли переходить на Teradata, но после доработки решили отказаться от Teradata и увеличить количество кластеров GREENPLUM, что полностью доказало отличную производительность Greenplum при анализе данных.

Резюме и перспективы

Используя MADlib, мы можем выполнять статистический анализ и анализ машинного обучения, такой как график, кластеризация, регрессия, классификация и т. д. Кроме того, у нас есть GPText для анализа текста и Geospatial для геопространственного анализа. Greenplum также хорошо поддерживает инструменты отчетности BI для быстрой визуализации данных. Наша философия — ВСЕ В ОДНОЙ БАЗЕ ДАННЫХ, чтобы сделать анализ проще и эффективнее.

Мы скоро выпустим версию 1.13. В этой версии будут добавлены некоторые новые графовые алгоритмы, в том числе HITS и Graph cut. Мы будем поддерживать мини-пакетную обработку для ускорения вычислений. В то же время, с новой версией postgres 10 Release, мы также добавим поддержку новой версии.

В следующем выпуске версии 2.0 у нас будут некоторые изменения интерфейса.С точки зрения алгоритмов, к графике будет добавлена ​​центральность вектора признаков, центральность промежуточности и т. Д. SVM, добавим Multiclass, дополнительно добавим Gradient Boosted Machines (GBM) для бустинга. Наконец, мы добавим дополнительные служебные функции для предварительной обработки данных.

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

На приведенном выше рисунке показаны ресурсы, связанные с MADlib. Мы все с открытым исходным кодом. Вы можете просматривать или вносить свой вклад вместе с нами, чтобы сделать MADlib все лучше и лучше.