推荐系统
- 冷启动
- 用户冷启动
- 热门
- 内容品类 多样性探索
- 用户画像
- 快速探索(各个筛选的选择tab)
- 主产品的用户迁移
- 作品冷启动
- 标的物跟用户行为的相似性
- 利用标的物跟标的物的相似性
- 用户自己搜索、自己筛选、选择主题等
- 用户冷启动
es向量召回
订单规则太多,导致召回排序后没多少曝光
- 走es召回。先过滤再取topN
订单主页的日活100w 直播间dau30w 聊天室10w
冷门无机会曝光
- 具体哪一个阶段导致,然后加入策略
item侧的embding隔天变化。user的emb实时更新
请求来了去es的item里找topes比fassi的好处
性能
- qps100左右,128的emb,召回压力不大
向量距离方法
- fassi
- kdtree
推荐系统召回层打压热门item
- 首先,大方向分为统计和算法两类模型。
- 召回阶段区别于排序,在于
- 数量级千万级,一般为双塔。以便于**单独生成user embedding和item embedding,喂入的特征禁止含有user/item之间的交叉特征 **user特征喂入user tower得到user embedding,item特征喂入item tower得到item embedding。离线时,先将item embedding喂入FAISS建立索引,线上召回时,拿user embedding去FAISS里进行top-k近邻搜索,找到与其最接受的item embedding。
- 样本选择上, 正样本没有太多的争议,以内容推荐为例,选“用户点击”的item为正样本。最多考虑一下用户停留时长,将“用户误点击”排除在外。负样本的选择比较有讲究。如果说排序是特征的艺术,那么召回就是(负)样本的艺术。
- 原则之一就是不能(只)拿“曝光未点击”做负样本,负样本的绝大部分应该由“随机负采样”生成。具体原因见我的另一篇文章《**负样本为王**》。原则之二就是要打压热门item
- 因为绝大多数负样本是通过随机采样生成的,含有一定的噪声,因此召回不适合采用CTR预估常用的pointwise cross-entropy loss,而经常采用pairwise loss,比如margin-based bpr loss或hinge loss。(具体原因见我的另一篇文章《**CTR和推荐算法有什么本质区别?**》)
- 因此喂入模型的样本,区别于排序中常见的<user, item, label>,而是三元组<user, item+, item->,预测的目标是MatchScore(user, item正)要远高于MatchScore(user, item负)
- 20%的热门item占据了80%的曝光量或点击量。
- 为什么要打压
- 训练时,为了降低loss,算法会使每个user embedding尽可能接近少数热门item embedding
- 预测时,每个user embedding从FAISS检索出来的邻居都是那少数几个热门item embedding,完全失去了个性化
- 如何打压:
- item越热门,其成为item+的概率就应该越低。公式略。图形
- 提升热门item成为item-的概率。在随机采样负样本时,一方面需要采集到的item-能够尽可能广泛地覆盖所有候选item,另一方面又需要使采集到的item-尽量集中于高热item。
问题
- 随机负采样时,ctr的loss和推荐召回的loss各自适合什么?
召回不适合采用CTR预估常用的pointwise cross-entropy loss,而经常采用pairwise loss,比如margin-based bpr loss或hinge loss
- ctr和推荐算法本质区别
- 负样本为什么用随机采样更好
本文作者:
yuqing wang
本文链接: https://satyrswang.github.io/2021/04/05/推荐系统/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: https://satyrswang.github.io/2021/04/05/推荐系统/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!