Наиболее распространенный метод для систем рекомендаций часто связан с совместной фильтрацией (CF), где он полагается на прошлый набор данных пользователя и элемента. Два популярных подхода к CF - это модели скрытых факторов, которые извлекают особенности из матриц пользователей и элементов, и модели соседства, которые находят сходство между продуктами или пользователями.
Модель соседства - это элементно-ориентированный подход к выявлению предпочтений пользователя на основе оценок, выставленных пользователем для аналогичных элементов. С другой стороны, модели скрытых факторов, такие как разложение по сингулярным значениям (SVD), извлекают признаки и корреляцию из матрицы пользовательских элементов. Например, когда это фильмы разных категорий. SVD будет генерировать факторы при рассмотрении пространства измерений, таких как действие против комедии, Голливуд против Болливуда или Marvel против Диснея. В основном мы сосредоточимся на модели скрытых факторов для подхода сингулярного разложения (SVD).
В этой статье вы узнаете о декомпозиции по сингулярным значениям и усеченном SVD рекомендательной системы:
(1) Введение в разложение по сингулярным числам
(2) Введение в усеченную SVD
(3) Практический опыт написания кода на Python по матричной факторизации.
Введение в разложение по сингулярным числам
Когда дело доходит до уменьшения размерности, разложение по сингулярным значениям (SVD) является популярным методом в линейной алгебре для матричной факторизации в машинном обучении. Такой метод сжимает размерность пространства с N-измерения до K-измерения (где K ‹N) и уменьшает количество функций. SVD строит матрицу со строкой пользователей и столбцами элементов, а элементы задаются оценками пользователей. Декомпозиция по сингулярным значениям разбивает матрицу на три другие матрицы и извлекает факторы из факторизации матрицы высокого уровня (пользователь-элемент-рейтинг).
Матрица U: сингулярная матрица (пользователь * скрытые факторы)
Матрица S: диагональная матрица (показывает силу каждого скрытого фактора)
Матрица U: сингулярная матрица (элемент * скрытые факторы)
Из матричной факторизации скрытые факторы показывают характеристики предметов. Наконец, создается матрица полезности A формы m * n. Конечный результат матрицы A уменьшает размерность за счет выделения скрытых факторов. Из матрицы A он показывает отношения между пользователями и элементами, отображая пользователя и элемент в r -мерное скрытое пространство. Вектор X_i рассматривается как каждый элемент, а вектор Y_u рассматривается как каждый пользователь. Рейтинг выставляется пользователем для элемента как R_ui = X ^ T_i * Y_u. Потери могут быть минимизированы за счет разницы квадратов ошибок между произведением R_ui и ожидаемым рейтингом.
Регуляризация используется, чтобы избежать переобучения и обобщить набор данных путем добавления штрафа.
Здесь мы добавляем член смещения, чтобы уменьшить ошибку фактического значения по сравнению с предсказанным моделью.
(u, i): пара пользователь-элемент
μ: средний рейтинг всех элементов
bi: средний оценка элемента i минус μ
bu: средняя оценка пользователя u минус μ
Уравнение ниже добавляет член смещения и член регуляризации:
Введение в усеченный СВД
Когда дело доходит до техники матричной факторизации, усеченное разложение по сингулярным значениям (SVD) является популярным методом для создания признаков, которые делят матрицу M на три матрицы U, Σ и V. Другой популярный метод - анализ главных компонентов (PCA). Усеченный SVD имеет сходство с PCA, в то время как SVD создается из матрицы данных, а факторизация PCA генерируется из ковариационной матрицы. В отличие от обычных SVD, усеченный SVD производит факторизацию, в которой количество столбцов может быть указано для количества усечений. Например, для данной матрицы n x n усеченный SVD генерирует матрицы с указанным количеством столбцов, тогда как SVD выводит n столбцов матриц.
Преимущества усеченного SVD перед PCA
Усеченный SVD может работать с разреженной матрицей для генерации матриц признаков, тогда как PCA будет работать со всей матрицей для вывода ковариационной матрицы.
Практический опыт работы с кодом на Python
Описание данных:
Метаданные включают 45 000 фильмов, перечисленных в полном наборе данных MovieLens, и фильмы выпущены до июля 2017 года. Актеры, съемочная группа, ключевые слова сюжета, бюджет, доход, плакаты, даты выпуска, языки, производственные компании, страны, подсчет голосов TMDB и средние результаты голосования указаны в набор данных. Шкала оценок от 1 до 5, взято с официального сайта GroupLens. Набор данных ссылается на набор данных Kaggle.
Рекомендации фильмов с использованием SVD
Разложение по сингулярным значениям (SVD) - это метод совместной фильтрации для рекомендаций фильмов. Целью реализации кода является предоставление пользователям рекомендаций фильмов на основе скрытых функций матриц элемент-пользователь. Код покажет вам, как использовать модель латентных факторов SVD для матричной факторизации.
Предварительная обработка данных
Произведите выборку рейтингового набора данных в случайном порядке и сгенерируйте характеристики фильма по жанрам. Затем пометьте все фильмы и пользователей соответствующими уникальными идентификаторами.
num of users: 1105 num of movies: 3000
Модель Производительность
В течение каждого прогона эпохи rmse уменьшается, и конечный результат достигает rmse 0,57. Количество размеров партии будет влиять на количество входных данных, вводимых в модель для каждого прогона. Размер пакета, скорость обучения и срок регуляризации настраиваются для оптимизации производительности модели.
RMSE 2.1727233 RMSE 2.101482 RMSE 2.0310202 RMSE 1.9610059 RMSE 1.8911659 RMSE 1.8213558 RMSE 1.7515925 RMSE 1.681992 RMSE 1.612707 RMSE 1.543902 RMSE 1.4757496 RMSE 1.408429 RMSE 1.3421307 RMSE 1.277059 RMSE 1.2134355 RMSE 1.1514966 RMSE 1.0914934 RMSE 1.0336862 RMSE 0.9783424 RMSE 0.9257237 RMSE 0.87606686 RMSE 0.82956517 RMSE 0.7863303 RMSE 0.7463626 RMSE 0.7095342 RMSE 0.67563176 RMSE 0.6445249 RMSE 0.6163493 RMSE 0.5914116 RMSE 0.5701855
Рекомендации фильмов с использованием усеченного SVD
Первые 10 компонентов матрицы фильма пользователя x сгенерированы посредством усеченного SVD. В реконструированной матрице есть скрытые особенности, показывающие корреляцию с оценками пользователей для прогнозирования рейтинга.
Поскольку столбец жанров находится в списке формата словаря, столбец предварительно обрабатывается и извлекается с названиями нескольких жанров, разделенными | формат.
Выполнение усеченного SVD для матрицы пользователя и фильма
Возьмите 3000 случайных оценок пользователей из набора данных и создайте сводную таблицу с индексом Userid и столбцами MovieID со значением рейтинга. Затем пользовательская матрица генерируется с 2921x1739 пользователями пользовательской матрицей.
Возьмите 3000 случайных выборок фильмов из набора данных и создайте сводную таблицу с индексом MovieID и столбцами Userid со значением рейтинга. Затем матрица фильма генерируется с помощью матрицы фильма с 3000x1105 пользователей.
Как из пользовательской, так и из рейтинговой матрицы 80% данных используется для данных обучения, а остальные 20% - для данных тестирования. Для данных поезда восстановленная матрица создается из 10 компонентов усеченного SVD. Длина строки * столбца матриц равна movie_features.shape = (2400, 10) и user_features.shape = (2336, 10).
Визуализация TSNE
TSNE преобразует многомерное пространство данных в низкоразмерное пространство данных и визуализирует его. Недоумение - это одна из настраиваемых функций, позволяющая сбалансировать локальные и глобальные данные и предложить количество ближайших соседей каждой точки.
Возьмите сложность 5 и 2 компонентов фильма, и сюжет создается и показывает группы фильмов. Коррелированные фильмы сгруппированы по скрытым функциям, полученным с помощью метода TSNE.
Подготовьте данные поезда и цели
Метка целевых данных - это средний рейтинг пользователей, округленный до 1 десятичной точки. Всего 501 фильм и 1108 оценок пользователей. Размер поезда и целевые данные: data.shape = (3000, 1105) и targets.shape = (3000,).
Обучение градиентного регрессора скрытым функциям
Обучите модель GradientBoostingRegressor со скоростью обучения 0,1 и 200 оценок. Функция потерь рассчитывается с помощью среднеквадратичной ошибки.
Окончательный прогноз - это средняя оценка каждого фильма по всем оценкам, полученным от пользователей. Итоговая MSE составляет около 0,51, что вполне оптимально для модели среднего рейтинга.
Iter Train Loss Remaining Time 1 0.3735 5.43s 2 0.3710 5.12s 3 0.3689 4.89s 4 0.3672 4.76s 5 0.3656 4.67s 6 0.3641 4.64s 7 0.3628 4.59s 8 0.3614 4.54s 9 0.3601 4.52s 10 0.3589 4.51s 20 0.3480 4.14s 30 0.3391 3.83s 40 0.3316 3.59s 50 0.3245 3.35s 60 0.3174 3.14s 70 0.3118 2.91s 80 0.3063 2.68s 90 0.3013 2.45s 100 0.2968 2.22s 200 0.2620 0.00s Final MSE:0.5118555681581297
В заключение:
- Декомпозиция по сингулярным значениям разбивает три матрицы, а скрытые факторы показывают характеристики элементов. Уменьшает размер за счет извлечения скрытых факторов. Добавляя член регуляризации и смещения, он оптимизирует производительность модели за счет минимизации среднеквадратичной ошибки.
- Усеченный SVD генерирует матрицы с указанным количеством столбцов, тогда как SVD выводит n столбцов матриц. Это уменьшает количество выходных данных и лучше работает с разреженными матрицами для выходных данных.
Ссылка
- Использование усеченного SVD для уменьшения размерности
https://subscription.packtpub.com/book/big_data_and_business_intelligence/9781783989485/1/ch01lvl1sec21/using-truncated-svd-to-reduce-dimensionality - Рекомендации фильмов с использованием усеченного SVD
https://github.com/saurabhmathur96/movie-recommendations/blob/master/notebooks/Recommending%20movies%20using%20Truncated%20SVD.ipynb
3. Разложение по сингулярным значениям (SVD) и его применение в рекомендательной системе
https://analyticsindiamag.com/singular-value-decomposition-svd-application-recommender-system/#:~:text=In%20the % 20context% 20of% 20the, учитывая% 20to% 20items% 20by% 20users .
4. Рекомендации фильмов с использованием матричной факторизации SVD
https://github.com/saurabhmathur96/movie-recommendations/blob/master/notebooks/Recommending%20movies%20using%20SVD%20Matrix%20Factorisation.ipynb