Фото: Прадип Нихте
Один из методов, используемых для построения системы рекомендаций, называется коллаборативной фильтрацией.
Идея совместной фильтрации заключается в том, что если пользователь А и пользователь Б вместе смотрели какие-то фильмы, то у них схожие предпочтения, и пользователь А с большей вероятностью будет смотреть фильмы, просмотренные пользователем Б, чем любые случайные предпочтения пользователя.
Но как нам найти похожих пользователей для данного пользователя?
Мы можем представить пользователей и фильмы с помощью матрицы (или электронной таблицы).
Каждая строка представляет каждого пользователя, а каждый столбец представляет каждый фильм.
Каждая ячейка в матрице равна 1 или 0, что говорит нам о том, смотрел ли пользователь фильм или нет.
Одним из способов вычисления сходства между двумя пользователями (строками) является использование скалярного произведения или косинусного сходства.
Давайте выберем пользователя А; как только мы сравним строку пользователя A с каждой строкой, мы сможем найти наиболее похожую строку; назовем его Пользователь X.
Затем выберите фильм пользователя X, который еще не смотрел пользователь A, и покажите его пользователю A.
Можем ли мы улучшить описанную выше технику?
- Вместо того, чтобы искать одного похожего пользователя, мы можем увидеть топ-5 похожих пользователей и показать по одному фильму от каждого пользователя или порекомендовать фильм, который видели все пять похожих пользователей, но не смотрел пользователь А.
- Представьте каждую ячейку в матрице оценкой (от 1 до 5), данной пользователем для этого фильма, вместо 1 или 0.
- Поскольку в системе будут миллионы пользователей и тысячи фильмов, матрица станет огромной, мы можем использовать методы матричной факторизации для эффективного представления пользователей и фильмов.