Ниже представлена ​​пятая часть нашего проекта.

СИСТЕМА РЕКОМЕНДАЦИЙ

Система рекомендаций на основе содержания

YouTube, Netflix и другие различные потоковые платформы используют механизмы рекомендаций, чтобы значительно увеличить время, которое люди тратят на использование своих сервисов. Amazon и другие сайты электронной коммерции используют рекомендации для улучшения продаж продуктов, которые в противном случае остались бы незамеченными потребителями.

Здесь мы разработали механизм рекомендаций на основе контента, который рекомендует похожие песни в зависимости от исполнителей и жанров. Это улучшит продажи, поскольку клиенты будут лучше осведомлены о других жизнеспособных песнях, что, вероятно, приведет к покупке таких песен. Мы используем подмножество всего набора данных из-за вычислительных ограничений. Функции, которые движок использует для выдачи рекомендаций, можно легко масштабировать, чтобы включить еще больше функций при наличии достаточного количества данных.

Выбор функций и обработка данных

Мы использовали файл «grammyAlbums_1999–2019.csv» из-за его небольшого размера. Механизм рекомендаций на основе контента будет использовать «Исполнитель» и «Жанр» для предоставления рекомендаций. Как указано выше, это можно легко масштабировать, чтобы включить больше функций.

Чтобы обработать текстовую информацию, нам нужно было объединить тексты в разделах «Исполнитель» и «Жанр» в одну строку, которая затем будет передана в векторизатор для обработки. Чтобы избежать неправильного распознавания текстовых данных, нам пришлось удалить все ненужные пробелы, знаки, символы и знаки препинания, включенные в данные. Например, [Lady Gaga & Bradley Cooper] будет распознаваться как 5 отдельных слов, но мы этого не хотим. Таким образом, очистив пробелы и символы, мы получим [ladygaga bradleycooper], которые будут распознаны как два слова.

Каждый столбец данных должен быть тщательно проанализирован, чтобы убедиться, что результирующая текстовая информация будет в соответствующем формате. Две функции, которые мы использовали, требовали разных процедур обработки для обеспечения точности результирующей строки.

Методология

Частота термина – обратная частота документа (TF-IDF)

TF-IDF — это метод, который присваивает веса словам в зависимости от частоты их появления. Это присвоит числовое значение строке метаданных, которую мы создали выше, которая затем будет оцениваться методом косинусного сходства. Мы также экспериментировали с методом count-vectorizer, но его результаты были хуже, чем у метода TF-IDF.

После выполнения вышеуказанных процедур результирующая строка будет примерно такой [ladygaga bradleycooper pop]. Здесь содержится вся метаданная о поп-песне «Shallow» с участием певцов Леди Гаги и Брэдли Купера. Каждая песня в файле данных будет иметь такую ​​строку, и все эти строки будут переданы в TfidfVectorizer для создания матрицы TF-IDF.

Косинусное сходство

Есть несколько мер подобия, которые мы пробовали (евклидово, гиперболическое касательное ядро), и косинусное сходство показало наилучшие результаты. Косинусное сходство измеряет угол между двумя векторами и использует его, чтобы определить, насколько похожи два вектора. С помощью этих мер мы можем затем ранжировать их с учетом входных данных и вычислить рекомендации.

Функция рекомендации

Входными данными будет название песни, и функция найдет список значений косинусного сходства для всех остальных песен в файле данных. Затем этот список будет отсортирован на основе наибольшего сходства и будет найдено 10 лучших песен, связанных с 10 лучшими оценками.

Результаты

В целом, выходные рекомендации были в основном хорошими с некоторыми случайными предложениями. В список рекомендаций будут включены песни одного исполнителя и одного жанра. Это работает для большинства заголовков, но для некоторых заголовков результаты будут очень случайными. Это ожидается из-за характера механизмов рекомендаций и обработки естественного языка. Однако случайность хороша с точки зрения бизнеса, потому что пользовательские данные с онлайн-платформ потоковой передачи часто предполагают, что у пользователей будут случайные предпочтения, которые не придерживаются определенного набора правил.

Быстрый пример, учитывая песню «Это Америка» Чайлдиша Гамбино (жанр общий), 10 лучших рекомендаций:

Как видите, Redbone принадлежит Childish Gambino, и система рекомендаций подобрала его. У Чайлдиша Гамбино только одна песня, потому что у него в наборе данных всего две песни («This is American» и «Redbone»). Остальные песни были выбраны исходя из жанра входной песни, которая в целом.

Дальнейшее улучшение

Механизм рекомендаций можно улучшить, включив совместную фильтрацию пользовательских данных. Это послужит хорошей отправной точкой для движка, основанного на контенте. Можно добавить еще один уровень алгоритма рекомендаций на основе числовых признаков в наборе данных. Компания также может использовать прошлые пользовательские данные для разработки слоев предварительной фильтрации. Например, если пользователь заканчивает слушать поп-песню, а затем сразу же ищет классическую музыку, то алгоритм может добавить несколько рекомендаций по классической музыке для пользователей, которые слушают поп-музыку. Эта случайность просто не может быть реализована только механизмом рекомендации контента, и для этого потребуются прошлые пользовательские данные. Таким образом, мы можем вручную создать желаемую «случайность», которая соответствовала бы бизнес-целям.

Ссылки

Хайденрайх, Х. (2018, 24 августа). Обработка естественного языка: векторизация счета с помощью scikit-learn. Среда. https://towardsdatascience.com/natural-language-processing-count-vectorization-with-scikit-learn-e7804269bb5e

Кластеризация документов с помощью Python. (н.д.). Брэндонроуз. Получено 16 апреля 2021 г. с https://brandonrose.org/clustering.

sklearn.feature_extraction.text.CountVectorizer — документация scikit-learn 0.24.1. (н.д.). Scikit-Learn. Получено 16 апреля 2021 г. с https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html

6.2. Извлечение функций — документация scikit-learn 0.24.1. (н.д.). Учиться больно. Получено 16 апреля 2021 г. с https://scikit-learn.org/stable/modules/feature_extraction.html.

sklearn.metrics.pairwise.cosine_similarity — документация scikit-learn 0.24.1. (н.д.). Учиться больно. Получено 16 апреля 2021 г. с https://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise.cosine_similarity.html

Гикс для гиков. (2019, 3 октября). Реализуйте сигмовидную функцию с помощью Numpy. https://www.geeksforgeeks.org/implement-sigmoid-function-using-numpy/

Васи, А. В. (2017, 2 февраля). Создание матрицы TF-IDF Python 3.6. Переполнение стека. https://stackoverflow.com/questions/42002859/creating-a-tf-idf-matrix-python-3-6

Лавин, MJ (2019, 13 мая). Анализ документов с помощью TF-IDF. Историк программирования. https://programminghistorian.org/en/lessons/analyzing-documents-with-tfidf

Скотт, В. (2019, 21 мая). TF-IDF с нуля в Python на реальном наборе данных. Среда. https://towardsdatascience.com/tf-idf-for-document-ranking-from-scratch-in-python-on-real-world-dataset-796d339a4089

Чен, С. (2021, 13 января). Что такое система рекомендаций и как она работает? Appier. https://www.appier.com/blog/what-is-a-recommendation-engine-and-how-does-it-work/

Шарма, П. (2020, 23 декабря). Подробное руководство по созданию механизма рекомендаций с нуля (на Python). Analytics Vidhya. https://www.analyticsvidhya.com/blog/2018/06/comprehensive-guide-recommendation-engine-python/

Тан, Дж. (2020, 11 ноября). Как работать с несбалансированными данными в Python. На пути к науке о данных. Получено с https://towardsdatascience.com/how-to-deal-with-imbalanced-data-in-python-f9b71aba53eb

Браунли, Дж. (2016, 27 августа). Важность функций и выбор функций с помощью XGBoost в Python. Мастерство машинного обучения. Получено с https://machinelearningmastery.com/feature-importance-and-feature-selection-with-xgboost-in-python/

Руководство для разработчиков Amazon. Настройте модель XGBoost. Получено с https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost-tuning.html

Документация XGBoost. Примечания по настройке параметров. Извлекаются из

https://xgboost.readthedocs.io/en/latest/tutorials/param_tuning.html

Документация XGBoost. Параметры XGBoost. Извлекаются из

https://devdoc.net/bigdata/xgboost-doc-0.81/parameter.html

RandomUnderSampler. Получено с https://imbalanced-learn.org/stable/references/generated/imblearn.under_sampling.RandomUnderSampler.html

Сбалансированный случайный лесной классификатор. Получено с https://imbalanced-learn.org/stable/references/generated/imblearn.ensemble.BalancedRandomForestClassifier.html

Каггль. (2017). Несбалансированные данные и почему НЕ следует использовать кривую ROC.

Получено с https://www.kaggle.com/lct14558/imbalanced-data-why-you-should-not-use-roc-curve

Хардинг, А. (2021, 13 марта). Получают ли артисты деньги за получение премии «Грэмми»? Вот сколько стоят Грэмми. Шоу-бизнес. Извлекаются из

https://www.cheatsheet.com/entertainment/do-artists-get-money-winning-grammy-award-how-much-grammys-worth.html/

Oheix, J. (18 декабря 2018 г.). Обнаружение плохих отзывов клиентов с помощью НЛП. На пути к науке о данных. Получено с https://towardsdatascience.com/detecting-bad-customer-reviews-with-nlp-d8b36134dc7e