Что такое матричная факторизация?
Простая матричная факторизация — это метод разложения одной матрицы в произведение двух матриц.
например: матрица размерности mxn может быть разложена как mxd и dxn
Думайте о любом наборе данных взаимодействия пользователя с элементом как о матрице, которая имеет реальные значения (рейтинги).
что он на самом деле делает с нашим набором данных о взаимодействии с пользовательскими элементами?
Это помогает нам находить функции (скрытые функции) пользователей и элементов (скажем, фильмов), умножая эти две матрицы, мы получаем наш набор данных (матрица взаимодействия пользователя и элемента).
мы можем предположить, что матрица marix mxd обозначает симпатии пользователя к другому жанру фильма, а dxn - как смесь жанров в фильме. Путем скалярного произведения этой матрицы мы получим нашу матрицу взаимодействия пользователя и элемента для наши фильмы.
Как найти правильную факторизацию?
Одним словом: градиентный спуск
Сначала мы примем некоторые случайные значения факторов матрицы A, и эти значения будут обновлены на основе потерь (обычно RSS^) между произведениями факторов и A методом градиентного спуска.
Как эти факторы используются в рекомендациях?
Предположим, что мы узнали некоторые факторы для матрицы A (матрица взаимодействия пользователя и элемента для фильмов).
Факт: некоторые пользователи могут не давать оценки некоторым фильмам, поэтому мы можем предположить, что конкретный пользователь не смотрел этот фильм, в этом случае значения для этого фильма по отношению к этому пользователю будут равны нулю в нашем наборе данных.
поскольку мы узнали фактор для нашего набора данных, который почти аппроксимирует все значения в наборе данных, мы можем заменить эти нули (т.е. насколько фильм понравится пользователю), умножив соответствующие значения из факторов.
^скрытые функции — функции, которые не упоминаются явно
^RSS — сумма квадратов остатков