Скорректированное косинусное сходство для совместной пользовательской фильтрации - PullRequest
0 голосов
/ 16 января 2020

Я работаю над алгоритмом совместной фильтрации, основанным на интересе пользователя и разнице рейтингов Ссылка IEEE

, чтобы найти скорректированное косинусное сходство. Я сослался на эту ссылку

но ссылка предоставила реализацию для косинусного подобия, скорректированного на предмет-элемент

Хотя мне удалось изменить его для косинусного подобия, настроенного пользователем, но я не уверен насчет моей реализации

пожалуйста, проверьте мой реализации и предложить изменения, если таковые имеются

формула для пользователя. Настроенное косинусное сходство

Ra, i - рейтинг пользователя ua для элемента i. Здесь Ra - среднее значение рейтинга пользователя. Ia - это набор предметов, который пользователь оценил. Ib - это набор элементов, который пользователь ub оценил.

Реализация ссылки:

import numpy as np
from scipy.spatial.distance import pdist, squareform
M = np.asarray([[2, 3, 4, 1, 0], 
                [0, 0, 0, 0, 5], 
                [5, 4, 3, 0, 0], 
                [1, 1, 1, 1, 1]])
M_u = M.mean(axis=1)
item_mean_subtracted = M - M_u[:, None]
similarity_matrix = 1 - squareform(pdist(item_mean_subtracted.T, 'cosine'))

Моя реализация:

M = np.asarray(user_item_matrix)
# print(M[0].mean())
# print(M)
#User_mean = M[user_id].mean()
#print(User_mean)
M_u = M.mean(axis=1)
# print(pd.DataFrame(M_u))
item_mean_subtracted = M - M_u[:,None]
# print(pd.DataFrame(item_mean_subtracted))
# print(item_mean_subtracted.head())
similarity_matrix = 1 - squareform(pdist(item_mean_subtracted, 'cosine'))
similarity_matrix
return pd.DataFrame(similarity_matrix)

Снимок экрана скорректированной матрицы сходства косинусов

user_item_matrix is:

user_item_matrix = rating_data.pivot(
index='user id',
columns='movie id',
values='rating'
).fillna(0)
# convert dataframe of movie features to scipy sparse matrix

Снимок экрана user_item_matrix

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