Наиболее распространенный метод для систем рекомендаций часто связан с совместной фильтрацией (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

В заключение:

  1. Декомпозиция по сингулярным значениям разбивает три матрицы, а скрытые факторы показывают характеристики элементов. Уменьшает размер за счет извлечения скрытых факторов. Добавляя член регуляризации и смещения, он оптимизирует производительность модели за счет минимизации среднеквадратичной ошибки.
  2. Усеченный SVD генерирует матрицы с указанным количеством столбцов, тогда как SVD выводит n столбцов матриц. Это уменьшает количество выходных данных и лучше работает с разреженными матрицами для выходных данных.

Ссылка

  1. Использование усеченного SVD для уменьшения размерности
    https://subscription.packtpub.com/book/big_data_and_business_intelligence/9781783989485/1/ch01lvl1sec21/using-truncated-svd-to-reduce-dimensionality
  2. Рекомендации фильмов с использованием усеченного 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