
Среда программирования: Python
Название работы: ЛР1. Вариант 6. Разработка рекомендательного сервиса
Вид работы: Лабораторная работа
Тематика работы: Алгоритмы
Объем программы: 3 (по десятибалльной шкале)
Уровень сложности: 3 (по десятибалльной шкале)
Разработчик (автор):
Программист сайта kursovik.com
(письмо автору)
Данная работа написана ЧЕЛОВЕКОМ без использования ИИ
Ключевые слова: Рекомендательный сервис, количество пользователей, количество объектов, оценка, массив, цвет маркера, матрица оценок, функции близости, Евклидово расстояние.
Функции программы:
Вариант № 6. Разработка рекомендательного сервиса.
Цель работы: разработать функционал рекомендательного сервиса с использованием языка разработки Python.
Задание:
1. Для массива данных "Jester" описать: количество пользователей, количество объектов, количество оценок. Описать шкалу измерения оценки.
2. Разделить исходный массив оценок на два массива (два файла) в следующем соотношении: 80% и 20%. Массив с 80% оценок будет использоваться для разработки системы рекомендаций (обучающая выборка). Массив с 20% будет использоваться для проверки точности разработанной системы рекомендаций (тестовая выборка).
3. Реализовать функцию load_data(), загружающую исходные данные из excel-файла в двумерный массив.
4. Написать функцию visualize_R() с использованием библиотеки matplotlib, которая визуализирует матрицу R. В качестве оси абсцисс использовать идентификатор пользователя, в качестве оси ординат – идентификатор объекта. На графике закрашивать ячейку только, если пользователь оценил конкретный объект. Оценить, насколько разряжена матрица, какие пользователи наиболее активны с точки зрения оценок, какие объекты наиболее часто оцениваются.
5. Реализовать User-based коллаборативную фильтрацию:
а) реализовать функции близости sim_distance_1() и sim_distance_2() согласно своему варианту. На входе они получают массив с оценками и идентификаторы двух пользователей, который нужно сравнить. На выходе возвращают меру сходства. Если у пользователей нет пересечения в оценках (оценивали только разные объекты), то sim = 0. Функция близости вычисляется только по тем объектам, которые оценили оба пользователя.
б) реализовать функцию topMatches(), которая возвращает список отранжированных 5 пользователей. На входе в функцию передается массив оценок, идентификатор пользователя, функция сходства, которую нужно использовать для сравнения.
в) реализовать функцию get_rating(), которая будет прогнозировать оценку пользователя для еще неоцененного им объекта. Функция использует результаты уже реализованной функции topMatches().
6. Протестировать качество полученного алгоритма коллаборативной фильтрации:
а) реализовать функцию calculate_error(), которая позволяет рассчитать среднеквадратическую ошибку.
б) загрузить тестовый массив данных (тестовую выборку).
в) рассчитать для загруженных записей оценки с помощью разработанной рекомендательной системы. Вычислить среднеквадратическую ошибку с помощью разработанной функции calculate_error(), где спрогнозированные значения сравниваются с реальными. В итоге должно получиться два значения ошибки – для двух разных функций близости. Прогноз оценки выполняется с использованием матрицы R из обучающей выборки.
7. Адаптировать разработанную рекомендательную систему под item-based метод коллаборативной фильтрации, когда вычисляется сходство объектов, а не пользователей. И также протестируйте ее на тестовой выборке с разными вариантами функций близости
8. Сравнить полученные результаты с помощью обоих вариантов фильтрации и разных функций близости. Оценить преимущества и недостатки каждого из вариантов. Предложить улучшения для разработанной системы.
Описание (отчет):
Есть
на 28 страниц, посмотреть оглавление
jester10x10
jester100
jester500
jester_test
my_filter - user-based
jester20
jester10Перед покупкой готовой работы не забудьте проверить её оригинальность. Запросить у администратора проверку текущей оригинальности работы по версии системы Антиплагиат.РУ
Отчет к программе. СодержаниеЦель работы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 Задание . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 Ход работы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 Реализация пользователе-ориентированной фильтрации (user-based) . . . . . . . . . . . . . . . .9 Результат выполнения теста функции TopMatches . . . . . . . . . . . . . . . . . . . . .