当前位置: 首页 > news >正文

【王树森推荐系统】推荐系统涨指标的方法05:特殊用户人群

为什么要特殊对待特殊人群?

  1. 新用户,低活用户的行为很少,个性化推荐不准确。个性化的召回和排序都需要基于用户的历史行为,如果历史行为少,个性化就做不好,尤其是新用户,这就需要策略把个性化做的特别好或者用非个性化方法来做弥补
  2. 新用户,低活用户容易流失,要想办法促使他们留存。对于全体用户,推荐系统要努力提升很多指标,比如留存,时长,消费等。而对于新用户和低活用户,只需要考虑留存,不需要考虑其他任何指标,所以只需要考虑优化留存
  3. 特殊用户的行为(比如点击率,交互率等)不同于主流用户,基于全体用户行为训练出的模型在特殊用户人群上有偏。要对特殊用户人群用特殊模型来消除偏差

涨指标的方法

  1. 构造特殊内容池,用于特殊用户人群的召回
  2. 使用特殊排序策略,保护特殊用户
  3. 使用特殊的排序模型,消除模型预估的偏差

构造特殊的内容池

  • 为什么需要特殊内容池?
    • 新用户,低活用户的行为很少,个性化召回不准确(既然个性化不好,那么就需要保证内容质量好,用优质内容弥补个性化缺失)
    • 针对特定群体的特点构造特殊内容池,提升用户满意度(例如,对于喜欢留评论的中年女性,构造粗评论内容池,满足这些用户的互动需求)
  • 方法1:根据物品获得的交互次数,交互率选择优质物品
    • 圈定人群:只考虑特定人群,例如 18 到 25 岁一二线城市男性
    • 构造内容池:用该人群对物品的交互次数,交互率给物品打分,选出分数最高的物品进入内容池,分数高说明质量好,容易吸引用户
    • 内容池有弱个性化的效果,说明这个人群对这个池子的内容感兴趣
    • 内容池定期更新,加入新物品,排除交互率低和失去时效性的老物品
    • 该内容池只对该人群生效
  • 方法2:做因果推断,判断物品对人群留存率的贡献,根据贡献值选物品
  • 通常使用双塔模型从特殊内容池中做召回
    • 双塔模型是个性化的
    • 对于新用户,双塔模型的个性化做不准
    • 靠高质量,弱个性化做弥补(可以容忍双塔模型的不准确)
  • 额外的训练代价?
    • 对于正常用户,无论有多少内容池,只训练一个双塔模型
    • 对于新用户,由于历史交互记录很少,需要单独训练模型。但不论有多少个内容池,新用户只需要一个自己的双塔模型就够了
  • 额外的推理代码?
    • 内容池定期更新,然后要更新 ANN 索引
    • 线上做召回时,需要做 ANN 检索
    • 无论是更新内容池还是做召回,每多一个内容池,就需要多一份额外的算力,内容池越大,需要的额外算力越多
    • 特殊内容池都很小(比全量内容池少 10 到 100 倍),所以需要的额外算力不大

特殊的排序策略

排除低质量物品

  • 对于新用户,低活用户这样的特殊人群,业务上只关注留存,不在乎消费(总曝光量,广告收入,电商收入)
  • 对于新用户,低活用户,少出广告,甚至不出广告
  • 新发布的物品不在新用户,低活用户上做探索
    • 新物品发布时,推荐做的不准,会损害用户体验。这没办法,毕竟一定要推荐出去。如果不做探索,推荐系统就不知道谁会喜欢这些物品
    • 只在老用户上做探索,对新物品做提权(boost)。老用户受一点伤害并不会流失
    • 不在新用户,低活用户上做探索,避免伤害用户体验。用这些特殊用户做探索会得不偿失

差异化的融分公式

  • 新用户,低活用户的点击,交互行为不同于正常用户
  • 低活用户的人均点击量很小;没有点击就不会有进一步的交互
  • 低活用户的融分公式中,提高预估点击率的权重(相较于普通用户,点进去看了才可能留存)
  • 保留几个曝光坑位给点击率最高的几个物品
    • 例:精排从 500 个物品中选 50 个作为推荐结果,其中 3 个坑位给点击率最高的物品,剩余 47 个坑位由融分公式决定。这 3 个坑位的目的是吸引用户点击
    • 甚至把点击率最高的物品排在第一,确保用户一定能看到。如果用在普通用户身上会损害核心指标

特殊的排序模型

差异化的排序模型

  • 特殊用户人群的行为不同于普通用户。新用户,低活用户的点击率,交互率偏高或偏低
  • 排序模型被主流用户主导,对特殊用户做不准预估
    • 用权力用户训练出的模型,给新用户做的预估有严重偏差
    • 如果一个 APP 的用户 90% 都是女性,用全体用户数据训练出的模型,对男性用户做的预估有偏差
  • 问题:对于特殊用户,如何让排序模型预估做的更准?
    • 方法1:大模型 + 小模型
      • 用全体用户行为训练大模型,大模型的预估 ppp 拟合用户的行为 yyy
      • 用特殊用户的行为训练小模型,小模型的预估 qqq 拟合大模型的残差 y−py-pyp,残差是大模型犯的错误,我们希望小模型可以纠正大模型的错误
      • 对主流用户只用大模型做预估 ppp
      • 对特殊用户,结合大模型和小模型的预估 p+qp+qp+q,小模型的作用是纠偏
    • 方法2:融合多个 experts,类似 MMoE
      • 只用一个模型,模型有多个 experts,各输出一个向量
      • 对 expert 的输出做加权平均
      • 根据用户特征计算权重(和MMoE的区别是这里的神经网络输入只有一个用户特征)
      • 以新用户为例,模型将用户的新老,活跃度等特征作为输入,输出权重,用户对 expert 做加权平均。例:如果有两个 expert,用户刚刚注册,那么新用户 expert 的权重是 1,老用户 expert 的权重是 0。如果介于新老之间那么两个 expert都有一定的权重
    • 方法3:大模型预估之后,用小模型做校准
      • 用大模型预估点击率,交互率
      • 将用户特征,大模型预估点击率和交互率作为小模型(例如 GBDT)的输入
      • 在特殊用户人群的数据上训练小模型,小模型7的输入拟合用户的真实行为

错误的做法

  • 每个用户人群使用一个排序模型,推荐系统同时维护多个大模型
    • 系统有一个主模型,每个用户人群有自己的一个模型
    • 每天凌晨,用全体用户数据更新主模型,训练 1 个 epoch
    • 基于训练好的主模型,在某特殊用户人群的数据上再训练 1 epoch,作为该用户人群的模型、
  • 短期可以提升指标;维护代价大,长期有害
    • 起初,低活男性用户模型比主模型的 AUC 高 0.2%
    • 主模型迭代几个版本后,AUC 累计提升 0.5%
    • 特殊人群模型太多,长期没有人维护和更新
    • 如果把低活男性用户模型下线,换成主模型,在低活用户上的 AUC 反倒提升 0.3%

总结

在这里插入图片描述

http://www.dtcms.com/a/295394.html

相关文章:

  • [数据结构]#7 哈希表
  • 国产化PDF处理控件Spire.PDF教程:Python 将 PDF 转换为 Markdown (含批量转换示例)
  • spring boot 整合 Spring Cloud、Kafka 和 MyBatis菜鸟教程
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(9):ようなN
  • C++ 中值传参和引用传参
  • rust-数据结构
  • 聚观早报 | 猿编程推动中美青少年AI实践;华为Pura 80数字版售价公布;iPhone 17 Air电池曝光
  • Redis数据类型与内部编码
  • 国产数据库拐点已至:电科金仓用“融合+AI”重新定义下一代数据底座
  • rustfs/rustfs基于 Rust 的高性能分布式存储系统
  • 进程通信----匿名管道
  • 进阶向:基于Python的本地文件内容搜索工具
  • 加入淘宝联盟内容库,以便在B站等平台被推广
  • 我的新项目又来咯!
  • iOS 抓包工具有哪些?按能力划分的实用推荐与使用心得
  • 开发运维DevOps(附电子书资料)
  • 办公自动化入门:如何高效将图片整合为PDF文档
  • 7月25日 矩阵起源亮相深圳DA数智大会,解读多模态大模型驱动的数据处理新方法
  • 如何保证GPFS文件系统的强一致性
  • PDF转Markdown - Python 实现方案与代码
  • Go进阶高并发(多线程)处理教程
  • 中小企业安全落地:低成本漏洞管理与攻击防御方案
  • 新手操作steam搬砖项目,应该如何快速起步
  • 图机器学习(19)——金融数据分析
  • 深度分析Java类加载机制
  • 医疗AI轻量化部署方案的深度梳理与优化路径判研
  • k8s把某个secret挂在某命名空间下
  • MySQL深度理解-MySQL事务优化
  • 现代C++的一般编程规范
  • 【CMake】CMake 常用语法总结