Распределенная система рекомендаций Работу выполнил: И.И.Житков Цель • Освоение принципов обработки и анализа данных на примере сервиса рекомендаций кинофильмов методами коллаборативной фильтрации. Объём информации • Данные это просто сырая нефть. Она ценна, но без переработки она не может быть понастоящему использована. Она должна быть превращена в газ, пластик, химикаты, и т.д., чтобы создать ценность; так и данные нужно проанализировать и «раскусить», чтобы они стали ценными. Майкл Палмер Поставленная задача • На основе открытых данных MovieLens исследовательской группы GroupLens составить список рекомендаций кинофильмов для конкретного пользователя. Рекомендательная система • Рекомендательная система — это программа, которая на основе данных о пользователе(User), предмете(Item) и оценке предмета для конкретного пользователя(Rate) выдает рекомендации. Рекомендательная система Существует четыре основных типа рекомендательных систем: • Основанные на контенте • Коллаборативные • Основанные на знаниях • Гибридные Коллаборативная фильтрация • Коллаборативная фильтрация — метод построения прогнозов в рекомендательных системах, использующий известные предпочтения (оценки) пользователей для прогнозирования неизвестных предпочтений другого пользователя. • Находятся пользователи, разделяющие оценочные суждения прогнозируемого пользователя • Используются оценки сходно мыслящих пользователей, найденных на первом шаге для вычисления рекомендации. Пример Имя Купил (id) Просмотрел (id) Вася 1,6,7 2,3 Женя 1,2,3 5,7,4 8 6 Лариса Алгоритм порекомендовал Васе: — 2,3 товар, который во первых купил Женя общим товаром с id1 и в добавок он уже был просматрен — 8 товар Ларисы, т.к. купленный товар 6 она просмотрела. Используемые средства • • • • • • Язык реализации – Python Версия языка в среде Linux – 2.7 Среда разработки – CanoPy Операционная система – Ubuntu 13.04 Hadoop 1.2.1 PredictionIO Server v0.7.1 PredictionIO • Работу PredictionIO можно представить как 3 блока: Приложение(App), Инструмент(Engine) и Алгоритм (Algorithm). • Приложение - база данных • Инструмент - функциональная часть проекта. Для каждого действия в пределах одного Приложения может быть несколько рабочих инструментов. • Алгоритм Реализация • Для импорта данных в PredictionIO в файле batch_import.py описаны функции извлечения из фалов и передачи на сервер информации о фильмах, пользователях и оценках пользователей для фильмов. • Для получения списка рекомендаций в файле movie_rec_app.py задается имя инструмента, с которым будет работать система. • predict(self, movie, movie_rate) Информация о готовом приложении Пример работы программы Заключение • В ходе курсовой работы удалось построить функционирующий сервис, выполняющий поиск и выдачу рекомендаций кинофильмов на основе пользовательских предпочтений на основе открытых данных исследовательской группы GroupLens. Спасибо за внимание!