目录
简介
最早看到Item2vec是微软研究院的Neural Item Embedding for Collaborative Filtering,发表于2016年ICML。本文主要是对这篇论文做一些介绍,Item2vec主要思想是借鉴了Word2Vec,并且采用SGNS(Skip-gram + Negative Sampling,思想是用中心词预测周围的词)的方法来生成物品向量,最后只需要计算当前浏览的物品与其它物品的向量相似度,从而找到相似物品。一般像电商网站的“看了也看”、“买了也买”、“相似物品”模块比较适合应用Item2Vec算法。
主要做法是把item视为word,用户的行为序列视为一个集合,item间的共现为正样本,并按照item的频率分布进行负样本采样,缺点是相似度的计算还只是利用到了item共现信息,1).忽略了user行为序列信息; 2).没有建模用户对不同item的喜欢程度高低。
Item2Vec这个名词的由来:在隐空间中产生的item embeding向量用在基于item的协同过滤,这种方法称之为item2vec。(原文:we name Item2Vec for item-based CF that produces embedding for items in a latent space)
Item2vec中把用户浏览的商品集合等价于word2vec中的word的序列,即句子(忽略了商品序列空间信息spatial information) 。出现在同一个集合的商品对视为 positive。利用SGD方法学习的目标函数max,得到每个商品的embedding representation,商品之间两两计算cosine相似度即为商品的相似度。
从word2vec到item2vec
在word2vec诞生之后,embedding的思想迅速从NLP领域扩散到几乎所有机器学习的领域,我们既然可以对一个序列中的词进行embedding,那自然可以对用户购买序列中的一个商品,用户观看序列中的一个电影进行embedding。而广告、推荐、搜索等领域用户数据的稀疏性几乎必然要求在构建DNN之前对user和item进行embedding后才能进行有效的训练。
具体来讲,如果item存在于一个序列中,item2vec的方法与word2vec没有任何区别。而如果我们摒弃序列中item的空间关系,在原来的目标函数基础上,自然是不存在时间窗口的概念了,取而代之的是item set中两两之间的条件概率。
懂了w2v,把w换成i就是i2v了。有点小区别就是,w2v里样本是“句子”产生的,所以是有顺序的,i2v里的item其实是set,可以认为无序。也就是说,一个用户的所有观看(举例而言的,其实有时候观看完成度太低是不算正样本的,而且会有长度限制、时效限制)构成set,set里item两两互为正样本。
链接:https://www.jianshu.com/p/0ecc53bba169
参考
Item2vec
Item2Vector原理、在推荐系统中的应用、代码注解
Item2vec
https://arxiv.org/vc/arxiv/papers/1603/1603.04259v2.pdf