用户兴趣模型:数据与特征取舍
内容平台场景下数据收集、特征工程与算法选型方案
原题:假设需要为一个内容平台构建用户兴趣模型以识别其偏好话题,请从数据收集、特征工程、算法选型及模型更新策略等方面系统阐述你的设计方案。
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 · 场景切入
假设我们做一个内容社区,用户刚注册进来,一条内容都没看过,你怎么快速猜出他可能喜欢什么?如果他用了一周,行为变多了,兴趣模型怎么逐步更新和收敛?
- 问法 2 · 层层追问
你一般怎么从用户行为里提取兴趣特征?……那用户搜了又没点,或者快速划走,这些信号怎么处理?……再进一步,如果兴趣随时间漂移,比如上周爱看健身这周爱看美食,模型怎么自适应?
- 问法 3 · 直球架构
设计一个内容平台的用户兴趣模型,从数据收集、特征工程、算法选型到模型更新策略,全链路说下你的方案。重点讲清楚怎么处理隐式反馈和兴趣衰减。