Рекомендательная система для фильмов на Python
Заказать уникальную курсовую работу- 36 36 страниц
- 3 + 3 источника
- Добавлена 27.05.2021
- Содержание
- Часть работы
- Список литературы
- Вопросы/Ответы
1.Теоретически основы разработки рекомендательных систем 5
2.Структура рекомендательной системы 21
3.Построение рекомендательной системы 24
Заключение 34
Список литературы 35
Приложение 1. 36
in-memorycomputing) — обрабатывает данные в оперативной памяти, благодаря чему позволяет получать значительный выигрыш в скорости работы для некоторых классов задач, в частности, возможность многократного доступа к загруженным в память пользовательским данным делает библиотеку привлекательной для алгоритмов машинного обучения.Состоит из ядра и нескольких расширений, таких как Spark SQL (позволяет выполнять SQL-запросы над данными), SparkStreaming (надстройка для обработки потоковых данных), SparkMLlib (набор библиотек машинного обучения), GraphX (предназначено для распределённой обработки графов). Может работать как в среде кластера Hadoop под управлением YARN, так и без компонентов ядра Hadoop, поддерживает несколько распределённых систем хранения — HDFS, OpenStackSwift, NoSQL-СУБД Cassandra, Amazon S3.Схема 1. Структура ApacheSpark.Наша рекомендательная система будет строиться по алгоритму ALS(чередование наименьших квадратов). Алгоритм предполагает, что как рекомендуемые предметы, так и пользователи, обладают некоторыми «скрытыми» факторами, оптимальные веса которых находятся на известных рекомендациях итеративным способом путем минимизации ошибок(также этот алгоритм называют «алгоритм факторизации матриц»). Стандартный подход к коллаборативной фильтрации на основе факторизации матриц рассматривает записи в матрице пользователь-элемент как явные предпочтения, данные пользователем элементу, например, пользователи дают оценки фильмам.Во многих реальных случаях использования обычно имеется доступ только к неявной обратной связи (например, просмотры, клики, покупки, лайки, акции и т. Д.). Подход, используемый spark.mllibдля работы с такими данными, взят из коллаборативной фильтрации для наборов данных неявной обратнойсвязи . По сути, вместо того, чтобы пытаться непосредственно моделировать матрицу оценок, этот подход рассматривает данные как числа, представляющие силу в наблюдениях за действиями пользователя (например, за количеством кликов или совокупной продолжительностью просмотра фильма). Эти цифры затем соотносятся с уровнем доверия к наблюдаемым пользовательским предпочтениям, а не с явными оценками, присвоенными элементам. Затем модель пытается найти скрытые факторы, которые могут быть использованы для прогнозирования ожидаемого предпочтения пользователя для элемента.3.Построение рекомендательной системыВ этом проекте мы создаем рекомендательный движок с использованием ApacheSpark. Рекомендательная модель обучается в Spark с использованием метода матричного факторизации и метода чередующихся наименьших квадратов. Мы используем небольшую версию набора данных MovieLens для оценки фильмов с примерно 100 000 рейтингов, 9 000 фильмов и 600 пользователей. Там есть файлы .csv в папке datasetzip, ratings.csv, links.csv, movies.csv.В ratings.csv содержится 100 836 строк и 4 столбца. Чтение ratings.csv в Spark DataFrame,Нужно отметить, что столбец title содержит год выпуска, а жанры-строку с разделителями. Мы можем использовать регулярное выражение и Sparkudf для извлечения года выпуска в один столбец и сделать тип данных столбца жанрами в виде списка строк.Чтобы рекомендовать фильмы новому пользователю, мы можем позволить ему сначала выбрать конкретные интересные жанры, а затем дать ему рекомендацию фильмов в этих жанрах."link.csv` содержит карту идентификатора фильма в" movies.csv` и идентификатор TMDb.Для начала нам нужно убедиться в наличии данных в предлагаемых датаесетах. Достичь этого мы можем при выполнении нескольких простых запросов, которые выведут интересующую нас информацию.Рис.9. Число пользователейЗапрос числа пользователей вернул 610 запией. Рис.10. Запрос числа пользователейЧисло фильмов – 9742Рис.11. Число фильмовИсключаем фильмы, которые не имеют пересеченийЖанры фильмовРисю.12. Жанры фильмовАнализ данныхЧтобы получить представление о том, как распределяются данные, мы сначала посмотрим, сколько баллов 1.0~5.0 s имеется в кадре рейтинговых данных,Данные о рейтингах состоят примерно из 100 000 оценок, которые пользователи дают фильмам. Каждая строка "Фрейма данных" состоит из "userId", "MovieID" и "timestamp" для события, а также "рейтинга", присвоенного пользователем фильмуРис.13. РейтингиПолучаем общую картину о распределении оценок по рейтингамРис.14. Распределение оценокСоотношение в виде диаграммыРис.15. Диаграмма рейтинговых балловПолучаем средний рейтинг фильмовРис. 16. Средний рейтинг фильмовСредний рейтинг от пользователейРис.17. Средний рейтинг от пользователейФайл movies.csv содержит MovieID, название и жанры для каждого фильма. Как мы можем видеть, поле жанры немного сложно использовать, так как жанры представлены в виде одной строки, разделенной символом |: Adventure|Animation|Children|Comedy|Fantasy.Рис.18. Загрузка данныхВ таком виде данные не совсем удобны для работы, поэтому предлагается написать пользовательскую функцию, которая совершает некоторые преобразования, приводящая жанры к виду массиваРис. 19. Функция для преобразования Мы также можем заметить, что названия фильмов содержат год выпуска. Было бы полезно иметь это поле в нашем поисковом индексе для фильтрации результатов (скажем, для офильтрации наших рекомендаций, чтобы включить только более свежие фильмы).Рис. 20. Очищенные данныеЗатем добавим данные links.csv к фильмам так, чтобы для каждого фильма существовал идентификатор базы данных фильмов, соответствующий каждому фильму. Этот идентификатор необходимо использовать для извлечения изображений постеров фильмов при последующем отображении рекомендаций.Приступим непосредственно к формированию рекомендательной системыРис.22. Подготовка данных для тестирования и формирование моделиНа данном этапе мы подготовили нашу модель для тренировки рекомендательной системы. Далее на основе этой модели мы можем делать некоторые предсказания для наших данныхРис.23 Создание рекомендательной моделиНа представленной таблице показаны фильмы и насколько они подходят тому или иному пользователю – чем выше оценка – тем более подходящий фильм.Из данных для обучения мы можем извлечь данные о предпочтениях конкретного пользователя. Рис. 24. Фильмы пользователяИсходя из этих данных, мы можем строить предположения о его предпочтениях, выводя предполагаемые рекомендации.Рис.25. Фильмы, рекомендованные пользователямЗаключениеТаким образом, рекомендательная система – это система, которая ставит своей задачей проинформировать пользователя о товаре или услуге, которые ему могут быть интересны, и привлечь к ним его внимание. Существуют персонализированные и не персонализированные рекомендательные системы, в свою очередь, первые обладают наибольшей эффективностью. Для выявления интересов пользователя существует матрица предпочтений, которые помогает проанализировать интересы пользователя и предугадать то, что он пожелает приобрести, посмотреть, послушать в следующий раз.В рамках данной работы нами были рассмотрены принципы построения рекомендательных систем. В основе которых лежат инструменты машинного обучения. Нами на практике были применены полученные теоретические знания, при помощи которых нами была построены простая рекомендательная система для поиска кино, которая позволяет делать рекомендации по фильмам для пользователей на основе уже имеющихся оценок.Список литературыПлас, ДжейкВандер.Python для сложных задач: наука о данных и машинное обучение [Текст] / Дж. ВандерПлас ; [перевела с английского И. Пальти]. - Санкт-Петербург [и др.] : Питер, 2018. - 572, [1] с. : ил., табл.; 23 см. - (Бестселлеры O'Reilly)Лутц, Марк.Python [Текст] : карманный справочник : [Python в вашем кармане : перевод с английского] / Марк Лутц. - 5-е изд. - Москва : Диалектика ; Санкт-Петербург : Диалектика, 2019. - 318 с.Карау, Холден. Изучаем Spark : [Текст] : молниеносный анализ данных / ХолденКарау, Энди Конвински, Патрик Венделл, Матей Захария. - Москва : ДМК Пресс, 2015.Приложение 1.importos#Подключаем Python к Sparkos.environ["PYSPARK_PYTHON"]=r"C:\Users\lu890\AppData\Local\Programs\Python\Python37\python.exe"import reimportnumpy as npimportseaborn as snsimportmatplotlib.pyplot as plt%matplotlib inlinefromIPython.display import Image, HTML, displayfrompyspark.sql.types import *frompyspark.sql.functions import col, mean, udf, lit, current_timestamp, unix_timestamp, array_containsfrompyspark.ml.recommendation import ALSfrompyspark.ml.tuning import ParamGridBuilder, CrossValidatorfrompyspark.ml.evaluation import RegressionEvaluatorfrompyspark.sql import SparkSession# Создаем сессию в Sparkspark = SparkSession \ .builder \ .appName("Python Spark SQL basic example") \ .config("spark.some.config.option", "some-value") \ .getOrCreate()# Выявляем число пользователейratings = spark.read.format("csv").option("header", "true").load("ratings.csv")ratings.select('userID').distinct().count()# Выявляемчислофильмовmovies = spark.read.format("csv").option("header", "true").load("movies.csv")movies.select('movieID').distinct().count()# количество фильмов, которые оцениваются пользователямиratings.select('movieID').distinct().count()ratings = spark.read.csv('ratings.csv',inferSchema=True,header=True)# количестворазличныхрейтинговыхбалловratings.groupBy('rating').count().toPandas()# количество различных рейтинговых балловв виде графикаsns.barplot(x="rating",y="count",color='#3498db', data=ratings.groupBy('rating').count().toPandas())plt.savefig('fig_001.png', dpi=600)# Среднийрейтингфильмовratings.groupBy('MovieID').agg(mean('rating')).toPandas().head()# Средний рейтинг фильмовв виде графикаratings.groupBy('MovieID').agg(mean('rating')).toPandas()['avg(rating)'].plot(kind='hist', color='#3498db')plt.savefig('fig_002.png', dpi=600)# Подготавливаем данные для тестирования и обучения # разделяем данные на обучающие/тестовые наборы, используя разделение 80/20(train_data, test_data) = ratings.randomSplit([0.8, 0.2], seed=0)# Формируеммодель# Где maxIter-максимальное число итераций, regParam – задает параметр регуляризации в ALS, остальное – колонки используемые в вычислениях.als = ALS(maxIter=5, regParam=0.01, userCol="userId", itemCol="movieId", ratingCol="rating")# Обучаем на тренировочных данныхmodel = als.fit(train_data)# Формируем предсказания по всем пользователямpredictions = model.transform(test_data)predictions.show()# Фильмыпользователяsingle_user = ratings.filter(test_data['userId']==12).select(['movieId','userId'])single_user.show()# Фильмырекомендованныепользователюreccomendations = model.transform(single_user)reccomendations.orderBy('prediction',ascending=False).show()
2) Лутц, Марк. Python [Текст] : карманный справочник : [Python в вашем кармане : перевод с английского] / Марк Лутц. - 5-е изд. - Москва : Диалектика ; Санкт-Петербург : Диалектика, 2019. - 318 с.
3) Карау, Холден. Изучаем Spark : [Текст] : молниеносный анализ данных / Холден Карау, Энди Конвински, Патрик Венделл, Матей Захария. - Москва : ДМК Пресс, 2015.
Вопрос-ответ:
Что такое рекомендательная система и зачем она нужна?
Рекомендательная система - это программный инструмент, который предлагает пользователям персонализированные рекомендации на основе анализа их предыдущих действий, интересов и предпочтений. Она используется для предсказания, какие товары, услуги или контент будут наиболее релевантными и интересными для конкретного пользователя. Рекомендательные системы широко применяются в интернет-магазинах, стриминговых сервисах, социальных сетях и других платформах для улучшения пользовательского опыта и повышения продаж.
Какие алгоритмы используются в рекомендательных системах?
В рекомендательных системах могут применяться различные алгоритмы, включая коллаборативную фильтрацию, контентную фильтрацию, гибридные методы и машинное обучение. Коллаборативная фильтрация основана на анализе предпочтений пользователей и нахождении схожих пользователей или объектов. Контентная фильтрация учитывает характеристики объектов и интересы пользователя. Гибридные методы комбинируют различные подходы для получения более точных рекомендаций. Машинное обучение используется для создания моделей, которые могут предсказывать пользовательские предпочтения на основе исторических данных.
Какие данные используются в рекомендательных системах?
Для работы рекомендательных систем требуются данные о пользователях, объектах и взаимодействиях между ними. Это могут быть оценки пользователей, история покупок, просмотренные фильмы или другие данные, которые позволяют понять предпочтения и интересы пользователей. Дополнительные данные, такие как характеристики объектов или профили пользователей, могут также использоваться для улучшения рекомендаций. Важно иметь достаточное количество данных для обучения модели и достоверного предсказания предпочтений пользователей.
Какую структуру имеет рекомендательная система?
Структура рекомендательной системы может включать несколько компонентов. В основе системы находится модель, которая использует алгоритмы и данные для предсказания предпочтений пользователей. Модель может быть построена с использованием различных методов машинного обучения. Для работы с данными и обучения модели могут использоваться различные инструменты и библиотеки на Python, такие как Pandas, NumPy, Scikit-learn и другие. Важным компонентом рекомендательной системы является также система хранения данных, которая обеспечивает быстрый и удобный доступ к информации.
Что такое рекомендательная система?
Рекомендательная система - это программное обеспечение, которое предлагает пользователям персонализированные рекомендации по интересующим их темам, на основе анализа их предпочтений и поведения.
Какие основные принципы лежат в основе разработки рекомендательных систем?
Основные принципы разработки рекомендательных систем включают сбор и анализ информации о пользователях (предпочтения, история просмотров), использование алгоритмов для выявления сходств между пользователями и предметами, а также предоставление персонализированных рекомендаций.
Какова структура рекомендательной системы в Python 3?
Структура рекомендательной системы в Python 3 может включать модули для сбора данных о пользователях и предметах, модули для обработки и анализа данных, а также модули для предоставления рекомендаций пользователю.
Какую роль играет in-memory computing в разработке рекомендательных систем?
In-memory computing позволяет обрабатывать данные в оперативной памяти, что значительно ускоряет работу системы. Это особенно полезно при многократном доступе к загруженным данным пользователей, что делает рекомендательную систему более эффективной.