Что такое матричная факторизация?

Простая матричная факторизация — это метод разложения одной матрицы в произведение двух матриц.

например: матрица размерности mxn может быть разложена как mxd и dxn

Думайте о любом наборе данных взаимодействия пользователя с элементом как о матрице, которая имеет реальные значения (рейтинги).

что он на самом деле делает с нашим набором данных о взаимодействии с пользовательскими элементами?

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

мы можем предположить, что матрица marix mxd обозначает симпатии пользователя к другому жанру фильма, а dxn - как смесь жанров в фильме. Путем скалярного произведения этой матрицы мы получим нашу матрицу взаимодействия пользователя и элемента для наши фильмы.

Как найти правильную факторизацию?

Одним словом: градиентный спуск

Сначала мы примем некоторые случайные значения факторов матрицы A, и эти значения будут обновлены на основе потерь (обычно RSS^) между произведениями факторов и A методом градиентного спуска.

Как эти факторы используются в рекомендациях?

Предположим, что мы узнали некоторые факторы для матрицы A (матрица взаимодействия пользователя и элемента для фильмов).

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

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

^скрытые функции — функции, которые не упоминаются явно

^RSS — сумма квадратов остатков