Выберите элемент прогноза из фрейма данных прогноза в Python - PullRequest
0 голосов
/ 04 мая 2020

Я очень новичок в DataScience / Pandas в целом. Я в основном следовал этому руководству о рекомендательных системах.

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

Исходный фрейм данных выглядит следующим образом: enter image description here

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

rating_with_totalRatingCount = rating_with_totalRatingCount.drop_duplicates(['userID', 'movieTitle'])
ratingPivot = rating_with_totalRatingCount.pivot(index = 'movieTitle', columns = 'userID', values = 'userRatingScore').fillna(0).T

enter image description here

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

U, sigma, Vt = svds(ratingPivot, k = 50)

sigma = np.diag(sigma)

all_user_predicted_ratings = np.dot(np.dot(U, sigma), Vt) + user_ratings_mean.values.reshape(-1, 1)
preds_df = pd.DataFrame(all_user_predicted_ratings, columns = ratingPivot.columns)

enter image description here

У меня вопрос, как я могу использовать этот прогнозный фрейм данных, чтобы дать кому-то фильмы, наиболее похожие на конкретный c mov ie in Python?

1 Ответ

1 голос
/ 04 мая 2020

Итак, теоретически, вот как это работает -

  1. Сначала вы создаете так называемую матрицу утилит. Эта служебная матрица представляет собой матрицу размера (пользовательский элемент X) (в вашем случае вы создали ее с помощью сводной диаграммы). Матрица полезности может иметь разные значения в качестве мер. Например, это может быть mov ie rating

  2. Матрица полезности обычно может иметь много нулевых значений (если пользователь не просматривал mov ie, то его рейтинг для этого mov ie не существовал бы)

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

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

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

  6. «Сходство» основано на том, какой показатель вы использовали в матрице полезности. на первом месте в данном случае рейтинги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...