Разработка рекомендательной системы: реализация микросервисов для автоматической обработки и интеллектуального анализа данных
Разработка универсальной рекомендательной системы. Реализация микросервисов автоматической обработки и интеллектуального анализа данных. Основные требования к модулю анализа для универсальной рекомендательной системы. Алгоритмы и методы решения задач.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 01.08.2017 |
Размер файла | 2,9 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
50
Размещено на http://www.allbest.ru/
Пермский филиал федерального государственного автономного образовательного учреждения высшего образования
"Национальный исследовательский университет "Высшая школа экономики"
Факультет экономики, менеджмента и бизнес-информатики
Разработка рекомендательной системы: реализация микросервисов для автоматической обработки и интеллектуального анализа данных
Выпускная квалификационная работа
по направлению подготовки 09.03.04 Программная инженерия
образовательная программа "Программная инженерия"
Малькова Ксения Михайловна
Рецензент к. ф. - м. н., доцент,
доцент кафедры информационных систем и математических методов в экономике ПГНИУ Н.В. Фролова
Руководитель: к. ф. - м. н., доцент,
доцент кафедры информационных технологий в бизнесе
Л.Н. Лядова
Пермь, 2017 год
Аннотация
Работа посвящена разработке модуля интеллектуальной обработки и анализа данных для универсальной рекомендательной системы, настраиваемой на различные предметные области. Выполнено описание процесса анализа данных, выделены общие требования к системе, проведен анализ существующих решений на основе этих требований. Произведен анализ и выбор методов и алгоритмов решения задач группировки данных, де-дупликации и поиска ассоциативных правил; выбраны технологии для разработки. Спроектирована архитектура распределенной системы и каждая из ее компонент, представлена структура баз данных, приведены особенности проектирования API для микросервисов. Приведено технико-экономическое обоснование разработки системы. Описаны особенности программной реализации каждого микросервиса, приведены результаты группировки, поиска дубликатов и ассоциативных правил на примере продуктов питания. Результат работы - разработанные микросервисы группировки, де-дупликации, поиска ассоциативных правил, управления данными, предоставляющие REST API для доступа к их функциональности. Пример работы системы показан на данных о продуктах питания.
Работа состоит из 56 страниц основного текста, 6 таблиц, 13 иллюстраций, 13 приложений.
Оглавление
- Аннотация
- Введение
- Анализ и формализация требований к модулю анализа данных рекомендательных систем
- Описание процесса анализа данных для рекомендательной системы
- Описание требований к модулю анализа для рекомендательной системы
- Анализ существующих решений
- Анализ методов решения задач
- Методы решения задач
- Методы автоматической группировки объектов
- Методы поиска дубликатов
- Выбор технологий для разработки
- Проектирование системы
- Проектирование архитектуры модуля анализа
- Проектирование логических компонент системы
- Проектирование баз данных
- Проектирование API для микросервисов
- Реализация модуля анализа объектов
- Реализация методов коммуникаций
- Реализация микросервиса для группировки объектов
- Реализация микросервиса для поиска дубликатов
- Модуль разметки
- Создание функции сходства
- Формирование матрицы сходства и поиск групп дубликатов
- Реализация микросервиса поиска ассоциативных правил
- Заключение
- Библиографический список
- Приложения
- Рисунок F.1. Диаграмма активности для прецедента "Поиск дубликатов"
- Аннотация
Введение
Последнее время становится все более популярным создание систем, которые способны угадывать предпочтения и нужды пользователей и на основе этого предлагать подходящие решения. Такие системы называются рекомендательными и имеют большое количество применений.
Крупные компании такие, как Amazon, Apple, eBay, Pandora и т.д., используют рекомендательные системы в составе своих сервисов для предложений пользователям релевантной информации. Что важно, рекомендации формируются для конкретного пользователя исходя из его личных данных и интересов. Такой подход значительно упрощает пользователю работу с большим объемом информации, помогает сократить время поиска верного решения. Однако зачастую рекомендательные системы разрабатываются для решения задач конкретной области. Например, Amazon специализируется на продаваемых им продуктах, Netflix на фильмах и т.д. [1, 2].
Большие компании имеют необходимые средства и квалифицированных специалистов, для того чтобы разработать собственную рекомендательную систему. Компании же, которые только начинают развиваться и имеют необходимость в включении в их сервис рекомендаций, зачастую не имеют необходимых ресурсов и времени для этого. Более того, при разработке рекомендательных систем используются общепринятые походы, основанные на реализации моделей таких методов машинного обучения как коллаборативная фильтрация и фильтрация на основе содержания [2]. Это означает, что при разработке рекомендательной системы для любой области используются одни и те же методы, что приводит к мысли о возможности создания общего решения.
Разработка универсальной рекомендательной системы, адаптируемой к различным областям, может решить данную проблему.
Сервис рекомендаций, настраиваемый на несколько областей применения, должен иметь в основе не только модель рекомендательной системы, но и включать модули ее поддержки. Во-первых, данные, используемые для рекомендаций, должны соответствовать определенным требованиям: актуальность, правильность, уникальность, полнота, структурированность и т.д. Только при наличии качественных данных возможно принятие решений, наиболее полно отвечающих потребностям пользователей. В рамках разработки исследовательского прототипа, работа системы рассматривается на примере сервиса для подбора рациона питания, качественный результат рекомендаций которого зависит, в частности, от уникальности данных (списка продуктов питания для формирования меню). Поэтому на первом этапе разработки решается проблема де-дупликации данных. Во-вторых, в процессе формирования рекомендаций помимо основной модели необходимы дополнительные инструменты для решения таких задач, как автоматическая группировка объектов (для поиска похожих, заменяемых по параметрам продуктов питания, для поиска похожих меню и т.д.), поиск дополняющих друг друга объектов (для формирования подсказок при создании меню пользователем).
Несмотря на то, что работа системы показана на примере области питания, она может быть применена и для других областей, которые имеют потребность в решении указанных выше задач. Настройка на предметную область выполняется за счет указания пользователем определенных конфигураций (базы данных сервиса стороннего разработчика, параметров для методов анализа в зависимости от подаваемых на вход данных).
Включение в универсальную рекомендательную систему модуля анализа позволяет значительно улучшить процесс работы с предпочтениями пользователей и формированием предложений для них.
Объектом исследования работы являются задачи поиска знаний в данных при создании рекомендательной системы. Предметом исследования является разработка микросервисов для рекомендательной системы, реализующих методы интеллектуального анализа данных.
Цель работы - реализация микросервисов автоматической обработки и интеллектуального анализа данных для рекомендательной системы.
Решение задачи рассматривается на примере подбора рациона питания, но, несмотря на ограничение, в архитектуре системы должна быть заложена возможность настройки на предметную область.
Модуль анализа должен позволять работать с данными как с помощью веб-клиента, так и посредством использования его функций при написании собственного приложения. В данной работе проектирование должно быть выполнено таким образом, чтобы модуль анализа мог быть настроен на предметную область сервиса клиента без написания программного кода.
Система должна выполнять следующие функции: автоматически группировать объекты из базы данных по заданным полям, искать дубликаты в базе данных, искать ассоциативные правила. Задача автоматической группировки объектов не раз рассматривалась в исследовательских работах [3, 4, 5, 6], как и поиск ассоциативных правил [7, 8, 9]. Проблема поиска дубликатов в данных также интересует многих исследователей [10, 11, 12]. Выбор методов для реализации модуля анализа основывался на их популярности и наличии в доступных библиотеках для анализа данных.
Для достижения поставленной цели необходимо решить следующие задачи:
1) произвести анализ задачи разработки модуля интеллектуальной обработки данных для рекомендательной системы:
a) формализовать описание процесса анализа для рекомендательной системы;
b) конкретизировать требования к модулю анализа для универсальной рекомендательной системы;
c) проанализировать существующие информационные системы, решающие подобные задачи;
2) произвести анализ методов решения задач (группировки, поиска дубликатов и поиска закономерностей.):
a) разработать/выбрать алгоритмы и методы решения задач;
b) проанализировать и выбрать технологии для разработки;
3) выполнить проектирование:
a) архитектуры модуля интеллектуального анализа данных как части рекомендательной системы;
b) баз данных (основной для хранения данных и вспомогательной для вычислений);
c) микросервисов управления данными, поиска дубликатов и ассоциативных правил, группировки;
d) API для взаимодействия с микросервисами;
4) реализовать исследовательский прототип модуля анализа:
a) реализовать микросервисы для управления данными, поиска дубликатов, группировки и поиска ассоциативных правил;
b) протестировать реализованные микросервисы на основе тестовых сценариев и данных о продуктах питания.
В ходе решения поставленных задач предполагается использовать следующие методы исследования: методы интеллектуального анализа данных, методы машинного обучения, методы теории графов, методы обработки естественного языка, методы объектно-ориентированного проектирования и программирования.
Достоверность научных результатов подтверждается использованием апробированных, широко используемых научно-исследовательских методов и математического аппарата.
Достоверность практических результатов подтверждается апробацией исследовательского прототипа системы на частном примере из области питания.
Научная новизна работы заключается в следующем:
рекомендательная система интеллектуальный анализ
1. Разработан модуль анализа данных рекомендательной системы, которая может быть адаптирована к различными предметным областям за счет описанной архитектуры и универсальных методов решения задач.
2. Предложены методы анализа данных, которые в своей совокупности могут улучшить качество рекомендаций в рекомендательной системе.
3. Найдена оптимальная комбинация методов анализа данных при решении задачи поиска дубликатов, дающая достаточно точный результат.
Теоретическая значимость работы заключается в развитии подходов анализа данных применительно к разработке рекомендательных систем. Предложенная композиция методов позволяет эффективно решать задачи кластеризации, поиска дубликатов и ассоциаций в рекомендательных системах нескольких спектров областей.
Предложенные в работе методы в своей совокупности дают возможность улучшить качество рекомендательной системы, а также расширить ее функциональность, когда недостаточно единственного метода для формирования рекомендаций. С минимальными изменениями система может быть настроена на ту или иную область применения.
Результатом является модуль интеллектуального анализа данных для рекомендательной системы, включающий в себя микросервисы для выполнения каждой задачи. Возможность адаптации системы показана на примере создания рекомендательной системы для организации рациона питания пользователей.
Анализ и формализация требований к модулю анализа данных рекомендательных систем
Данная глава посвящена анализу предметной области, который состоит из этапов:
1) описание процесса анализа данных в рекомендательных системах для формирования концепции разработки;
2) определение требований к системе (результатом является техническое задание);
3) исследование существующих систем на предмет соответствия выдвинутым требованиям для выявления необходимсоти устранения ограничений.
Описание процесса анализа данных для рекомендательной системы
Рекомендательная система - такое программное обеспечение, которое способно предсказать, что будет интересно пользователям, основываясь на их данных и поведении в прошлом.
Разработка универсальной рекомендательной системы, которая могла бы быть адаптируема сразу к нескольким областям, может решить проблему необходимости разработки собственной рекомендательной системы с нуля для компаний, сервисы которых находятся в разработке или только начали развиваться.
Разработка рекомендательной системы требует включения в нее модуля анализа структурированных данных (в табличном представлении). Было выделено несколько задач, которые помогут добиться качества данных и улучшить процесс формирования предложений: автоматическая группировка объектов, поиск ассоциаций в композициях объектов, поиск дубликатов. Данные задачи выделены на основании их практической необходимости в рекомендательной системе. Помимо данных задач модуль анализа данных должен иметь и другие возможности (поиск выбросов, классификации данных и т.д.).
В данной работе уделяется внимание разработке трех функций модуля анализа (группировка объектов, поиск дубликатов и ассоциативных правил) по той причине, что работа системы будет показана на примере подбора рациона питания людей. Таким образом, группировка объектов может быть использована для поиска заменяемых продуктов на основе их характеристик (белков, жиров, углеводов и т.д.). Поиск ассоциаций может быть использован для составления/дополнения меню, основываясь на уже готовых. Поиск дубликатов решает проблему уникальности данных, в частности приведение базы данных продуктов для составления рациона питания в единый вид (без повторов каких-либо записей).
Очевидно, что указанные задачи могут подойти не только для данной области. Проблема де-дупликации данных в БД существует почти в любом проекте, в котором ведется работа с данными, а также в котором важно их качество. Поиск ассоциативных правил тоже универсальная задача и может пригодиться для многих областей (самый яркий пример - анализ покупательских корзин). Автоматическая группировка объектов позволяет выявить закономерности в данных и поделить их на четкие группы в зависимости от их параметров. Кластеризация может быть применена для решения различных прикладных задач (например, для разделения пользователей на группы по их интересам, активности, просмотрам контента и т.д.).
В данной работе автоматизируется процесс анализа данных для рекомендательной системы. Система предоставляет работу в двух формах: с помощью веб-интерфейса и с помощью обращения к API из программного кода. Участниками процесса, которые используют веб-интерфейс, являются: администратор (осуществляет подготовку и настройку системы) и аналитик (работает с базовыми функциями системы). Задача модуля анализа состоит в том, чтобы извлекать знания из данных клиентского приложения, сохранять их и обеспечивать постоянный доступ к ним. Основные операции процесса приведены в табл.1.1.
Таблица 1.1 Основные операции процесса анализа
Код операции |
Диаграмма |
Операция |
Кем выполняется |
|
001 |
Настройка параметров системы и интеграция |
Администратор |
||
002 |
Приложение С |
Загрузка данных в систему |
Аналитик/Автоматически |
|
003 |
Приложение E |
Автоматическая группировка данных |
Аналитик |
|
004 |
Приложение G |
Поиск и удаление дубликатов |
Аналитик |
|
005 |
Приложение F |
Поиск ассоциаций в данных |
Аналитик |
|
006 |
Работа с результатами анализа |
Аналитик |
Описание операций процесса:
1. Для нормальной работы системы и использовании ее как части собственного сервиса, пользователь (администратор) должен установить систему на ресурсы компании, настроить среду: указать все необходимые параметры для установки связи со своим проектом (характеристики баз данных основного сервиса).
2. Пользователь изначально должен загрузить данные в систему (структуру входных данных см. в "Техническом задании" в прил. А), над которыми он планирует работать. Загрузка происходит из csv файла либо автоматическим образом (из основной БД клиента). Данные обязательно помечаются уникальным именем, чтобы была возможность анализировать сразу несколько видов данных. После загрузки данных пользователь может применить любую описанную в таблице операцию для их анализа.
3. Чтобы осуществить группировку объектов по каким-либо признакам, пользователь должен указать имя данных для группировки, параметры кластеризации, количество групп (не обязательно). После заполнения информации пользователь запускает процесс группировки. Результаты кластеризации сохраняются в системе для дальнейшей работы с ними.
4. Поиск дубликатов пользователь может выполнить только в том случае, если произведена группировка объектов. Поиск дубликатов происходит в несколько стадий (на основе разработанного алгоритма де-дупликации): пользователь выполняет настройку параметров: имя данных или уже запущенного процесса анализа, необходимые поля для определения сходства. Пользователь размечает данные (дается пара объектов, пользователь указывает дубликаты они или нет). Размеченные данные сохраняются в системе. Пользователь обучает модель с указанными им параметрами. На основе полученной модели формируется матрица сходства. Далее происходит поиск групп дубликатов (а не пар). Не обязательно выполнять каждый шаг. Например, при готовой обученной модели можно сразу приступить к формировании матрицы сходства, а при готовой матрице - к поиску дубликатов. Все результаты промежуточных этапов (размеченные данные, модели с функцией сходства, матрица (граф) сходства, группы дубликатов) сохраняются в системе под именем указанных данных и ключевого слова этапа.
5. Поиск ассоциаций в данных пользователь выполняет с помощью запуска обучения модели, выбрав перед этим имя данных и необходимые параметры. Получившиеся ассоциативные правила сохраняются в системе.
6. Пользователь может работать с результатами анализа, выбрав вид анализа (группировка, поиск ассоциативных правил, де-дупликация). Работа над результатами группировки заключается в следующем: выгрузка данных в csv, получение кластера объекта, получение списка объектов кластера, получение всех кластеров с объектами. Работа над результатами поиска ассоциативных правил состоит в следующем: выгрузка правил в csv, получение часто встречающихся наборов, получение объектов, дополняющих данный набор, получение списка правил. Работа с дубликатами: выгрузка в csv, получение списка групп дубликатов, получение группы дубликатов по объекту, также пользователь может увидеть получившиеся группы и по желанию их исправить (если какие-то объекты попали в неверные группы) и обобщить каждую группу дубликатов, выбрав один экземпляр и, по необходимости исправив его характеристики.
Описание процесса анализа выполнено с помощью диаграммы прецедентов (см. прил. B). Описание некоторых отдельных прецедентов см. в прил. C, D, E, F.
Описание требований к модулю анализа для рекомендательной системы
В данной работе делаются попытки разработки такой архитектуры системы и выбираются такие методы по обработке данных, которые позволят адаптировать продукт ко множеству областей. Работа системы показана на примере подбора рациона питания людей.
Функциональным назначением программного продукта является поддержка работы универсальной рекомендательной системы с помощью решения задач по обработке и анализу данных. Общая универсальная рекомендательная система (модуль формирования предложений совместно с модулем анализа) может быть подключена и настроена как самостоятельный модуль в разрабатываемом сервисе клиента. Система должна иметь удобный интерфейс для конфигурирования и способность интеграции с основным проектом с помощью настройки параметров.
Данные для анализа загружаются в систему под уникальным именем. Загрузка может быть выполнена через веб-интерфейс (из csv файла), автоматически (при настройке системы указывается база данных, откуда берутся актуальные данные), либо программным путем с использованием API. После появления данных в системе клиент может вызвать любую из трех функций для их анализа. После того, как анализ выполнен, клиент по запросу к системе может получить нужную информацию об извлеченных знаниях, например, после завершения процесса кластеризации можно получить разбитые данные по группам, информацию о каждом кластере и так далее.
Основные возможности, которые должны предоставляться модулем анализа:
1. Установка системы (совместно с модулем формирования предложений) на собственные компьютерные ресурсы клиента (требования к ним см. в прил. A).
2. Настройка общих параметров (установка связи с основным сервисом клиента, настройка API и т.д.).
3. Загрузка данных в систему из csv-файла или настройка автоматической загрузки из баз данных основного сервиса.
4. Настройка параметров для каждой конкретной задачи.
5. Использование системы как части собственного сервиса для формирования рекомендаций и анализа данных.
6. Выполнение поиска дубликатов в данных:
a) разметка данных для последующего обучения (сравнение пар объектов на признак сходства);
b) обучение модели на размеченных данных;
c) формирование матрицы сходства объектов;
d) настройка параметров: уникальное имя данных или запущенного процесса анализа, поля для анализа, обученная модель, матрица сходства, таблица с дубликатами и т.д. (на каждом этапе указываются свои параметры).
7. Выполнение задачи группировки объектов:
a) настройка параметров: имя данных для группировки объектов, количество кластеров, поля для группировки, коэффициент кластеризации;
b) кластеризация данных.
8. Выполнение задачи поиска ассоциативных правил:
a) указание параметров для поиска ассоциативных правил: данные с набором композиций объектов, граница (коэффициент доверия) и т. д;
b) поиск ассоциативных правил в указанных данных.
9. Работа с результатами:
a) группировка: выгрузка кластеров в csv, получение кластера по объекту, получение списка объектов кластера, получение списка объектов по кластерам;
b) поиск ассоциативных правил: выгрузка правил в csv, получение часто встречающихся наборов, получение объектов, дополняющих данный набор, получение списка правил;
c) де-дупликация: обобщение дубликатов, получение группы дубликатов по объекту, корректировка классов, получение списка групп дубликатов и выгрузка их в csv.
10. Каждая задача может быть решена как с помощью веб-интерфейса, так и с помощью обращения к API (то есть внедрением функций системы в собственный код).
Остальные требования к разрабатываемой системе определены на основании следующей главы и представлены в техническом задании (см. прил. A).
Анализ существующих решений
Анализ данных, машинное обучение и работа с естественным языком - основные направления искусственного интеллекта, которые затрагиваются в данной работе. В последнее время им уделяется большое внимание. Доказательством этого может служить возрастающее число программных продуктов и исследовательских работ на данные темы. Методы указанных выше направлений широко используются и при разработке рекомендательных систем.
Рекомендательные системы особо популярны в последнее время. По причине большого роста новых сервисов, в инфраструктуру которых внедряют рекомендательные системы, а также из-за наличия общих методов решения разработки рекомендательных систем, делаются попытки реализации универсальной рекомендательной системы.
Анализ существующих решений по разработке универсальной рекомендательной системы показал, что существует три направления работ:
· Разработка рекомендательных систем для определенной области. Примером этого могут служить Amazon, Pandora, Ebay, Netflix и другие сервисы, которые используют собственные рекомендательные системы, подходящие только для них.
· Исследования по созданию универсальной рекомендательной системы. Наиболее успешное исследование - Unresyst [13], автор которого предлагает подход для решения задачи разработки универсальной рекомендательной системы и создает прототип системы.
· Фреймворки, которые предоставляют готовые функции для разработки собственной рекомендательной системы (RankSys http: //ranksys.org/, Crab https: //muricoca. github. io/crab/, LensKit http: //lenskit.org/ и др.).
· Универсальные рекомендательные системы, которые настраиваются под определенную область и выступают в роли самостоятельного модуля (ActionML http: //actionml.com/, PredictionIO http: //actionml.com/prediction-io).
Для выявления ограничений данных систем проведен сравнительный анализ, который основывается на требованиях, выдвинутых к системе, разрабатываемой в рамках данной работы. Таким образом, критериями оценки выступают следующие требования:
1) возможность настройки универсальной системы на предметную область;
2) отсутствие необходимости разработки собственного программного кода для получения рекомендательной системы;
3) внедрение универсальной системы компанией-клиентом в ее собтвенный сервис в качестве отдельного модуля для рекомендаций и анализа;
4) наличие модуля анализа для интеллектуальной обработки данных и извлечения знаний из данных;
5) наличие графического интерфейса пользователя для работы с универсальной системой;
6) наличие готового программного продукта на рынке программного обеспечения универсальных рекомендатеьных систем.
Сравнение продуктов приведено в табл.1.2.
Таблица 1.2. Сравнение существующих решений
Критерии |
Рекомендательные системы для конкретной области |
Исследовательские прототипы (Unresyst) |
Фреймворки (RankSys, Crab, LensKit) |
Универсальные системы (ActionML) |
|
Возможность настройки системы на предметную область |
- |
+ |
- |
+ |
|
Отсутствие необходимости разработки собственного программного кода |
- |
+ |
- |
+ |
|
Возможность внедрения универсальной системы в собственный проект в качестве отдельного модуля |
- |
- |
- |
+ |
|
Наличие модуля анализа |
+ |
- |
- |
- |
|
Наличие графического интерфейса для работы с системой |
- |
- |
- |
- |
|
Наличие готового программного продукта на рынке ПО |
- |
+ |
+ |
Таким образом, наличие настройки системы на определенную область и отсутствие необходимости изменять программный код свойственны только исследовательским прототипам, которые не являются готовыми программными продуктами, а также универсальной системе ActionML. Использование универсальной системы в качестве отдельного модуля в собственном проекте, работающем сразу после установки и настройки, также возможно лишь в ActionML. В общем, существует два типа систем, которые являются готовыми программными продуктами и находятся на рынке ПО: фреймворки, которые предоставляют функции для разработки рекомендательных систем и универсальные системы (ActionML). Фреймворки не удовлетворяют ни одному требованию, помимо того, что являются готовым программным продуктом. А продукт ActionML имеет такое серьезное ограничение, как отсутствие в системе модуля анализа, который необходим для обеспечения качества данных. Чтобы систему можно было легко внедрить в другой проект, необходим графический интерфейс, который бы упростил процесс настройки, обеспечил работу аналитикам, а также устранил необходимость написания собственного программного кода. Ни одно указанное выше решение не имеет графического интерфейса для работы.
Итак, можно сделать вывод, что на данный момент рекомендательные системы имеют ряд ограничений, устранение которых может позволить пользователю улучшить процесс формирования рекомендаций в собственном сервисе.
Данная работа направлена на создание модуля анализа данных для разрабатываемой универсальной рекомендательной системы.
Безусловно, существует множество готовых решений для анализа данных, например Deductor https: //basegroup.ru/deductor/description.
Однако все они не учитывают специфику разработки функций анализа данных именно для рекомендательной системы, что рассматривается в рамках данной работы.
В данной главе выполнен анализ предметной области, определены основные операции процесса анализа данных.
На основе этого сформированы требования к системе и разработано техническое задание. При проверке существующих решений на соответствие требованиям выявлено несколько ограничений, что делает актуальной разработку описанной системы.
Анализ методов решения задач
Данная глава содержит описание следующих этапов анализа методов решения:
1) выбор методов решения задач: группировки объектов, поиска дубликатов и ассоциативных правил среди объектов неких событий;
2) выбор технологий для разработки выбранных методов.
Результатом является описание алгоритмов и методов решения поставленных задач, из которых выбраны наиболее подходящие способы решения проблемы.
Методы решения задач
Научной областью знаний, имеющей в своем арсенале методы для решения поставленных в работе задач (автоматическая группировка объектов, поиск ассоциативных правил, поиск дубликатов), является искусственный интеллект.
Искусственный интеллект (ИИ) - область компьютерных наук, специализирующаяся на создании интеллектуальных машин, которые работают и реагируют, как люди. Искусственный интеллект стал неотъемлемой частью индустрии высоких технологий. Основными задачами, которые решает искусственный интеллект, являются [14]:
1) символьное моделирование мыслительных процессов;
2) обработка естественного языка;
3) представление и использование знаний;
4) машинное обучение;
5) биологическое моделирование искусственного интеллекта;
6) робототехника;
7) машинное творчество.
Инженерия знаний является основной частью исследований ИИ, задачами которой являются получение знаний на основе какой-либо информации, их формализация и использование. Производство знаний из данных - одна из главных проблем интеллектуального анализа данных. Существуют различные способы решения этой проблемы, один из которых - на основе нейросетевой технологии [15].
Машинное обучение является еще одной основной частью ИИ, главной решаемой проблемой которого является самостоятельное получение знаний. Оно может быть как без учителя (задачи кластеризации), так и с учителем (задачи классификации, регрессии) [16]. К области машинного обучения относится большой класс задач на распознавание образов: распознавание символов, рукописного текста, речи, анализ текстов.
В рамках обработки естественного языка решаются задачи понимания, обработки и генерации текстов на "человеческом" языке [17]. Это направление ставит цель такой обработки естественного языка, которая была бы в состоянии приобрести знания из текста самостоятельно.
Многие области исследований искусственного интеллекта пересекаются и тесно связаны между собой. В данной работе используется сразу несколько направлений.
Разработка модуля обработки и анализа данных требует использования такого направления, как инженерии знаний, потому что поставленная задача требует реализации системы, которая способна интеллектуально обрабатывать данные. Примерами задач, которые решает данное направление и которые требуется решить в данной работе, являются автоматическая группировка данных, поиск ассоциативных правил [18].
Интеллектуальный анализ данных пересекается с машинным обучением. В данной работе планируется использовать методы машинного обучения для построения различных моделей для извлечения знаний, которые будут являться либо самостоятельным решением задачи, либо служить основой для проведения других операций процесса анализа (например, в задачи поиска дубликатов).
Такое направление, как обработка естественного языка неразрывно связано с методами машинного обучения. Его методы могут решить задачи, связанные с обработкой текстовых данных, в частности, их перевода в числовое представление для возможности проведения анализа.
Рекомендательные системы с точки зрения самостоятельной модели (алгоритма), а не сервиса, являются методом машинного обучения. Данный метод задействуется при реализации модуля формирования предложений разрабатываемой системы, который не рассматривается в данной работе.
Методы автоматической группировки объектов
Автоматическая группировка объектов - задача, решаемая методом кластеризации в машинном обучении. Кластеризация является алгоритмом с обучением без учителя. В данной работе этот метод используется как вспомогательный при решении других задач (поиск дубликатов), а также предоставляет возможность реализовать дополнительную функцию поиска похожих по свойствам объектов.
Существует множество алгоритмов кластеризации [19]. Наиболее популярный - k_means. Алгоритм пытается минимизировать среднеквадратичное отклонение объектов кластеров от центров этих кластеров [3]. Основные шаги алгоритма k_means [4]:
1) инициализация кластеров:
2) перераспределение срединных элементов:
a) нахождение центра каждого кластера;
b) перераспределение точек по кластерам.
Входные данные для алгоритма - количество кластеров k и сами объекты.
Смысл алгоритма заключается в минимизации целевой функции [3]:
.
Инициализация в стандартном алгоритме осуществляется случайным образом, что увеличивает вероятность получения неверного результата. Именно поэтому будет использован алгоритм k_means++, который решает данную проблему [5]. Библиотека для python scikit_learn реализует этот алгоритм [20] и будет применена при написании модуля группировки.
Минус алгоритма k_means в том, что необходимо подбирать количество кластеров вручную, однако существуют подходы, которые могут помочь оценить количество кластеров. В данной работе будет применен метод Affinity propagation (основан на концепции передачи сообщений между точками) [21], также реализованный в библиотеке scikit_learn [22].
Так как в рамках данной работы разрабатывается исследовательский прототип модуля анализа, для группировки объектов выбран наиболее простой и доступный алгоритм k_means. Для получения более точных результатов в дальнейшем планируется включить другие, более эффективные методы кластеризации [23] для обеспечения еще большей адаптируемости системы.
Методы поиска дубликатов
Рекомендательная система должна быть основана на качественных данных. Одним из главных условий "правильности" рекомендаций является обеспечение уникальности данных. Каждая ликвидированная копия объекта может способствовать увеличению процента точности при формировании предложений. Объектами считаются структурированные или частично структурированные данные, которые имеют несколько полей различного типа с информацией об объекте (например, записи в реляционной базе данных).
Проблема поиска дубликатов в данных актуальна для многих предметных областей. Существует множество подходов к ее решению, их обзор представлен в [10], однако всегда в основе лежит операция сравнения между двумя объектами [11]. В данной работе используется подход обучения с учителем, как один из методов дающих наиболее точный результат при поиске дубликатов [12].
Все рассмотренные работы [10, 11, 12] направлены на исследование поиска сходства пары объектов и не предлагают решения проблемы поиска групп дубликатов. В данной работе предлагается такой алгоритм поиска дубликатов, который на основе полученной функции сходства между парой объектов находит кластеры дубликатов.
Задача де-дупликации разбивается на несколько этапов:
1. Поиск функции сходства двух объектов.
2. Формирование матрицы сходства.
3. Кластеризации матрицы сходства (получение групп дубликатов).
4. Обобщение дубликатов (выбор представителя группы и отсеивание копий).
Функция сходства должна включать в себя определение разницы между двумя объектами и определение на основе данной разницы вероятности сходства.
Разница объектов считается по совокупности полей, которые могут иметь различные типы данных. В данной работе установлено ограничение: ведется работа только со строковыми и числовым данными, так как это основные сравниваемые поля при поиске похожих.
Функция для нахождения разности между двумя объектами получает на вход два объекта со всеми полями для сравнения, а на выходе новый объект, значения полей которого равны разнице соответствующих полей входных объектов:
где n - общее количество полей объектов, a, b - значения сравниваемых полей двух объектов.
Для нахождения разницы между числовыми полями достаточно вычислить их квадрат разности: или модуль разницы: .
Полученная величина будет служить мерой близости значений числовых полей:
.
Для сравнения строк необходимо перевести их в векторный вид (числовой). Широко используемый метод для этого - статистическая мера tf_idf, которая часто используется при обработке естественного языка. Ее расчет основан на поиске частоты употребления слова в каждом отдельном документе (tf) и поиске обратной частоты (idf). Tf - отношение количества вхождений определенного слова в документ к общему количеству слов этого документа [24]:
,
где - количество вхождений слова t в документ d, N - количество всего слов в d.
Idf измеряет важность слова и считается следующим образом [24]:
,
где - общее количество документов, - количество документов, в которых есть t.
Мера tf_idf находится как произведение tf и idf:
.
Таким образом, все значения конкретного поля, имеющего строковый тип данных, разбиваются на слова, и для каждого слова считается мера tf_idf. Так осуществляется перевод строки в векторный вид.
Следующим этапом в расчете разности двух строк является сравнение двух векторов (A, B), полученных с помощью расчета tf_idf для всех слов каждой строки. Близость двух векторов рассчитывается с использованием меры косинусного сходства [25]:
,
где a, b-строковые поля, A, B-вектора значений этих строк.
Приведем примеры объектов и нахождение разницы между ними (табл.2.1). Разница для строковых полей представлена в общем виде, так как вычисление величины tf_idf требует список других документов.
Таблица 2.1. Пример расчета разницы между двумя объектами
Объект 1 |
Название: Обезжиренный йогурт, Ккал: 40 |
|
Объект 2 |
Название: Обезжиренное молоко, Ккал: 42 |
|
Разница числовых полей |
Ккал: (42-40) ^2 = 4 |
|
Векторы строковых полей |
Объект 1: [tfidf (“Обезжиренный йогурт”)] = v1 Объект 2: [tfidf (“Обезжиренное молоко”)] = v2 |
|
Разница строковых полей |
Название: cossim (v1,v2) = D |
|
Полученный объект |
Название: D, Ккал: 4 |
Способы для нахождения разницы между объектами позволяют сформировать входные данные для функции сходства:
.
Функция сходства должна определять вероятность того, что два объекта являются дубликатами (p), получая на вход разницу между ними.
Для создания функции сходства могут быть использованы методы машинного обучения с учителем. Наиболее универсальным методом, который зарекомендовал себя на практике, является gradient boosting decision trees [26]. Использование этого метода в данной работе не отвергает другие, возможно, более эффективные решения. Для того, чтобы модуль анализа был как можно более универсальным и мог работать с различного вида данными, в дальнейшем необходимо добавлять другие методы решения задачи поиска функции сходства, например, нейронные сети [15].
Алгоритм gradient boosting decision trees реализован в библиотеке xgboost. Особенности его работы подробно описываются авторами этой библиотеки [27].
Как любой алгоритм с учителем, данный метод требует первоначально размеченной выборки данных для обучения. Обучающая выборка должна быть репрезентативной: иметь примеры как дубликатов, так и не дубликатов, при чем примеров дубликатов должно быть больше, чтобы модель после обучения имела меньшей процент ошибки.
Организация процесса разметки данных также требует автоматизации. В данном случае можно предлагать пользователю в качестве потенциальных дубликатов экземпляры с одинаковыми полями, если они числовые, либо экземпляры с максимальным совпадением слов в строке, если это строковые поля. Пользователь либо подтверждает, что объекты являются дубликатами, либо опровергает это. Таким образом, происходит процесс получения обучающей и тестовой выборки для функции сходства.
Обучающая выборка состоит не из пар объектов, а из разницы между ними. Функции предсказания на вход также подается разница межу объектами. Именно для этого на первом этапе выбраны два способа для поиска разницы между полями объектов.
После обучения модели необходимо экспериментальным путем установить нижнюю границу (предел) возвращаемого значения функции сходства, начиная с которого объекты будут считаться истинными дубликатами. На основе этого создается матрица сходства (табл.2.2). Название строк и столбцов матрицы - объекты, ячейка на пересечении строки и столбца - результат функции сходства для пары объектов.
Таблица 2.2 Структура матрицы сходства
O1 |
O2 |
O3 |
O4 |
||
O1 |
1 |
P1 |
P2 |
P3 |
|
O2 |
P1 |
1 |
P4 |
P5 |
|
O3 |
P2 |
P4 |
1 |
P6 |
|
O4 |
P3 |
P5 |
P6 |
1 |
Так как исходных объектов может быть много, а матрица размером 1000Ч1000 имеет сложности с обработкой не только на следующем этапе, но и на этапе ее составления (перебор всех пар объектов - сложность минимум ). Поэтому необходимо оптимизировать процесс составления матрицы сходства, а именно не выполнять полный перебор пар, а разделить, например, список объектов на более мелкие группы и выполнять сравнение пар в пределах одной группы, гарантируя при этом с большой долей вероятности, что дубликаты одного и того же объекта не попадут в разные группы. Этого можно добиться путем предварительной кластеризации данных (группировка произойдет таким образом, что схожие по параметрам объекты попадут в одну группу, а значит и дубликаты тоже). Таким образом, предварительная кластеризация исходных данных позволит сократить процесс составления матрицы сходства за счет сокращения объектов для перебора. Теперь будет создаваться не одна матрица большого размера, а несколько матриц относительно маленькой размерности, которые более просты для обработки и составления. Помимо этого, предварительная кластеризация позволит ускорить процесс разметки данных (самый первый этап - получение обучающей выборки), так как поиск потенциально похожих объектов также осуществляется методом перебора.
Полученная матрица сходства ничто иное как матричная форма графа, вершинами которого являются объекты, а ребра между ними означают наличие связи между объектами и имеют значение функции сходства.
Несмотря на то, что пары-дубликаты уже найдены, необходимо найти все дубликаты каждого объекта, то есть сгруппировать полученные пары. Кластеризация матрицы сходства (графа) может быть осуществлена с помощью нескольких алгоритмов. Наиболее известные - это k_medoids [6] и методы иерархической кластеризации [28].
k_medoids метод разумно реализовывать самостоятельно, так как он не включен ни в одну библиотеку для машинного обучения для Python. Данный алгоритм отличается тем, что в качестве центров кластеров в нем используются сами объекты, которые называются медоидами. Сложность одной итерации алгоритма равна , что делает его практически неприменимым при больших значениях n и k. На вход алгоритм принимает множество объектов и количество кластеров, на выходе формируются кластеры объектов. Псевдокод алгоритма выглядит следующим образом [6]:
1) инициализация: выбор k из n объектов d в качестве медоидов (может быть осуществлена случайным образом);
2) связывание каждого объекта с ближайшим медоидом;
3) пока значение целевой функции больше или равно нулю повторять:
для каждого медоида m и не-медоида o повторять:
нач
заменить m на o во множестве медоидов;
если целевая функция увеличилась, то замена отменяется
конец
Иерархическая кластеризация действует по другому принципу: в зависимости от типа кластеризации разделяет крупные кластеры на более мелкие или объединяет мелкие в более крупные (см. рис.2.1).
Рисунок 2.1 Иерархическая кластеризация
Иерархическая кластеризация представлена во многих библиотеках для машинного обучения, в частности в scipy [29], которая использована в данной работе.
Последним шагом де-дупликации является обобщение всех копий одного объекта в единственный экземпляр. Данная операция в большинстве случаев зависит от предметной области, и иногда только человек может выбрать единственно верную копию или "собрать" объект из характеристик копий, поэтому автоматизация данного процесса будет отложена.
Метод поиска ассоциативных правил
Поиск закономерностей между событиями в базе данных (например анализ покупательских корзин и поиск продуктов, покупаемых совместно) в анализе данных ведется с помощью ассоциативных правил [7]. Поиск дополняющих объектов (часто встречающихся комбинаций в данных) также можно осуществить с помощью ассоциативных правил.
В основе ассоциативных правил лежит понятие транзакции - произошедшее одновременно множество событий.
В примере анализа меню питания пользователей транзакциями будут являться отдельно взятые приемы пищи из меню всех пользователей за все время. Появление нового меню в профиле пользователя (а именно список продуктов какого-либо отдельно взятого приема пищи) - новая транзакция. Например: {“овсянка”, “вареное яйцо”, “чай”}.
Помимо понятия транзакции существует структура правил и их основные свойства. Ассоциативное правило - импликация , при . Правило имеет поддержку s, если s процентов транзакций содержат X и Y, support () = support (XЃѕY). Вероятность того, что из X следует Y - это достоверность. Правило имеет достоверность c, если в c процентах случаев confidence () = support (XЃѕY) /support (X) [30].
Масштабируемым алгоритмом ассоциативных правил является алгоритм Apriori [8, 9]. Блок-схема с основными шагами алгоритма представлена на рис.2.2 [31]. Первым шагом алгоритм получает список часто встречающихся объектов (одноэлементных кандидатов) исходя из подсчитанной поддержки для каждого объекта. На основе данного списка далее будет сформирован список наборов 2_элементных кандидатов, подсчитана их поддержка и получены часто встречающиеся наборы. Далее над получившимися наборами выполняются те же самые операции, начиная с генерации кандидатов (n_элементных). Цикл повторятся до тех пор, пока сгенерировать очередной список кандидатов будет невозможно. На каждой итерации количество элементов в наборе уменьшается.
Рисунок 2.2 Общие шаги алгоритма Apriori
Алгоритм действует в соответсвии с утверждением, что часто встречающиеся наборы могут быть таковыми лишь в том случае, если все их подмножества являются часто встречающимися [31]. Таким образом, алгоритмом отсекаются те кандидаты, которые априори не смогут стать подмножеством часто встречающихся наборов. Получившиеся наборы данных есть искомые наборы дополняющих объектов, объектов, которые имеют связь и поэтому находятся в одной композиции.
Генерация правил позволяет создать таблицу "условие - следствие" с поддержкой и достоверностью для каждого (рис.2.3).
Рисунок 2.3 Визуализированное правило
На основе этого можно формировать предложения при выборе пользователем очередного объекта при составлении им неких комбинаций объектов (меню, в примере по формированию рациона питания), а так же проводить анализ и решать другие задачи, которые специфичны для каждой области. В примере по оценке покупательских корзин может решаться задача по выгодному размещению товаров на полках в супермаркете.
Выбор технологий для разработки
Для реализации приведенных алгоритмов необходимо выбрать технологии, которые при реализации позволят эффективно решать поставленные задачи.
В качестве основного языка программирования для разработки использован Python 3. Так как почти на каждом этапе реализации присутствуют методы машинного обучения, а для Python существует множество библиотек, основанных на работе с искусственным интеллектом, то удобнее использовать именно данный язык. Также существует достаточно много пособий, уроков по его использованию, подключаемых пакетов с открытым доступом.
Хранение данных, которые необходимо анализировать, осуществляется в документно-ориентированной базе данных. Использование такой модели упрощает операции изменения данных и уменьшает скорость обработки запросов. В качестве СУБД можно выбрать одну из самых популярных: MongoDB [32]. Для работы с MongoDB в Python 3, выбрана библиотека pymongo [33]. Для сохранения результатов tf_idf метода и быстрого доступа к ним использована база данных ключ-значение redis https: //redis. io/, так как при работе с ней данные хранятся в оперативной памяти, что обеспечивает быстроту обмена.
В качестве библиотек, содержащих методы машинного обучения, использованы: scipy (для иерархической кластеризации графа) [29], scikit_learn (для кластеризации) [20, 22], xgboost (для поиска дубликатов) [27].
Вспомогательными библиотеками при реализации вышеописанных методов могут служить pandas http: //pandas. pydata.org/, numpy http: //www.numpy.org/ (для работы с матрицами и быстрых расчетов) и другие. Для создания REST API для микросервисов модуля анализа выбран микрофреймворк Flask [34], который позволяет создавать RESTful сервисы. Для связи микросервисов друг с другом использована технология gRPC [35] от Google, которая позволяет настроить обмен данными между сервером и клиентом посредством вызова удаленных процедур.
Подобные документы
Метод извлечения информации о личностных характеристиках пользователя с помощью технологии распознавания лица. Разработка алгоритма работы рекомендательной системы, основанной на психологическом портрете пользователя, хранилища баз данных и интерфейса.
курсовая работа [815,2 K], добавлен 21.09.2016Разработка комплекса интеллектуального анализа данных, получаемых в процессе работы коммерческого предприятия розничной торговли. Исследование стационарности ассоциаций, выявление частоты появления ассоциаций. Скрипты для создания баз данных и таблиц.
курсовая работа [706,3 K], добавлен 07.08.2013Морфологические анализаторы (морфологизаторы) на различных языках программирования. Анализ методов и технологий автоматической обработки ЕЯ-текстов. Разработка модуля графематического анализа и создания таблицы лексем. Программная реализация классов.
дипломная работа [3,0 M], добавлен 06.03.2012Обзор моделей анализа и синтеза модульных систем обработки данных. Модели и методы решения задач дискретного программирования при проектировании. Декомпозиция прикладных задач и документов систем обработки данных на этапе технического проектирования.
диссертация [423,1 K], добавлен 07.12.2010Создание автоматизированной системы для упрощения работы с данными, расчётами и отчётами, анализа и хранения поступающих в лабораторию хроматографических исследований данных. Функциональные требования к системе. Проектирование программного обеспечения.
курсовая работа [1,9 M], добавлен 23.01.2013Разработка структурной схемы системы. Выбор и обоснование не указанных в задании элементов. Анализ временных параметров системы. Разработка файла конфигурации для системы сбора-обработки данных на языке AHDL. Моделирование цифровой части системы.
курсовая работа [1,1 M], добавлен 26.10.2014Разработка технологии обработки информации, структуры и формы представления данных. Проектирование программных модулей. Блок-схема алгоритма и исходный код программы анализа арифметического выражения, синтаксического анализа простой программы на языке С.
курсовая работа [2,4 M], добавлен 12.12.2011Цели универсальной системы хранения данных о производственном изделии. Описание предметной области программы и технические требования к ней. Стадии и этапы разработки, методика испытаний. Работа с главным меню и справочниками, руководство оператора.
дипломная работа [4,6 M], добавлен 27.08.2012Применение методов многомерного анализа для визуализации взаимосвязей web и социальных сетей в социологических исследованиях. Системы интеллектуального поиска данных Nigma.ru, Wolfram Alpha и Quintura. Социологическая информация и эмпирические данные.
презентация [2,6 M], добавлен 09.10.2013Изучение и программная реализация в среде Matlab методов обработки, анализа, фильтрации, сегментации и улучшения качества рентгеновских медицинских изображений. Цифровые рентгенографические системы. Разработка статически обоснованных алгоритмов.
курсовая работа [4,7 M], добавлен 20.01.2016