Меню
>
Главная страница   
Экстренная связь
Сейчас на сайте

Админов: 1
Работников: 3
Клиентов: 0
Гостей: 7

Вход
Логин  
Пароль  
На заказ
Разместить заявку
Программирование
Информатика
Базы данных
Разработка ПО
Бухгалтерский учёт
Экономика, Аудит
Финанс. менеджмент
Финансовый анализ
Эконом. теория
Эконом. предприятия
Финансы и кредит
Менеджмент
Маркетинг
Юриспруденция
Право
Психология
Математика
Физика
ОТУ
Радиотехника
Электроника
Схемотехника
Механика
Метрология
Перефразирование
История
Английский
Студентам ТУСУР-а
Другой предмет
Готовые работы
Найти готовую
Программирование
Экономика, Аудит
Бухгалтерский учёт
Финансы и кредит
Юриспруденция
Право
История
Психология
Механика
Информация
О сайте
Контакты
Наши цены
Соглашение
Наши гарантии
Способы оплаты
Вопросы и ответы
Отзывы клиентов
Вакансии
Написать письмо
Мы работаем
ЕЖЕДНЕВНО
с 9:30 до 23:30 msk
Поиск по сайту
Полезное
Теор.выч.процессов
Разное
Архив заказов
Анекдоты
Облака тегов
Карточные игры
Преподы-монстры
Антиплагиат
Мысли вслух





Яндекс цитирования






Грызи гранит не портя зубы;)


Яндекс.Метрика









Класс!









Stats








(Напомнить)
Логин Пароль        

ВКонтактеFacebookНаш Instagram

Лабораторная работа
Разработка рекомендательного сервиса
в среде программирования Python

Выполненный в 2016-м году заказ


Если Вы считаете, что данная страница каким-либо образом нарушает Ваши авторские права, то Вам следует обратиться в администрацию нашего сайта по адресу info@kursovik.com либо через форму обратной связи

Среда программирования: Python

Название работы: Разработка рекомендательного сервиса

Вид работы: Лабораторная работа

Описание: ЗаказатьЛабораторная работа «Разработка рекомендательного сервиса»

Цель работы: разработать функционал рекомендательного сервиса с использованием языка разработки Python

1.1 Задача коллаборативной фильтрации
Практически каждый день вы сталкиваетесь с рекомендательными сервисами. Книжный интернет-магазин предлагает купить дополнительно еще какие-то книги, которые покупали пользователи с аналогичными вкусами. Онлайн-кинотеатр предлагает просмотреть также и другие фильмы, которые могут вам понравиться. Рекомендательные системы присутствуют на многих веб-сайтах, которые вы используете каждый день, включая и известные.
Amazon - популярный сайт электронной коммерции — использует рекомендации на основе контента. Когда посетитель выбирает для покупки какой-либо товар, Amazon на основе этого исходного товара рекомендует посетителю другие товары, приобретенные другими пользователями.
Netflix - поставщик видеоконтента на условиях аренды и в виде потокового сервиса — является широкоизвестным примером в этой сфере. В 2006 г. компания Netflix объявила конкурс на совершенствование своей рекомендательной системы под названием Cinematch. В 2009 г. три группы разработчиков объединенными усилиями создали "ансамбль" из 107 рекомендательных алгоритмов, формирующий единый прогноз. Этот ансамбль сыграл ведущую роль в повышении точности прогнозирования, в результате чего именно эта объединенная группа и выиграла приз Netflix.
Кроме того, рекомендательные механизмы используются на таких сайтах, как Facebook, Twitter, Google, MySpace, Last.fm, Del.icio.us, Pandora, Goodreads, а также на вашем любимом сайте онлайновых новостей.
Коллаборативная фильтрация, совместная фильтрация (англ. collaborative filtering) — это один из методов построения прогнозов (рекомендаций) в рекомендательных системах, использующий известные предпочтения (оценки) группы пользователей для прогнозирования неизвестных предпочтений другого пользователя. Его основное допущение состоит в следующем: те, кто одинаково оценивали какие-либо предметы в прошлом, склонны давать похожие оценки другим предметам и в будущем.
Рассмотрим постановку задачи. Пусть имеется: S - множество субъектов (users/пользователей/клиентов); I - множество объектов (items/предметов/товаров/ ресурсов); R – пространство откликов (response/rating) S над O. В качестве отклика может быть следующее действие: покупка товара, выставление конкретной оценки объекту (например, фильму, музыкальному треку и т.д.). На табл. 1 представлен пример пространства R в виде матрицы, у которой в качсевте строк выступают объекты (пользователи), а в качестве столбцов – субъекты (фильмы). В качестве отклика выступает выставленная оценка в диапазоне.

Таблица 1. Пример пространства отображений R
Титаник Анна Каренина Дэдпул Ужасная восьмерка
Леша 4 4 3 -
Петя 5 - - 5
Вася 3 4 5 -
Катя 5 5 2 3
Ира - - 4 5
Наташа 4 - 4 3

Для того чтобы порекомендовать какому-то пользователю новый объект, необходимо предсказать, какую оценку он мог бы поставить этому объекту (фильму). Таким образом, задача коллаборативной фильтрации заключается в прогнозировании неизвестных ячеек матрицы R.

1.2 Методы коллаборативной фильтрации
В работе используются корреляицонные/контентные методы коллаборативной фильтрации, которые основаны на сравнении столбцов или строк матрицы R. Если мы сравниваем строки (субъекты), то в этом случае используется user-based коллаборативная фильтрация, в случае сравнения столбцов (объектов) – item-based.
User-based коллаборативная фильтрация
Пусть имеется пользователь Si. Наша задача - предсказать, какую оценку поставил бы пользователь Si объекту Oj. Будем рассматривать только пользователя Si и тех пользователей, которые оценили объект Oj.
Алгоритм включает в себя 3 шага:
Первый шаг. Для каждого пользователя из матрицы R вычислим, насколько его интересы совпадают с интересами пользователя Si: sim(Si, Sk). Существует множество способов подсчета близости векторов, рассмотрим их позже. Функция близости принимает значения из отрезка [0, 1]. Если пользователь не указал оценку для какого-то объекта, соответствующее значение матрицы равно 0.
Второй шаг. Теперь нужно выбрать множество K наиболее похожих на Si пользователей. Есть несколько способов выбора. Чаще всего фиксируется целая константа k. Затем все пользователи сортируются по убыванию меры близости. И во множество K входят первые k пользователей, наиболее близких к Si.
Третий шаг. Имея множество K близких пользователей, нужно вычислить оценку, которую поставил бы пользователь Si объекту Oj. Нужная оценка вычисляется по формуле:
r_ij=(∑_(S_t∈K)▒〖r_(t,j)×sim(S_i,S_t)〗)/(∑_(S_t∈K)▒〖sim(S_i,S_t)〗)
Она представляет собой среднее по всем пользователям из множества K. Используются веса: чем ближе пользователь Sk к пользователю Si (согласно мере близости, вычисленной на первом шаге), тем сильнее его вклад в предсказание оценки. Таким образом, описанный алгоритм предсказывает оценки для объектов, которые текущий пользователь еще не оценил.
Для того чтобы сделать рекомендацию для данного пользователя, достаточно предсказать оценки для всех неоцененных объектов и выбрать объекты с наибольшей предсказанной оценкой.

Item-based коллаборативная фильтрация
Описанный выше алгоритм основан на сравнения между собой пользователей (user-based). Существует также другой подход: вместо пользователей сравнивать объекты (item-based). В этом случае алгоритм выглядит почти также.
Первый шаг. Для каждого объекта Oj вычислим, насколько он похож на объект Oi, для которого предсказывается оценка.
Второй шаг. Теперь нужно выбрать множество K наиболее похожих на Oj объектов.
Третий шаг. Имея множество K близких объектов, нужно вычислить оценку, которую поставил бы пользователь Si объекту Oj. Нужная оценка вычисляется по формуле:
r_ij=(∑_(O_t∈K)▒〖r_(t,j)×sim(O_i,O_t)〗)/(∑_(O_t∈K)▒〖sim(O_i,O_t)〗)
Если количество пользователей больше, чем количество объектов, то пред- почтительней использовать алгоритм, основанный на сравнении объектов (item-based). В противном случае используют метод, основанный на сравнении пользователей (userbased). Кроме того, алгоритм, основанный на сравнении объектов, имеет несколько преимуществ. Так как интересы пользователей часто меняются, а средняя оценка объекта остается постоянной, то при сравнении объектов достаточно посчитать меру близости каждого с каждым и сохранить в памяти. В частом обновлении этих данных нет необходимости. Причем эти меры близости можно посчитать в оффлайне, т.е. когда в системе нет активных пользователей.

1.3 Функции близости
Для расчета близости двух объектов (строк или столбцов матрицы R) могут использоваться различные метрики. В работе используются следующие.
Евклидово расстояние — метрика в евклидовом пространстве — расстояние между двумя точками евклидова пространства, вычисляемое по теореме Пифагора.
sim(i,j)=√(∑_(k=1)^n▒〖(i_k-j_k)〗^2 )

Манхэттенское расстояние — метрика, введённая Германом Минковским. Согласно этой метрике, расстояние между двумя точками равно сумме модулей разностей их координат.
sim(i,j)=∑_(k=1)^n▒〖|i_k-j_k |〗
Коэффициент корреляции Пирсона характеризует существование линейной зависимости между двумя величинами.
sim(i,j)=(cov(i,j))/√(s_i^2 s_j^2 ),
где cov(i,j) - ковариация i и j, s_i^2,s_j^2- выборочные дисперсии.
Коэффициент Жаккара - безразмерный показатель, применяемый в биологии для количественного определения степени сходства биологических объектов. Измеряется как отношение пересечения двух сравниваемых множеств к их объединению.
sim(i,j)=(n(i∩j))/(n(i∪j))
Косинусная мера близости - это мера сходства между двумя векторами предгильбертового пространства, которая используется для измерения косинуса угла между ними.
sim(i,j)=arccos&#8289;((<x,y>)/(|(|x|)|||y||))
Коэффициент Шимкевича-Симпсона - бинарная мера сходства, предложенная независимо Дезидерием Шимкевичем как «показатель родового сходства» в 1934 году[ и Джорджем Симпсоном в 1947 году.
sim(i,j)=(n(i&#8745;j))/(min&#8289;[n(i),n(j)])

Оценивание качества коллаборативной фильтрации
В качестве оценки качества предсказанной (неизвестной) оценки для конкретного пользователя можно использовать среднеквадратическую ошибку модели (RMSE – Root Mean Square Error), которую можно вычислить следующим образом:
RMSE= &#8730;(&#12310;(r-r^')&#12311;^2 ),
где r – реальная оценка пользователя, r’ – оценка, полученная с помощью алгоритма коллаборативной фильтрации.

Исходные данные

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

Набор 1 “MovieLens”
Набор данных об оценках пользователями фильмов состоит из таблиц:
u.data -- все данные об оценках (rating) пользователей (user) о фильмах (item). Формат таблицы: user id | item id | rating | timestamp (временная метка).
u.item -- информация о всех фильмах, используемых в оценках. Формат таблицы:
movie id | movie title | release date | video release date |
IMDb URL | unknown | Action | Adventure | Animation |
Children's | Comedy | Crime | Documentary | Drama | Fantasy |
Film-Noir | Horror | Musical | Mystery | Romance | Sci-Fi |
Thriller | War | Western |
Movie id используется в таблице u.data.
u.user -- Информация о пользователях. Формат таблицы:
user id | age | gender | occupation | zip code
User id используется в таблице u.data.

Набор 2 “Book-Сrossing”
Набор данных о буккросинге (оценки пользователей о книгах) состоит из таблиц:
BX-Users - таблица с информацией о пользователях. Формат таблицы: "User-ID";"Location";"Age"
BX-Books - таблица с информацией о книгах. Формат таблицы: "ISBN";"Book-Title";"Book-Author";"Year-Of-Publication";"Publisher";"Image-URL-S";"Image-URL-M";"Image-URL-L"
BX-Book-Ratings - таблица с информацией об оценках. Формат таблицы: "User-ID";"ISBN";"Book-Rating"

Набор 3 “Jester”
Набор данных о веселых историях и их оценках пользователями состоит из таблицы оценок, где каждая строка соответствует отдельному пользователю, а каждыйй столбец - отдельной истории.
В первом столбце указано количество историй, который оценил данный пользователь. Если в строке стоит значение “99”, то это эквивалентно значению null = пользователь не оценивал данную историю.

Инструменты
Для выполнения лабораторной работы вам понадобится установленный интерпретатор Python 2.7.x со следующим набором пакетом:
Matplotlib – пакет для визуализации диаграмм и графиков;
PyCharm CE (https://www.jetbrains.com/pycharm/download/) – IDE для разработки на Python.
Для упрощения настройки окружения можно скачать готовую сборку Python с необходимыми data science пакетами – Anaconda (https://www.continuum.io/downloads).
В списке литературы приведены источники, в которых можно познакомиться с основными конструкциями языка python, необходимыми для выполнения работы, а также примеры использования matplotlib дял рисования графиков.

Ход работы
Изучить теоретический материал по методам коллаборативной фильтрации.
Открыть массив исходных данных и изучить его структуру. Для массива согласно своему варианту описать: количество пользователей, количество объектов, количество оценок. Описать шкалу измерения оценки.
Разделить исходный массив оценок на два массива (два файла) в следующем соотношении: 80% и 20%. Массив с 80% оценок будет использоваться для разработки системы рекомендаций (обучающая выборка). Массив с 20% будет использоваться для проверки точности разработанной системы рекомендаций (тестовая выборка).
Открыть python-проект “cf”, который находится вместе в методическими рекомендациями в PyCharm. Открыть файл collaborative-filtering.py. Для своего исходного массива данных (обучающая выборка) реализовать функцию load_data, которая загружает исходные данные.
Написать функцию visualize_R с использованием библиотеки matplotlib, которая визуализирует матрицу R. В качестве оси абсцисс использовать идентификатор пользователя, в качестве оси ординат – идентификатор объекта. На графике закрашивать ячейку только, если пользователь оценил конкретный объект. Оценить, насколько разряжена матрица, какие пользователи наиболее активны с точки зрения оценок, какие объекты наиболее часто оцениваются.
Реализовать User-based коллаборативную фильтрацию:
Реализовать функции близости sim_distance_1 и sim_distance_2 согласно своему варианту. На входе они получают массив с оценками и идентификаторы двух пользователей, который нужно сравнить. На выходе возвращают меру сходства. Если у пользователей нет пересечения в оценках (оценивали только разные объекты), то sim = 0. Функция близости вычисляется только по тем объектам, которые оценили оба пользователя.
Реализовать функцию topMatches, которая возвращает список отранжированных k-пользователей. Используйте k=5 в работе. На входе в функцию передается массив оценок, идентификатор пользователя, функция сходства, которую нужно использовать для сравнения.
Реализуйте функцию get_rating, которая будет прогнозировать оценку пользователя для еще неоцененного им объекта. Функция использует результаты уже реализованной функции topMatches.
Протестировать качество полученного алгоритма коллаборативной фильтрации:
Реализуйте функцию calculate_error, которая позволяет рассчитать среднеквадратическую ошибку.
Загрузите тестовый массив данных (тестовую выборку).
Рассчитайте для загруженных записей оценки с помощью разработанной рекомендательной системы. Посчитайте среднеквадратическую ошибку с помощью разработанной функции calculate_error, где спрогнозированные значения сравниваются с реальными. В итоге должно получиться два значения ошибки – для двух разных функций близости. Обратите внимание (!), что прогноз оценки выполняется с использованием матрицы R из обучающей выборки.
Адаптируйте разработанную рекомендательную систему под item-based метод коллаборативной фильтрации, когда вычисляется сходство объектов, а не пользователей. И также протестируйте ее на тестовой выборке с разными вариантами функций близости
Сравнить полученные результаты с помощью обоих вариантов фильтрации и разных функций близости. В каком случае результаты получились лучше? В чем преимущества и недостатки каждого из вариантов? Какие улучшения для разработанной системы можно предложить?

Варианты

№ Исходный массив Функции близости
1 MovieLens Евклидово расстояние, коэффициент Жаккара
2 BookCrossing Корреляция Пирсона, косинусная мера близости
3 Jester Манхэттенское расстояние, коэффициент Симпсона
4 MovieLens Корреляция Пирсона, косинусная мера близости
5 BookCrossing Манхэттенское расстояние, коэффициент Симпсона
6 Jester Евклидово расстояние, коэффициент Жаккара
7 MovieLens Корреляция Пирсона, коэффициент Жаккара
8 BookCrossing Манхэттенское расстояние, косинусная мера близости
9 Jester Коэффициент Симпсона, Евклидово расстояние
10 MovieLens Манхэттенское расстояние, коэффициент Жаккара
11 BookCrossing Евклидово расстояние, коэффициент Жаккара
12 Jester Корреляция Пирсона, косинусная мера близости
13 MovieLens Корреляция Пирсона, коэффициент Симпсона
14 BookCrossing Манхэттенское расстояние, косинусная мера близости
15 Jester Евклидово расстояние, коэффициент Жаккара


Содержание отчета
Титульный лист
Описание структуры исходных данных
Диаграмма матрицы R
Описание алгоритма коллаборативной фильтрации (с учетом функций близости варианта)
Результаты тестирования алгоритмов (user-based и item-based) с разными мерами сходства
Выводы по результатам тестирования, предложения, как можно улучшить систему фильтрации
Исходный код

Вопросы на защиту
Постановка задачи коллаборативной фильтрации
User-based методы коллаборативной фильтрации
Item-based методы коллаборативной фильтрации
Функции близости. Виды и их особенности
Оценка качества алгоритма коллаборативной фильтрации

Год выполнения: 2016

Данный заказ (лабораторная работа) выполнялся нашим сайтом в 2016-м году, в рамках этого заказа была разработана программа в среде программирования Python. Если у Вас похожее задание на программу, которую нужно написать на Python, либо на другом языке программирования, пожалуйста заполните форму, приведённую ниже, после чего Ваше задание в первую очередь рассмотрит наш программист, выполнявший в 2016-м году этот заказ, если он откажется, то Ваше задание оценят другие наши программисты в течение 48-и часов, если оценка нужна срочно, просим Вас оставить пометку об этом - напишите в тексте задания фразу "СРОЧНЫЙ ЗАКАЗ".


Форма заказа
*Имя:
*E-Mail:
Моб.телефон:
Skype:
Icq:
Страна:
 
ВУЗ:
Город ВУЗа:
Специальность:
 
*Введите код с картинки:
код
(сменить)


© 2001-2017 kursovik.com
Данный сайт не является средством массовой информации