跳到正文

用户兴趣建模:数据与特征陷阱

数据收集、特征工程、推荐算法选型与模型更新策略

原题:请设计一个系统来建模不同用户的兴趣话题偏好,涵盖数据收集与处理流程、特征工程方法、推荐算法选型及模型更新策略。

评估与监控 · 小红书真题

回答与解析

一、数据收集与处理流程

三层数据源

  • 行为层:点击、点赞、收藏、评论、停留时长、完播率(小红书核心信号)
  • 内容层:笔记图文/视频、标签、OCR文本、视觉特征(多模态embedding)
  • 社交层:关注关系、互动频次、社群归属

处理链路

埋点采集 → Flink实时清洗 → Kafka分流 → 
    ├── 离线数仓(Hive)→ 天级特征工程
    └── 实时流(Flink)→ 分钟级兴趣更新

二、特征工程方法

类型 具体特征 更新频率
静态画像 人口属性、注册来源、设备偏好 月级
动态兴趣 短期点击序列(最近50条)、实时浏览topic分布 分钟级
演化特征 兴趣漂移速度、话题跨度、探索vs保守倾向 天级

关键技巧:用时间衰减加权处理历史行为,近期行为权重指数级提升。


三、推荐算法选型

召回层(多路并行)

  • 协同过滤:ItemCF捕捉"看了又看"
  • 向量召回:双塔模型(User Tower + Item Tower),用户embedding实时更新
  • 图召回:基于社交关系的GraphSAGE

精排层

  • 主模型:DeepFM / DIN(引入注意力机制处理行为序列)
  • 多目标:点击+互动+时长联合优化(MMoE结构)

四、模型更新策略

模式 触发条件 适用场景
全量更新 每周/月 基模型重训,捕捉长期趋势
增量更新 每日 新增样本finetune,快速收敛
实时更新 分钟级 用户embedding在线刷新,应对突发兴趣

工程要点:精排模型天级更新,用户向量通过参数服务器实时推送,保证"刷完即影响下次推荐"的体验。

学习建议

建议系统学习该知识点

口语版讲法(约4分钟)

  • 本质是动态兴趣建模与工程权衡
  • 数据收集:三层信号与实时/离线分流
  • 特征工程:时间衰减与兴趣漂移
  • 算法选型:多路召回与精排多目标
  • 更新策略:全量/增量/实时分层与风险

这道题本质上是问我们怎么把用户零散的行为信号,转化成能实时响应用户口味变化的推荐系统。我理解它的核心挑战在于两个:一是兴趣是动态的,今天喜欢美妆明天可能就迷上露营了;二是工程上要在效果和成本之间做取舍。

先说数据收集。我会把它分成三层来抓:行为层,就是点击、点赞、收藏这些,特别是完播率,在小红书这种内容平台是很强的兴趣信号;内容层,笔记的图文、标签、OCR文本甚至视觉特征,我会抽成多模态embedding;社交层,关注关系、互动频次和社群归属。处理链路我用Flink做实时清洗,然后分流:一份进离线数仓做天级特征,一份留在流里做分钟级兴趣更新。

特征工程这块,我分静态画像、动态兴趣和演化特征。静态就是人口属性、注册来源,月级更新就行。动态兴趣是核心,比如用户最近50条点击序列和实时浏览的topic分布,分钟级刷新。演化特征比较有意思,像兴趣漂移速度、话题跨度,这些能判断用户是不是在探索新领域,天级更新就够了。关键技巧是时间衰减加权,近期行为权重指数级提升,不然三个月前点的健身视频还在推,用户早腻了。

算法选型上,我坚持多路召回加精排。召回层我会上协同过滤的ItemCF,捕捉“看了又看”的关联;向量召回用双塔模型,用户embedding实时更新;再加上图召回,基于社交关系的GraphSAGE。精排层主模型用DeepFM或者DIN,DIN的好处是能通过注意力机制处理行为序列,把用户最近对什么感兴趣显式地建模出来。多目标优化我会用MMoE结构,同时优化点击、互动和时长,因为只优化点击容易推标题党。

模型更新策略我分层处理。全量更新每周或每月一次,基模型重训,捕捉长期趋势。增量更新每天跑,用新增样本finetune,快速收敛。实时更新是分钟级的,用户embedding在线刷新,应对突发兴趣,比如突然刷到某个明星同款。工程上有个坑:精排模型天级更新就够了,但用户向量必须通过参数服务器实时推送,这样才能做到“刷完即影响下次推荐”。如果向量更新不及时,用户刚点了一篇露营笔记,下次刷新还在推美妆,体验就很差。

这里我想提一个延伸点:当用户兴趣短期剧烈波动时,比如大促期间从理性购物变成冲动消费,模型很容易过拟合短期行为,导致推荐结果变得很窄。我倾向于在实时更新时引入一个探索与保守的平衡因子,比如用贝叶斯方法动态调节历史行为和新行为的权重,避免兴趣窄化。

所以整体上,我更倾向把兴趣建模看成一套分层响应系统:底层用全量更新保证基础质量,中间层用增量更新快速适应,顶层用实时更新捕捉脉冲。前提是数据质量要过关,埋点得有足够的唯一标识和时间戳,不然实时更新再快也是垃圾进垃圾出。

关键一句:用户兴趣短期剧烈波动时,模型易过拟合,需引入探索与保守的平衡因子

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设你现在接手一个短视频App,用户刚注册时兴趣很模糊,但刷了几十条后,你发现他对宠物视频停留特别久。你会怎么从零开始搭建一套系统,把这种兴趣偏好建模出来并用到推荐里?

  2. 问法 2 · 层层追问

    用户兴趣建模通常怎么做?……如果只用行为数据够吗?……那内容特征和社交关系怎么融入?……再进一步,模型怎么跟上用户兴趣的实时变化?

  3. 问法 3 · 直球架构

    请你设计一个用户兴趣话题偏好建模系统,包括数据收集与处理、特征工程、推荐算法选型和模型更新策略。每个环节的关键技术和选型理由是什么?

同模块相关题目