【问题标题】:Gensim: Word2Vec Recommender accuracy ImprovementGensim:Word2Vec Recommender 准确度改进
【发布时间】: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


【解决方案1】:

你没有提到你正在尝试什么协作过滤算法,但也许它比 Word2Vec 更好。 (Word2Vec 并不糟糕;你为什么期望它会更好?)

备用元参数可能会更好。

例如,window 是可能相互影响的令牌之间的最大距离,但每个目标令牌训练中使用的有效窗口从 1 到 window 随机选择,作为给出附近令牌的一种方式更多的重量。因此,当一些训练文本比window 大得多(如您的示例行中)时,一些相关性将被忽略(或权重不足)。除非排序非常重要,否则巨型 window (MAX_INT?) 可能会做得更好,甚至是与排序无关的相关方法(例如纯 PV-DBOW 中的 Doc2Vec dm=0 模式,每个令牌都用作文档标签)。

根据您拥有的数据量,您的size 可能太大或太小。不同的min_countnegative 计数、更大的“iter”/“epochs”或sample 级别可能会更好。 (甚至你已经修补过的东西也可能只有在其他更改到位后才会有所帮助。)

【讨论】:

  • 谢谢,你是对的,它没有做坏事,可能是 CF(第 2 项)在这个数据集中有优势。而且我还在想,由于窗口大小很小,如果电影发行年份之间存在差距,则很难推断出关系,这主要是因为我在模型中提供数据集的方式(按时间戳排序)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 2020-12-01
  • 2021-07-22
  • 2016-09-27
  • 1970-01-01
  • 2020-07-08
  • 1970-01-01
相关资源
最近更新 更多