跳到正文

用户兴趣模型:数据与特征取舍

内容平台场景下数据收集、特征工程与算法选型方案

原题:假设需要为一个内容平台构建用户兴趣模型以识别其偏好话题,请从数据收集、特征工程、算法选型及模型更新策略等方面系统阐述你的设计方案。

RAG基础 · 小红书真题

回答与解析

一、数据收集:三层数据体系

显式数据

  • 关注/收藏/点赞/评论的显式反馈
  • 用户主动填写的兴趣标签

隐式行为

  • 曝光→点击→完播→互动的漏斗行为
  • 停留时长、滑动速度、复访频次
  • 搜索查询词(强意图信号)

社交关系

  • 关注关系、互动关系、同好社群
  • 笔记的分享传播路径

关键:埋点设计要覆盖"负反馈"(快速划过、不感兴趣点击),避免模型只学正样本


二、特征工程:分层表征

层级 特征示例
用户静态 demographics、注册来源、设备
用户动态 近7/30天活跃频次、时段偏好、消费深度
内容侧 笔记类目、关键词、视觉风格、作者特征
交叉特征 用户对类目的CTR、类目下的完播率
序列特征 最近50条交互内容的ID序列(用于DIN/SIM)

小红书特色:强化"生活方式"标签体系(穿搭、家居、旅行等细分类目)


三、算法选型:召回→粗排→精排

召回层

  • 双塔模型(User塔+Item塔):用户兴趣向量实时更新,Item向量天级更新
  • 多路召回:兴趣标签召回、协同过滤、图神经网络(社交关系)

精排层

  • 多目标优化:点击+互动+关注+时长,用MMoE或PLE结构
  • 序列建模:DIN/Transformer捕捉短期兴趣,长期兴趣用记忆网络

冷启动策略

  • 新用户:基于相似人群(Lookalike)+ 热门兜底
  • 新内容:内容理解模型(图文多模态)预打标签,快速匹配潜在人群

四、模型更新策略

模块 更新频率 机制
实时兴趣向量 分钟级 Flink流式处理用户行为,增量更新Embedding
模型参数 小时级/天级 在线学习或日全量训练,A/B验证后上线
特征体系 周级 基于特征重要性分析做增减

稳定性保障

  • 影子流量验证新模型,KS检验分布漂移
  • 设置兴趣衰减因子(如7天无交互权重×0.5),防止僵尸兴趣

五、评估与迭代

  • 离线:AUC、GAUC、多样性指标(ILS)
  • 线上:人均消费时长、互动率、留存
  • badcase分析:定期抽样"不感兴趣"反馈,反向优化

学习建议

建议系统学习该知识点

口语版讲法(约4分钟)

  • 一句话定位:本质是理解用户、匹配内容
  • 数据收集:三层体系与负反馈
  • 特征工程:分层表征,序列特征是重点
  • 算法选型:召回到精排,多目标与序列建模
  • 模型更新:实时与批量结合,稳定性保障

这道题本质上是问怎么把用户和内容高效匹配起来,让推荐系统既懂用户短期兴趣,又不忘长期偏好。我会从数据、特征、模型和更新策略几个方面来说。

先说数据收集。我会搭一个三层体系:显式反馈、隐式行为和社交关系。显式就是点赞收藏这些,隐式包括曝光到点击的漏斗、停留时长、滑动速度,还有搜索词,这个意图信号特别强。社交关系比如关注和同好社群。这里有个关键:埋点一定要覆盖负反馈,比如快速划过或者点不感兴趣。如果模型只学正样本,推荐会越来越窄,用户很快就腻了。

特征工程这块,我倾向于分层表征。底层是用户静态属性,像年龄、设备;往上走是动态特征,比如近7天活跃频次、时段偏好;内容侧有类目、关键词、视觉风格;交叉特征像用户对类目的点击率;最核心的是序列特征,就是用户最近交互的内容ID序列。这个序列对捕捉短期兴趣特别重要,后面算法会用到。

算法选型我分召回和精排两层。召回层我会用双塔模型,用户兴趣向量可以分钟级更新,内容向量天级更新。多路召回也很关键,标签召回、协同过滤、图神经网络都上,保证覆盖面。精排层重点做多目标优化,点击、互动、时长这些目标用MMoE或者PLE结构来平衡。序列建模我倾向用DIN或者Transformer,把用户最近行为序列喂进去,注意力机制能自动聚焦当前最相关的部分。冷启动方面,新用户用Lookalike找相似人群,热门内容兜底;新内容靠多模态模型预打标签,快速匹配潜在人群。

模型更新我分三个粒度。实时兴趣向量用Flink流式处理,分钟级更新;模型参数小时级或天级做在线学习或全量训练,A/B验证后上线;特征体系周级做重要性分析,该加的加,该删的删。稳定性保障不能忽视,我会用影子流量跑新模型,看KS检验有没有分布漂移。还有一个细节:兴趣衰减因子,比如7天没交互权重乘0.5,防止僵尸兴趣一直占着位置。

说到时效性,其实实时更新有个前提:行为流必须干净,如果用户误触很多,实时更新反而放大噪声。所以上线前我会特别关注点击和有效互动的比例,过滤掉无效行为。

最后收一下,离线评估看AUC和多样性,线上看人均时长和留存。我倾向于把整个系统看成动态平衡:既要快速响应新兴趣,又要稳住长期偏好。

关键一句:实时更新有个前提:行为流必须干净,误触会放大噪声,需要过滤无效行为。

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设我们做一个内容社区,用户刚注册进来,一条内容都没看过,你怎么快速猜出他可能喜欢什么?如果他用了一周,行为变多了,兴趣模型怎么逐步更新和收敛?

  2. 问法 2 · 层层追问

    你一般怎么从用户行为里提取兴趣特征?……那用户搜了又没点,或者快速划走,这些信号怎么处理?……再进一步,如果兴趣随时间漂移,比如上周爱看健身这周爱看美食,模型怎么自适应?

  3. 问法 3 · 直球架构

    设计一个内容平台的用户兴趣模型,从数据收集、特征工程、算法选型到模型更新策略,全链路说下你的方案。重点讲清楚怎么处理隐式反馈和兴趣衰减。

同模块相关题目