订阅更新

用户标签体系怎么设计?不是拍脑袋想标签,是有方法论的

用户画像手册 第 2 题 约 7 分钟读完 1 次阅读

本文目录
  1. 先说结论
  2. 标签体系的三层架构
  3. 从业务需求反推标签——以出海业务为例
  4. 标签元数据管理——四要素缺一不可
  5. 面试高频追问
  6. 实战踩坑
  7. 总结

先说结论

标签体系设计的核心是「业务驱动」,不是「数据驱动」。先明确业务要用标签做什么,再反推需要什么标签,最后看数据能不能支撑。很多人反过来了——先看有什么数据,然后拍脑袋造标签——结果做了一堆没人用的标签。

标签分三层:基础属性层、行为统计层、模型预测层。从简单到复杂,从确定性高到确定性低。

每个标签必须有四要素:标签名、口径定义、更新频率、数据来源。缺一个都不算合格的标签。

先把这段讲顺;面试官追问时,再展开下面的原理和细节。

详细讲解

面试官问「你们的标签体系怎么设计的」,很多人的回答是「我们有年龄、性别、活跃度这些标签」——这只是在列举标签,不是在讲设计。标签体系设计是用户画像项目的核心,讲清楚方法论,面试官会觉得你是真正做过的,不是背的。

标签体系的三层架构

我在做标签体系设计时,用的是业界比较通用的三层架构:

层级类型示例特点更新频率
第一层基础属性标签性别、年龄、注册时间、国家确定性高,直接从注册信息获取注册时写入/低频更新
第二层行为统计标签近7天登录次数、累计消费金额基于行为数据聚合计算T+1每日更新
第三层模型预测标签流失概率、付费倾向、兴趣偏好通过模型或规则推断按需更新/周级别

三层从下到上,确定性递减、业务价值递增。第一层最简单但必不可少,第三层最有价值但也最难做准。

从业务需求反推标签——以出海业务为例

我在某出海硬件品牌做画像时,不是先想「要做什么标签」,而是先去问业务方三个问题:

Q1:你用这个数据做什么决策?运营说:我要找到高价值用户做复购推送。那就需要「消费金额」「购买频次」「最近购买时间」这些标签,本质就是RFM。

Q2:你怎么定义高价值?这个问题很关键,因为不同团队对高价值的定义不一样。运营说累计消费>$200就是高价值,产品说月活>20天就是高价值。这时候需要对齐口径,或者分成两个标签。

Q3:你需要多及时的数据?如果是做月度复购营销,T+1够了;如果是做实时推送(比如用户刚浏览了某个商品),就需要实时标签。

-- 从业务需求反推标签设计的SQL示例
-- 需求:运营要找高价值复购用户做定向推送
 
-- 标签1:用户价值等级(基于RFM)
SELECT user_id,
  DATEDIFF(CURRENT_DATE, MAX(order_date)) AS recency_days,    -- R: 最近购买距今天数
  COUNT(DISTINCT order_id) AS frequency,                       -- F: 购买次数
  SUM(amount_usd) AS monetary,                                 -- M: 累计消费金额
  CASE
    WHEN SUM(amount_usd) >= 200 AND COUNT(DISTINCT order_id) >= 3
      THEN 'high'                                              -- 业务方定义的高价值
    WHEN SUM(amount_usd) >= 50
      THEN 'medium'
    ELSE 'low'
  END AS value_level                                           -- 这就是一个标签
FROM dwd_order_detail
WHERE order_date >= DATE_SUB(CURRENT_DATE, 365)                -- 看近一年
GROUP BY user_id;

标签元数据管理——四要素缺一不可

标签不是建完就完事了。我在出海硬件公司吃过亏:上线了120个标签,3个月后发现有30多个标签的口径定义不清楚,不同的人对同一个标签理解不一样。后来我们引入了标签元数据管理,每个标签必须注册以下信息:

字段说明示例
tag_name标签英文名user_value_level
tag_cn_name标签中文名用户价值等级
definition口径定义(最重要!)近365天消费>=200且购买>=3次为高价值
data_source数据来源dwd_order_detail
update_freq更新频率每日T+1
owner标签负责人Wood
create_time创建时间2022-03-15
status状态(有效/废弃)有效
-- 标签元数据表设计
CREATE TABLE dim_tag_metadata (
  tag_id          STRING COMMENT '标签唯一ID',
  tag_name        STRING COMMENT '标签英文名',
  tag_cn_name     STRING COMMENT '标签中文名',
  tag_category    STRING COMMENT '所属分类:基础/行为/模型',
  definition      STRING COMMENT '口径定义,必须精确到SQL级别',
  data_source     STRING COMMENT '来源表',
  update_freq     STRING COMMENT '更新频率:daily/weekly/realtime',
  owner           STRING COMMENT '负责人',
  status          STRING COMMENT '有效/废弃/测试中',
  create_time     TIMESTAMP,
  update_time     TIMESTAMP
) COMMENT '标签元数据注册表';

面试高频追问

追问一:标签太多了怎么管理?上线容易下线难怎么解决?

这个是真实痛点。我们后来的做法是给每个标签加生命周期管理:上线时必须注册元数据、定义Owner;每个季度做一次标签审计,超过90天无查询的标签标记为「待废弃」,通知Owner确认后下线。还引入了标签分级——P0核心标签(如用户价值等级)永不下线,P2实验标签(如某次A/B测试用的)3个月后自动下线。

追问二:标签口径冲突怎么办?同一个指标运营和产品定义不一样

这在我们团队经常发生。我的做法是:首先承认「允许同一维度有多个标签」,比如运营的「高价值用户」和产品的「高活跃用户」是两个不同标签,不用强行合并。但命名必须区分清楚:user_value_level_ops(运营口径)和user_active_level_pm(产品口径)。元数据里必须写清楚谁定义的、用在哪个场景。其次,如果是同一个业务含义但口径不一致,必须拉齐——这需要推动业务方达成共识,不能让数据组自己决定。

追问三:你设计的标签体系能支持多大的用户量?

我在出海硬件品牌时用户量在千万级别,120+标签,Hive宽表+Redis热标签的方案跑得很稳。如果用户量到亿级别,宽表方案会有性能问题,需要考虑分桶、列式存储优化、标签表(key-value模式)替代宽表。具体选型要看查询模式——如果主要是根据user_id查所有标签,宽表更合适;如果主要是根据标签圈选用户,标签表+倒排索引更合适。

实战踩坑

我在某出海硬件品牌做标签体系时犯过一个错误:一开始我按技术视角设计标签——根据有什么数据就做什么标签。比如有设备日志就做了「日均使用时长」「功能使用频次」等一堆标签。结果上线后运营说「这些标签我不知道怎么用」。

后来我调整了方法:先和运营开会,列出他们所有的业务场景(复购营销、流失预警、新品推荐),再反推每个场景需要什么标签。这样做出来的标签使用率从30%提升到了85%。

教训:标签设计必须业务驱动。不是「我能做什么」,而是「业务需要什么」。技术人最容易犯的错就是从数据出发,而不是从业务出发。

总结

标签体系设计记住三层架构(基础属性→行为统计→模型预测)、四要素注册(标签名、口径定义、更新频率、数据来源)、业务驱动(先问需求再反推标签)。面试时不要只列举标签名,要讲你的设计方法论和踩坑经验,面试官才会觉得你是真正做过的。

标签设计好了,下一个问题就是标签存在哪?Hive、Redis还是ES——不同存储选型有什么讲究?

你们的标签体系有多少个标签?用的什么管理方式?评论区聊聊~

关注「Wood聊大数据」| 9年大数据老兵,聊技术、聊职场、聊成长

刷题进度保存在当前浏览器