SVD разложение:
может быть представлена как произведение трёх матриц , где .Если
, то данное разложение определено однозначно. В таком случае, если взять первые K столбцов матриц U и V, и первые K сингулярных чисел , то получится матрица R', минимизирующая норму Фробениуса, по всем матрицам ранга не больше, чем K:.
В таком случае строки матрицы U можно воспринимать как отношение пользователя к каждой из K скрытых тем (в оригинале стоит слово topic). Строки матрицы V как степень соответствия фильма одной из K скрытых тем. Сингулярные числа
: важность каждой из тем.Теперь, если у нас появляется новый пользователь с "большим" вектором оценок
, то его K-мерный вектор отношений к темам будет вычисляться следующим образом:(В справедливости данного формулы можно убедиться, подставив итоговый результат и вспомнив про ортогональность V). Обратный процесс: .
Основной недостаток данного подхода: итоговый результат зависит как от указанных оценок, так и от тех, которые мы не знаем (их обычно принимают равными 0). Нам хочется придумать модель, которая обучалась бы только на известных оценках.
Напомним, что в SVD разложении минимизировалась норма Фробениуса:
. Предсказание .Идея: минимизировать только те кусочки нормы Фробениуса , где оценка пользователя определена:
.Для решения данной проблемы воспользуемся методом SGD: будем случайно выбирать пару (u, i).
.
Преимущества данного подхода:
Нет неопределённости;
Легко добавить регуляризацию:
;Можно учесть неотрицательность компонент p и q, воспользовавшись методом проекций градиента;
Достаточно быстр.