首页 > 解决方案 > 为用户生成推荐的电影列表

问题描述

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

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

标签: pythonneural-networkrecommendation-enginecollaborative-filtering

解决方案


以下代码将每个用户和项目嵌入相乘,然后对其进行 argsorts 以返回按降序排列的电影索引,即如果您想首先推荐评分最高的电影,您会推荐的顺序。

(-embedu.dot(embedm.T)).argsort()

推荐阅读