Это моя первая попытка машинного обучения. Я пишу очень простой механизм рекомендаций, используя набор данных yelp. Он написан на python, используя библиотеки pandas и numpy для (обработки данных). Я уже сузил данные сначала в ресторанах (миллионы), затем только в ресторанах в Вегасе (тысячи), а затем только в ресторанах с 3.5 звездами и выше с более чем 50 отзывами (сотнями). Также я сузил пользователей только тех, кто просмотрел как минимум 20% ресторанов. Наконец, я приехал в матрицу рейтингов, насчитывающую 100 пользователей в 1800 ресторанах.Как матричная декомпозиция помогает заполнить небольшую матрицу полезности/оценок для новых пользователей?
Однако я чувствую, что все еще редко разрешается давать (относительно) полезные рекомендации. Цель состоит в том, чтобы использовать сопоставление векторных расстояний на основе коллективного элемента, используя косинус-сходство.
Я читал о работе с разреженными матрицами, и консенсус, похоже, заключается в использовании матричной факторизации. Однако, похоже, что большинство из этих чтений относятся к текущим пользователям и используют матричную факторизацию в качестве алгоритма, который управляет рекомендацией для текущих пользователей при решении проблемы разреженности как побочного продукта. Мое понимание здесь правильно? То, что я ищу, - это метод, который сначала решает проблему разреженности, а затем использует косинусные векторные расстояния для руководства рекомендацией.
Если декомпозиция на самом деле способ пойти: какой метод sklearn.decomposition
следует использовать, например, PCA, SVD, NMF?
[[ 3, 0, 0, ..., 0, 0, 0],
[ 0, 0, 0, ..., 0, 0, 0],
[ 0, 0, 0, ..., 0, 4, 3],
...
[ 1, 0, 0, ..., 0, 0, 0],
[ 0, 0, 0, ..., 0, 0, 2],
[ 0, 0, 5, ..., 0, 1, 3]]
(100 пользователей X 1800 Рестораны)