1. 首页 > 娱乐 > 娱乐八卦

达观推荐算法实现 embedding 协同过滤之item

推荐系统本质是在用户需求不明确的情况下,解决信息过载的问题,联系用户和信息,一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前,从而实现信息消费者和信息生产者的双赢(这里的信息的含义可以非常广泛,比如咨询、电影和商品等,下文中统称为item)。达观数据相关推荐是达观推荐系统中的重要组成部分,其价值在于,在没有用户画像信息的情况下,也能给用户以好的推荐体验,比如资讯类,通过达观相关推荐算法找到item相关的其他item,可以提供对某一类或者针对某一事件多角度多侧面的深度阅读。本文主要先简单介绍相关推荐的一些常用算法,然后介绍一下基于itemembedding的协同过滤。

基于内容的推荐一般依赖于一套好的标签系统,通过计算item之间tag集合的相似性来衡量item之间的相似性,一套好的标签系统需要各方面的打磨,一方面需要好的编辑,一方面也依赖于产品的设计,引导用户在使用产品的过程中,对item提供优质的tag。

协同过滤主要分为基于领域以及基于隐语义模型。

基于领域的算法中,ItemCF是目前业界应用最多的算法,其主要思想为“喜欢item A的用户大都喜欢用户 itemB”,通过挖掘用户历史的操作日志,利用群体智慧,生成item的候选推荐列表。主要统计2个item的共现频率,加以时间的考量,以及热门用户以及热门item的过滤以及降权。

LFM(latent factormodel)隐语义模型是最近几年推荐系统领域最为热门的研究话题,该算法最早在文本挖掘领域被提出,用于找到文本隐含的语义,在推荐领域中,其核心思想是通过隐含特征联系用户和物品的兴趣。主要的算法有pLSA、LDA、matrixfactorization(SVD,SVD++)等,这些技术和方法在本质上是相通的,以LFM为例,通过如下公式计算用户u对物品i的兴趣:

公式中pu,k和qi,k是模型的参数,其中pu,k度量了用户u的兴趣和第k个隐类的关系,而qi,k度量了第k个隐类和物品i之间的关系。而其中的qi,k可视为将item投射到隐类组成的空间中去,item的相似度也由此转换为在隐空间中的距离。

2. item2vec:NEURAL ITEM EMBEDDING

2.1 word2vec

由于item2vec基本上是参照了google的word2vec方法,应用到推荐场景中的item2item相似度计算上,所以首先简单介绍word2vec的基本原理。

Word2vec主要用于挖掘词的向量表示,向量中的数值能够建模一个词在句子中,和上下文信息之间的关系,主要包括2个模型:CBOW(continuousbag-of-word)和SG(skip-gram),从一个简单版本的CBOW模型介绍,上下文只考虑一个词的情形,如图1所示,

假设只有一个隐层的神经网络,输入层以及输出层均为词的one-hot编码表示,词表大小假设为V,隐层神经元个数为N,相邻层的神经元为全连接,层间的权重用V*N的矩阵W表示,隐层到输出层的activationfunction采用softmax函数,

其中wI,wj为词表中不同的词,yj为输出层第j个神经元的输出,uj为输入层经过权重矩阵W到隐层的score,uj’为隐层经过权重矩阵W’到输出层的score。训练这个神经网络,用反向传播算法,先计算网络输出和真实值的差,然后用梯度下降反向更新层间的权重矩阵,得到更新公式:

其中,η为更新的步长,ej为模型预测以及真实值之间的误差,h为隐层向量。

图2为上下文为多个词时的情况,中间的隐层h计算由

改为

即输入向量为多个上下文向量相加求平均,后续的参数学习与上文的单个词的上下文情况类似。遍历整个训练集context-target词对,经过多次迭代更新模型参数,对模型中的向量的影响将会累积,最终学到对词的向量表示。

Skip-gram跟CBOW的输入层和输出层正好对调,区别就是CBOW是上下文,经过模型预测当前词,而skip-gram是通过当前词来预测上下文。

目前为止,对词表中的每个词,有两种向量表示:input vector和outputvector,对应输入层到隐层权重矩阵W的行向量和隐层到输出层权重矩阵W'的列向量,从等式4、5可以看出,对每一个训练样本,都需要遍历词表中的每一个词,因此,学习outputvector的计算量是非常大的,如果训练集或者词表的规模大的话,在实际应用中训练不具可操作性。为解决这个问题,直觉的做法是限制每个训练样本需要更新的outputvectors,google提出了两个方法:hierarchical softmax和negativesampling,加快了模型训练的速度,再次不做展开讨论。

2.2 item2vec

词的上下文即为邻近词的序列,很容易想到,词的序列其实等价于一系列连续操作的item序列,因此,训练语料只需将句子改为连续操作的item序列即可,item间的共现为正样本,并按照item的频率分布进行负样本采样。

Oren Barkan and NoamKoenigstein以SVD作为baseline,SVD的隐类以及item2vec的维度都取40,用Microsoft Xbox Musicservice收集的user-artists数据集,对结果进行聚类,如图3所示,图a是item2vec的聚合效果,图b是SVD分解的聚合效果,看起来item2vec的聚合效果要更好些。

范雄雄,达观数据个性化推荐引擎工程师,工作包括推荐系统的架构设计和开发、推荐效果优化等,所在团队开发的个性化推荐系统曾创造上线后效果提升300%的记录。复旦大学计算机科学与技术专业硕士,曾在爱奇艺开发多款大数据产品,对个性化推荐、数据挖掘和分析、用户行为建模、大数据处理有较深入的理解和实践经验。

戳这里,看该作者更多好文

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载者并注明出处:https://jmbhsh.com/yulebagua/31659.html

联系我们

QQ号:***

微信号:***

工作日:9:30-18:30,节假日休息