1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/robei-Netflix-Recommender-with-Spark

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Система рекомендаций фильмов Netflix Prize на основе Spark

Данные: мой общий доступ к Baidu

Оффлайн-рекомендации

  • На основе метода наименьших квадратов (ALS) для матричного разложения, предоставляемого Spark MLlib. Метод относительно прост и хорошо документирован.
  • Выбрано количество итераций iterations = 5, количество характеристик предметов и пользователей K = 50.
  • Точность рекомендаций оценивалась с помощью метода RMSE, результат составил 0,5757.

Таблица значений RMSE для разных комбинаций iterations и K:

iterations, K Значение RMSE
3, 20 0,6498
4, 30 0,6295
5, 50 0,5757
6, 70 0,5883
8, 100 0,6032

Онлайн-рекомендации

Дизайн алгоритма онлайн-рекомендаций

Основная идея алгоритма заключается в следующем:

Когда пользователь u оценивает фильм p, это вызывает обновление результатов рекомендаций для пользователя u. Поскольку пользователь u оценил фильм p, то для него изменятся степени рекомендации наиболее похожих фильмов. Поэтому выбираются K фильмов, наиболее похожих на p, в качестве кандидатов. Каждый кандидат получает вес в соответствии с «приоритетом рекомендаций», который служит мерой того, насколько этот фильм подходит для рекомендации пользователю u. Эти фильмы вычисляют свой приоритет рекомендаций на основе последних оценок пользователя u, а затем объединяются и заменяются на предыдущие результаты рекомендаций.

Примечание: поскольку невозможно напрямую вычислить сходство между фильмами в данных Netflix Prize, здесь используется алгоритм ALS для вычисления косинусного сходства между предметами в матрице товаров. Подробности см. в документации Doc.

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

Тестирование задержки онлайн-рекомендаций

Результаты тестирования задержки при мгновенном создании 1000, 5000, 10 000, 30 000 и 50 000 оценок

Выбрана длительность пакета batchDuration = 2 секунды.

Количество оценок Время отклика системы рекомендаций
1000 Менее 2 секунд
5000 Менее 3 секунд
10 000 Менее 4 секунд
30 000 Около 5 секунд
50 000 Примерно 6 секунд

Результаты тестов сведены в следующую таблицу:

result7

Задержка онлайн-рекомендаций при сохранении постоянной скорости и постепенном увеличении количества оценок

a. Скорость 500 оценок в секунду:

result8

Ось X не имеет математического значения, а служит идентификатором каждой оценки. Ось Y показывает время отклика для соответствующей оценки в секундах. При скорости 500 оценок в секунду производительность системы рекомендаций хорошая, и даже самые медленные рекомендации выполняются менее чем за 6 секунд.

b. Скорость 1000 оценок в секунду:

result9

Смысл осей X и Y такой же, как и в предыдущем случае. При скорости 1000 оценок в секунду производительность системы рекомендаций остаётся хорошей, и даже самые медленные рекомендации завершаются менее чем за 6 секунд. Это аналогично ситуации со скоростью 500 оценок в секунду.

c. Скорость 1500 оценок в секунду:

result10

d. Скорость 2000 оценок в секунду:

result11

e. Скорость 2500 оценок в секунду:

result12

f. Скорость 3000 оценок в секунду:

result13

При скорости 2500 оценок в секунду и выше производительность системы начинает снижаться из-за накопления данных. Когда поступают новые данные, старые данные ещё обрабатываются, что приводит к накоплению новых данных и увеличению времени отклика. Можно видеть, что в течение одной минуты время отклика постепенно увеличивается до 20 секунд. Можно ожидать, что при скорости 2500 оценок/с и более время отклика будет увеличиваться по мере увеличения продолжительности сохранения этой скорости.

Структура проекта

  • alsBatchRecommender.scala: офлайн-рекомендации на основе ALS, а также вычисление сходства фильмов.
  • streamingRecommender.scala: онлайн-рекомендации.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Оффлайн и онлайн рекомендательные системы для фильмов Netflix на основе Apache Spark. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/robei-Netflix-Recommender-with-Spark.git
git@api.gitlife.ru:oschina-mirror/robei-Netflix-Recommender-with-Spark.git
oschina-mirror
robei-Netflix-Recommender-with-Spark
robei-Netflix-Recommender-with-Spark
master