推荐系统-召回
1. 基于物品的协同过滤 ItemCF
先找到用户感兴趣的物品 ID,然后根据物品 ID 找和物品相似的其他物品 ID 。因此,进行在线召回需要维护用户 -》物品以及物品 -〉物品相似度索引。
下图方法计算物品相似度考虑了用户对物品的喜欢程度 like,若不考虑,可以直接计算交集数量/sqrt(w1 数量*w2 数量)
2. ItemCF 的变体 —Swing
ItemCF 存在小圈子问题。当某个小圈子群体(例如某个微信群)同时分享了两篇完全不相关的物品,会导致模型错误推荐。因此 Swing 旨在计算用户重合度来解决。
3. 基于用户的协同过滤 UserCF
计算用户相似度:计算两个用户所喜欢物品的重合度
4. 双塔模型
注意神经网络的位置,用于得到物品和用户的表征,然后计算表征相似度,由于可以做离线运算,因此适合做召回。得到用户和物品表征后经过神经网络得到相似度的模型往往用于排序。
负样本选取方式如下。其中曝光但是未被点击的样本适用于做排序的负样本,而不适用于召回,召回的目的是找到用户可能感兴趣的样本,而不一定是特别感兴趣的样本。
为什么离线存储物品向量,而线上计算用户向量?
- 特定用户,只需计算一次用户向量,而物品数量庞大,线上开支不起
- 用户动态波动较大(兴趣会变),而物品相对稳定
全量更新是每天更新一次全部参数,增量更新是实时更新 embedding 参数。
全量更新 random shuffle 一天数据,降低用户兴趣波动的影响,效果更好;增量更新能实时捕捉用户兴趣变化。因此需将二者结合一起使用。
5. Deep Retrieval
还得再看看
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Cloni!