目录
一、itemCF
ItemCF即利用user与item之间的交互行为数据来计算item之间的关联相似度。
1.实现方法:
通过用户观影历史构建item之间的共现矩阵,然后计算LLR相似度,对相似度得分排序后取topK个,即得到每个item最相近的item作为推荐结果。共现矩阵如下所示:
Anot A
Bk11k12
not Bk21k22
k11:观看过A和B的用户数
k12:未观看过A,观看过B的用户数
k21:观看过A,未观看过B的用户数
k22:A和B都未观看过的用户数
LLR相似度:通过计算矩阵的行熵,列熵,矩阵熵来计算A和B的相似度
计算公式:
rowEntropy = entropy(k11, k12) + entropy(k21, k22)
columnEntropy = entropy(k11, k21) + entropy(k12, k22)
matrixEntropy = entropy(k11, k12, k21, k22)
则sim(A,B) = 2 * (matrixEntropy - rowEntropy - columnEntropy)
2.优点:
(1)算法原理简单直接,可解释性强;
(2)效果稳定;
(3)可以保证用户兴趣的相关性;
(4)行为丰富的用户召回也是多样的;
(5)可以捕捉用户的实时兴趣;
(6)能为用户推荐出多样性、新颖性的item
(7)只需要用户的行为信息,不依赖用户和item的side info
3.问题:
(1)计算相似度时考虑未观看的用户群体,k21,k12和k22;
(2)k22由总用户数-k11-k12-k21得来。由于数据的稀疏性,k22>>k11,算法存在一定的不合理性;
(3)往往I2I的索引是基于一种共现的统计,可能出现冷门商品排不上,新品排不了的问题;
(4)如何即考虑I2I的共现信息,又考虑Item两端的Side Info;
(5)如何将这种索引的建立和多样的业务目标关联;
(6)如何考虑多个Trigger指向相同的一个Item的联合概率。
(7)不适用解决冷启动问题,对于行为数据少或没有的item,无法进行推荐;
(8)由于item数量多,行为数据也是稀疏的,而稀疏的行为矩阵会导致计算出的item相似度不够准确;
4.优化方法:
(1)过热打压
(2)过滤异常uid、热门页视频、特殊类别视频(例如千里眼视频)
(3)长短期融合
(4)实时离线融合
(5)显式使用评分值:将用户留存作为u2i的评分,即相似度计算变成:
(6)相似度的显著性加权:,当物品i和j的共有评分用户较少时,数据的稀疏性会导致相似度计算失真(小数据量的统计意义减弱),此时应削弱其重要性,进行降权:
(7)活跃用户惩罚:活跃用户的评分物品数量较多,对物品的区分性较差,对物品相似度计算的贡献不如非活跃用户大,应对此进行惩罚。方式是对评分降权,权重为,其中N(u)表示用户u的评分物品数量、即用户活跃度:
(8)itemCF和userCF结合:将itemCF和userCF的预测分加权组合:
(9)通过聚类,加速相似物品的计算:在计算topK个相似item时只需在item所在聚类中做相似度排序取top即可。
二、userCF
userCF相当于itemCF的对偶算法,是利用user与item之间的交互行为数据来计算user之间的关联相似度。
1.实现方法:
首先构建用户的共现矩阵,计算LLR相似度,针对每个user找到最相似的topK个用户,然后将这K个用户最近n条观影历史合并排序,取top N个视频推荐给当前user。
扩展一下,还可以通过user embedding之间计算相似度的方式,来得到topK个相似用户,然后再找推荐视频。user embedding可以用过youtubeDNN、word2vec等模型训练得到。
2.优点:
(1)推荐结果着重于和用户兴趣相似的小群体的热点,推荐更加社会化,反映了用户所在兴趣群体中物品的热门程度;
(2)对物品冷启动不敏感, 对于新加入系统的物品,一旦有用户对该新物品产生行为,UserCF可以将该新物品推荐给和该用户相似的人群;
(3)适合新热推荐,可以促进新视频和热视频的快速传播;
3.缺点:
(1)无法给冷启动用户产生推荐;
(2)由于item的特征相对于用户的兴趣一般比较稳定,所以UserCF中用户相似度矩阵相比ItemCF中物品相似度矩阵需要更新更频繁;
(3)可解释性弱;
三、Swing
计算物品i和物品j之间的相似度时只考虑与二者都存在交互行为的用户群体U。对于U中的用户两两计算其共现权重并求和。
1.实现方法:
Swing指的是秋千,例如用户 u 和用户 v ,都购买过同一件商品 i ,则三者之间会构成一个类似秋千的关系图。若用户 u 和用户 v 之间除了购买过 i 外,还购买过商品 j,则认为两件商品是具有某种程度上的相似的。
也就是说,商品与商品之间的相似关系,是通过用户关系来传递的。为了衡量物品 i 和 j 的相似性,考察都购买了物品 i 和 j 的用户 u 和用户 v , 如果这两个用户共同购买的物品越少,则物品 和 j 的相似性越高。
相似度计算公式:
2.优点:
user-item-user 的结构比 itemCF 的单边结构更稳定,线上的实际效果也明显优于通过LLR计算相似度的itemCF;
3.缺点:
计算量大,因此线上实际实现的过程中,只取了最近7天的观影历史,而相同时间内,itemCF取了最近120天的观影历史;
四、Seq Embedding CF
userCF计算的是user之间的相似度,实际上也可以认为是用户全部观影序列之间的相似度。从原理上看,itemCF和userCF是对偶关系,但实际应用中可以发现,由于user本身的复杂多变性,user与user之间的相似度较低,且不稳定,这也是userCF的效果通常不如itemCF的原因(因为item的特征是固定的、内容是单一的,而用户的兴趣是变化的、多样的)。
但是,但看用户短期内的局部观影序列,可以大致认为user的特征也是稳定的,这也就是seq embeddingCF想法产生的原因。
1.实现方法:
将用户的观影序列分割成一个一个小的sequence,然后通过计算sequence的相似度,找到针对当前用户最相似的seq(可以通过计算embedding的余弦值或者共现矩阵的方式来计算相似度),然后再融合召回。
2.优点:
用户短期的兴趣是比较稳定的,所以能召回更相似的视频,实际生产中,线上的效果也明显好于userCF。
3.缺点:
计算量大,由于一个user现在对应n条观影序列,所以数据量是userCF的n倍;
五、Graph Embedding CF
图模型是更广义上的协同过滤,利用节点之间的多跳关系聚合更新节点的embedding,从而实现更深层次的协同关系计算。
1.实现方法:
利用用户观影历史构建图结构,然后利用LightGCN模型,计算节点的图卷积,得到节点的embedding,通过embedding相似召回视频。
2.优点:
模型简单容易迭代,且利用了图信息,效果要优于传统的itemCF;
3.缺点:
效果不如传统的itemCF稳定;
4.详细实现策略见:推荐图模型总结_码一码码码的博客-CSDN博客
六、深度模型:PDN
联合建模u2i和i2i,通过两条路径,训练得到user embedding、item embedding和共现embedding。
1.实现方法:
整个模型由三个子网络构成:
trigger_net:合并user、interact、history向量输入5层神经网络;
similar_net:合并history、coCount、target向量输入五层神经网络;
user_bais_net:将user向量输入三层神经网络;
激活函数为relu,最后一层是sigmoid函数;
trigger_net和similar_net的输出合并,为path_u_j_i,即第j个物品对于target的评分,再加上偏置user_bais_net,即为最后的预测输出;
在实现实时召回的过程中,为满足时延要求,将路径检索解耦为两个部分:先通过triggerNet检索出用户最感兴趣的topM个商品,再在其中用similarNet构建item相似度索引,对topM个item实现i2i的检索;
2.优点:
融合了协同过滤和embedding算法,通过神经网络提取用户的兴趣向量,能更精准地召回推荐物品,实现测试中的线上效果也优于传统的协同算法;
七、混合CF——User-Item CF——矩阵分解MF
1、算法原理:
ALS算法:假设打分矩阵式近似低秩的,通过矩阵分解得到user embedding和item embedding;
2、算法步骤:
迭代的方式求解一系列最小二乘回归问题。每次迭代时,固定用户因子矩阵或者物品因子矩阵,然后用固定的这个矩阵及评级矩阵来更新另一个矩阵,然后再反过来。迭代直到模型收敛或到了预设好的次数。
一般使用RMSE(root-mean-square error)评估误差是否收敛:
3、缺点:
(1)是一个离线算法;
(2)无法准确评估新加入的用户或商品,有冷启动的问题;
网友评论