如何为用户生成推荐的电影列表?知道我使用多层感知器来预测缺少的评分,(该网络已经受过训练) 我的模型是:
net = EmbeddingNet(
n_users=n, n_movies=m,
n_factors=15, hidden=[150, 100], dropouts=[0.2, 0.2])
训练后的最佳体重:
net.load_state_dict(best_weights)
训练后的嵌入用户和嵌入电影:
embedu = to_numpy(net.u.weight.data)
embedm = to_numpy(net.m.weight.data)
所以我的问题是:
我必须将用户的嵌入向量乘以电影的嵌入向量来形成用户电影矩阵吗?
pred = np.dot(embedu, embedm.transpose())
还是我必须直接进行网络模型预测?但此处预测的收视率等级小于(用户数X电影数)
pred = net(usersId, moviesId)
pred = pred.detach().numpy().tolist()
或者对于预测还有其他解决方案吗?因为我试图按照Fastai的教程来实现协作筛选系统...但是它们没有给出如何通过示例向用户生成推荐电影的列表
这是链接: https://github.com/fastai/fastai/blob/master/courses/dl1/lesson5-movielens.ipynb 谢谢你
答案 0 :(得分:0)
以下代码将每个用户和项的嵌入次数相乘,然后对其进行argsort排序,以返回降级的电影索引,即如果您想首先推荐收视率最高的电影,则按照推荐顺序。
(-embedu.dot(embedm.T)).argsort()