【发布时间】:2018-02-10 06:32:46
【问题描述】:
我正在尝试使用出色的 gensim 库在 https://arxiv.org/pdf/1603.04259.pdf 中实现类似的功能,但是与协作过滤相比,我无法提高结果质量。
我有两个模型,一个在 Apache Spark 上构建,另一个在 grouplens 2000 万评级数据集上使用 gensim Word2Vec。我的 apache spark 模型托管在 AWS http://sparkmovierecommender.us-east-1.elasticbeanstalk.com 我正在本地运行 gensim 模型。然而,当我比较结果时,我看到 CF 模型 10 次中有 9 次的结果更好(如下例更类似于搜索的电影 - 对漫威电影的亲和力)
例如:- 如果我搜索雷神电影,我会得到以下结果
Gensim
- 美国队长:第一复仇者 (2011)
- X 战警:第一战 (2011)
- 类人猿星球的崛起 (2011)
- 钢铁侠2 (2010)
- X 战警起源:金刚狼 (2009)
- 绿灯侠 (2011)
- 超级8(2011)
- Tron:Legacy (2010)
- 变形金刚:月黑之时 (2011)
CF
- 美国队长:第一复仇者
- 钢铁侠2
- 雷神:黑暗世界
- 钢铁侠
- 复仇者联盟
- X 战警:第一战
- 钢铁侠3
- 星际迷航
- 美国队长:冬日战士
下面是我的模型配置,到目前为止我已经尝试过使用 window、min_count 和 size 参数但没有太大的改进。
word2vec_model = gensim.models.Word2Vec(
seed=1,
size=100,
min_count=50,
window=30)
word2vec_model.train(movie_list, total_examples=len(movie_list), epochs=10)
感谢您提供这方面的任何帮助。
【问题讨论】:
-
你能发布movie_list中的示例行吗?每行应该是用户喜欢的一组电影。您是否使用电影标题唯一 ID 或您的集合中的电影名称?
-
用户观看的电影更多,因为数据集没有类似的特征样本输入 ['1079', '47', '21', '648', '736', '32', '1'、'141'、'95'、'780'、'25'、'62'、'805'、'562'、'36'、'671'、'1356'、'29'、'748 ','802','733','832','14','637','1073','786','1183','784','608','766','1357', '494'、'1049'、'68'、'628'、'52'、'1046'、'83'、'1111'、'4424'、'798'、'376'、'9'、'836 ','100','640','6','704','707','1419','110','457','356','150','296','1080', '380', '260', '288', '198', '1198', '34'] 这些是用户观看的电影列表。
标签: word2vec gensim recommendation-engine