为用户生成电影的推荐列表

问题描述 投票:0回答:1

如何为用户生成推荐的电影列表?知道我使用多层感知器来预测缺少的评分,(该网络已经受过训练)我的模型是:

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谢谢

python neural-network recommendation-engine collaborative-filtering
1个回答
0
投票

下面的代码将每个用户和项的嵌入相乘,然后对其进行argsort排序,以返回降级的电影索引,即如果您想首先推荐收视率最高的电影,则按照推荐顺序。

(-embedu.dot(embedm.T)).argsort()
© www.soinside.com 2019 - 2024. All rights reserved.