转化流程:不同的应用场景会有不同的转化流程,一般包括 曝光、点击、滑动到底、点赞和收藏等。不同的转化流程有不同模型特点。
点击率越高,说明推荐越精准。但这不是唯一指标
归一化函数:f(笔记长度),此函数与笔记长度有关。笔记越长,完成阅读的比率越低。
小结:系统推荐用户喜欢的笔记,会让消费指标上涨从而推荐出更多,这会让用户失去兴趣。
改变方向踏入多样性,有利于保持用户粘性。
衡量推荐系统好坏的根本指标
召回通道:协同过滤、双塔模型、关注的作者等等。在召回中,做去重和过滤,过滤掉用户不喜欢的话题等等。
粗排:用简单模型快速打分
精排:用较大的神经网络进行打分,分数更可靠,但是参数更多,计算更复杂。
重拍:考虑多样性,用规则打散相似内容。插入广告和运营推广的内容。
用户喜欢A,A与B相似,那么可以给用户推荐B。
like(user,itemj):某用户对 j物品的喜欢程度
sin(itemj,item):Item和j 物品的相似度
预估用户对候选物品的兴趣:
判断相似的基本思路:
计算相似度:
此公式没有考虑用户的喜欢程度like(),如果考虑进去,那么就是:(余弦相似度)
额外考虑重合的用户是否来自同一个小圈子。
如果用户是来自小圈子,那么需要对圈子用户进行减权。
用户相似度的计算:相似度越高,那么两个人来自同一个小圈子的概率越大。
物品相似度的计算:
α 是人工设置的参数,需要不断调节。
用户A和B是相似的,若A喜欢一篇笔记,B没有进行阅读,那么系统极可能会将此篇笔记推荐给B。
方法一:点赞、收藏、转发的笔记有很大重合。
方法二:关注的作者有很大重合。
预估用户对候选物品的兴趣:
越热门的物品,越无法反映用户的独特品味。
考虑到热门物品在计算相似度时作用不大,那么相似度计算公式可以改写为:
其中nL
表示喜欢物品L的用户数量,反应热门程度。
事先做离线计算
线上做召回
类似 ItemCF,可以自己推导
处理步骤:
用户embedding参数矩阵记作A。第u号用户对应矩阵的第u列,记作向量au。示例如下图:
物品embedding参数矩阵记作B。第i号物品对应矩阵的第i列,记作向量bi。
内积
是第u号用户对第i号物品兴趣的预估值。
(用户ID,物品ID,兴趣分数)的集合,记作 Ω = { ( u,i,y ) }
求解优化问题,得到参数A和B:
解释:任取数据集,希望 真实值y 与 预估值
类似用户矩阵,矩阵的每行对应一个用户,每列对应一个物品,那么矩阵 (i,j) 表示用户 i 对物品 j 的兴趣分数。我们根据训练得出的用户向量物品向量,来补充其他未知的矩阵元素。
实践中不好用…
这个还是看视频比较好,链接在最底下。
将用户的ID、离散特征和用户离散特征映射成特征向量,整合输入到神经网络得到另外一个向量,此向量为用户的表征,用于召回。
左右两座塔分别得到两个向量,用于计算余弦相似度。与之前模型不同,此模型不仅有用户ID,还加入了用户的其他特征。
取正负样本进行训练,训练方法有:Pointwise,Pairwise,Listwise。
后两种方法参考论文:
基本想法:鼓励cos(a,b+)大于cos(a,b-),两者之差越大越好
进行双塔模型(召回模型)的训练时,需要选择正负样本,如何选择呢?
正样本:曝光而且有点击的 用户—物品 二元组
问题:说部分样品占据大部分点击,导致正样品大多是热门物品
解决方案:过采样冷门物品(一个样本出现多次),或降采样热门物品(一些样本被抛弃)
选择训练双塔模型的负样本:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kpbS8kU2-1658985737368)(C:\Users\wzk\AppData\Roaming\Typora\typora-user-images\image-20220728095107403.png)]
正样本:用户—点击—物品(一行)
负样本:非同一行(如图) ,一共有n(n-1)个负样本
修正偏差:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Toao9S3y-1658985737369)(C:\Users\wzk\AppData\Roaming\Typora\typora-user-images\image-20220728095437650.png)]
这类样本容易被判定为正样本:
不要用曝光但未被点击的样本
作为负样本进行模型训练
目标:快速找到用户可能感兴趣的物品
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xULYZy20-1658985737369)(C:\Users\wzk\AppData\Roaming\Typora\typora-user-images\image-20220728100530101.png)]
经验结论:第三点可以作为排序的负样本,不能作为召回的负样本
存储物品信息,便于算法实现
给定用户 ID 和画像,线上用神经网络算用户向量 a 。
最近邻查找:
把向量 a 作为 query ,调用向量数据库做最近邻查找。
返回余弦相似度最大的 k 个物品,作为召回结果。
因为用户兴趣动态变化,物品特征相对稳定,所有需要存储物品向量,实时计算用户向量。
全量更新:今天凌晨,用昨天全天的数据训练模型。
增量更新:做 online learning 更新模型参数。
根据用户新的兴趣,需要小时级别的增量更新。对数据流的要求很高,训练数据文件不断生成。当用户刷新时,双塔模型会根据训练的数据实时更新信息。
GeoHash:
可以自行百度搜索此算法
用户对关注的作者发布的笔记感兴趣。
索引:
用户—>关注的作者
作者—>发布的笔记
召回:
如果用户喜欢某作者,那么用户喜欢相似的作者。
索引:作者—>相似作者(K个相似作者)
召回:用户—>感兴趣的作者(N个关注作者)—>相似作者(共NK个作者)—>最新的笔记(NK篇笔记)
想法:复用前 n 次推荐精排的结果。
背景:
做法:精排前 50 ,但是没有曝光的,缓存起来,作为一条召回通道”
缓存大小固定:需要退场机制。
近似最近邻查找:11分10秒开始
本文是在观看此系列视频做出的笔记,我觉得讲的超级好,干货满满
本文仅供学习参考