item2vec:协作过滤的项目向量化映射
来源:互联网 发布:大数据的影响因素 编辑:程序博客网 时间:2024/05/29 05:01
ITEM2VEC: NEURAL ITEM EMBEDDING FOR COLLABORATIVE FILTERING
介绍
计算items的相似性是现代推荐系统中的一个关键组成部分。过去,人们只是通过判断“有无”的方式来向量化系统中的各个items,这样的方式并不能很好地表示出items之间的关系,而且泛化能力很差。因此需要一种特殊的方法来将items映射到能够满足我们需求的向量上去。
后来研究人员研究出了使用SVD(奇异值分解,矩阵分解的一种)的方式来计算表示items的向量,这种方法从某种程度上已经满足了人们在计算items的相似性以及模型泛化能力的需求了。但是随着自然语言领域不断发展,研究人员开发出了一种叫做word2vec的神经语言模型,通过神经网络模型来隐式地计算出词汇表中的每一个单词的向量化表示,这种表示方式能够很好地描述单词间的语义和语法关系,从而使得模型具有相当的泛化能力,因此该方法及其变形已经被广泛地应用到NLP领域的各个方面。
所以,论文指出,可以使用相似的方法来计算协助过滤中所有items的向量化表示,从而隐式地得到items间的相互关系,使得我们能够更好地计算出items间的相似性以及提升模型的泛化能力。
word2vec简介
这里主要介绍word2vec的负采样skip-gram模型实现方法,后面简称SGNS。SGNS是一个基于神经网络的单词映射方法,目的在于找到一种单词的表示方式以至于能够在一个句子中捕捉单词和它周围的词之间的关系。
首先,从一个有限的词汇表
为了最大化上述的概率,必须要计算出
因此,研究人员开发出了一种叫做负采样的方法来简化这样的计算问题。负采样方法是要把上述的softmax函数替换成以下公式:
另一方面,为了解决罕见单词和频繁单词的不平衡问题,一些论文中提出了以下子采样方法。给定输入单词序列,对于每一个单词我们都使用这个概率公式
最终,
item2vec:SGNS应用到items的相似性
对于协同过滤的数据,items就是用户生成的数据集,而且有时候甚至无法得到用户和items集合之间的关系的。例如,我们可能得到一个商店得到的订单数据集,但是却没有关于是哪个用户的订单信息。换句话说,有一些场景是多个items数据集可能属于同一个用户,但是这样的信息并没有提供出来。
论文提出了把SGNS应用到基于item的协同过滤中。所以一旦我们意识到词序列事实上是等价于items的集合时,我们就能够把SGNS直接地应用到协同过滤数据中。
如果用items集合来取代词序列的话,items间的时空信息就会丢失,所以我们假定一个静态的环境,在这个环境中,共享同一个集合的items我们可以认为它们时相似的,无论它们是以什么样的顺序产生的。但是我们需要注意的是,这样的假设可能并不适用于其它场景,这里我们并不作讨论。
因为我们忽略了空间信息,所以我们把共享同一个集合的items对看成是一个正样本。这就意味着我们要根据items集合的大小确定上下文窗口的大小。具体地说,就是给定一个items集合,SGNS的目标函数我们可以修改成以下公式:
剩下的过程就和SGNS中所描述的一样了,因此我们把该方法命名为item2vec。
还需要说明的是,在论文中,作者把
总结
论文的实验表明,使用item2vec对协同过滤中的items计算相应的向量化表示,在items的相似度计算上比起SVD方法要更加优越,也就是说item2vec方法得到的items的向量化表示能够很好地提取items间的相似度特征。从应用上说,item2vec甚至能够应用到错误标签的检测和纠正上,所以item2vec具有很好的使用价值。
参考资料:
微软的研究人员发的论文
《ITEM2VEC: NEURAL ITEM EMBEDDING FOR COLLABORATIVE FILTERING》
- item2vec:协作过滤的项目向量化映射
- 万物向量化:用协作学习的方法生成更广泛的实体向量
- item2vec的理解
- 文本向量化的方法
- 词的向量化表示
- 量化成功的项目
- 向量化
- 基于物品的协作型过滤
- 矩阵的向量化及内积
- 文本的词条化和向量化
- 深度学习中向量化与非向量化计算的差别
- 推荐系统与协作过滤面临的主要问题
- Mahout文本向量化
- R向量化运算
- 循环向量化
- 向量化编程
- 神经网络向量化
- 3.2 向量化if
- 学习笔记TF056:TensorFlow MNIST,数据集、分类、可视化
- 常见的排序算法的稳定性分析
- 873B
- Android GridView 横向滚动 一行显示
- Python高级编程——9.元类
- item2vec:协作过滤的项目向量化映射
- 最长不下降子序列(n log n)做法
- iframe跨域问题思考
- waf的使用必看
- Java线程池的实现分析
- 一行代码帮你搞定全选的功能
- Unique Paths
- 扫雷 洛谷p2327
- 非对称加密 RSA算法